请教数据类型的转换及存储问题。(100分)

viki_k 2002-03-16 09:08:17
我用的是MSCOMM控件,
1。想把从串口得到的数据(单片机的信号)放在数组里再进行校验,大概每35个字符判断一次,下面的str是CSTRING型,怎样转换成char或其它类型的数组(如:char temp〔35〕)?
2。判断temp〔〕中是否出现所需帧的帧头及帧尾后把需要的那部分再放在另一个数组(如buffer[])里该怎样做?
3。如果要对buffer[]里的数据进行逐位校验又该如何做呢?
我刚学,真的不知道该怎样,请大家多多帮忙,谢谢。
void CCommDlg::OnComm()
{
VARIANT m_input1;
COleSafeArray m_input2;
long length,i;
BYTE data[1024];
CString str;
if(m_Comm.GetCommEvent()==2)//接收缓冲区内有字符
{
m_input1=m_Comm.GetInput();//读取缓冲区内的数据
m_input2=m_input1;//将VARIANT型变量转换为ColeSafeArray型变量
length=m_input2.GetOneDimSize();//确定数据长度
for(i=0;i<length;i++)
m_input2.GetElement(&i,data+i);//将数据转换为BYTE型数组

for(i=0;i<length;i++)//将数组转换为Cstring型变量
{
BYTE a=* (char *)(data+i);
if(m_hex.GetCheck())
str.Format("%02X ",a);
else str.Format("%c",a);
/////////////////////////////////////////
m_ReceiveData+=str;
}
}
UpdateData(FALSE);//更新编辑框内容
}
...全文
95 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
viki_k 2002-03-16
  • 打赏
  • 举报
回复
能不能讲得详细一点?谢谢!
strip 2002-03-16
  • 打赏
  • 举报
回复
1。想把从串口得到的数据(单片机的信号)放在数组里再进行校验,大概每35个字符判断一次,下面的str是CSTRING型,怎样转换成char或其它类型的数组(如:char temp〔35〕)?

一开始就不要用CString, 为什么要用CString ? 应该直接用char*


2。判断temp〔〕中是否出现所需帧的帧头及帧尾后把需要的那部分再放在另一个数组(如buffer[])里该怎样做?

memcpy( temp+x, buffer, y ); // 从temp第x+1个字节开始,拷贝y个字节到buffer中去



3。如果要对buffer[]里的数据进行逐位校验又该如何做呢?

逐位校验, 用位操作,
aaa = 0x13;
bbb = aaa >> 4; // bbb = 0x1;
ccc = (aaa&0x20)>>5; // ccc等于aaa的5位的值
...

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧