网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
在串口通讯程序中处理数据包
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
尾*到达,这时*号后面的两个字符就是校验码,收到这两个校验字符,就可以与自己计算的校验值比较,若不正确,就报错,并继续处理下面的数据,若正确,则处理接收的字符,提取需要的数据。


2.3 程序
CString m_strReceived;
CString m_strChecksum;
int flag;
char ch为每次收到的字符


m_strReceived += (char)ch;
switch(ch)
{
case ''

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号
':
checksum=0; //开始计算CheckSum
flag=0;
break;
case ''*'':
flag=2;
c2=checksum & 0x0f; c1=((checksum >> 4) & 0x0f);
if (c1 < 10) c1+= ''0''; else c1 += ''A'' - 10;
if (c2 < 10) c2+= ''0''; else c2 += ''A'' - 10;
break;
case CR:
break;
case LF:
m_strReceived[port-1].Empty();
break;
default:
if(flag>0)
{
m_strChecksum += ch;
if(flag==1)
{
strCheck=strCheck+c1+c2;
if(strCheck!=m_strChecksum)
{
m_strReceived.Empty();
}
else
{
strInstruction=m_strReceived[port-1].Left(6);
if(strInstruction=="$QGOKU") //如果串头正确
{
char *temp=(char*)((LPCTSTR)m_strReceived);//转换

int speed=(atoi(temp+7));// 提取int 型数据
char splevel=*(temp+25); //提取 char 型数据

}

}
m_strChecksum.Empty();
}
flag--;
}
else
checksum=checksum^ch;
break;
}



3 网友的问题

另外,我回答了一位网友的问题,大家也可以探讨一下:
问题如下3:

我用你的串口程序收来的十六进制数据是这个样的:
00 10 10 C0 00 F0 F0 AB AC AD
我现在要将高四位取出来,也就是
011C0FFAAA(这点我不会,但我用Left实现了,可得到的是字符,不是我要的数值)
我只要011C0FF.
我要把011C0FF进行如下的处理
011转化成十进制
C不变
0FF也变成十进制
后显示,成 17 C 255

答:右移得到011C0FF后,可将其放在一个字符型变量CString m_strReceive中:
然后将其转换:
char *temp=(char*)((LPCTSTR)m_strReceive;

char tbuf; //temporary viable
tbuf[0]=temp; tbuf=temp; tbuf=temp; tbuf=0; //011 最后为0表示结束
int data1=atoi(tbuf);
char chdata2==temp; //C
tbuf[0]=temp; tbuf=temp; tbuf=temp; tbuf=0;
int data3=atoi(tbuf); //0FF

以上data1,chdata2,data3即为你要的数据

上一页12
点击进入论坛和大家一起交流设计,分享设计素材,结交设计朋友
  • 上一篇资讯: 对MFC封装Windows通讯API的研究
  • 下一篇资讯: 在VC++6.0中利用串行通信控件
  • 相关资讯

    网学推荐

    免费论文

    原创论文

    文章排行榜

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号