vc++串口通信数据处理问题

nlod123 2016-10-31 09:15:16
我用的serial port类做的串口通信,当接到数据后按协议解包,接收到得数是十六进制的,其中0xAA 0x22 是帧头0x12 0x22是数据包内容,.我现在要接收并解包,求大神指点。
LONG CTEST1Dlg::OnCommunication(WPARAM ch, LPARAM port)
//LONG CTEST1Dlg::OnComm(WPARAM ch, LPARAM port)
{

if(m_ctrlEditRXData.GetLineCount()>=15)
{
m_strEditRXData.Empty();
UpdateData(FALSE);
}
UpdateData(TRUE);
CString strtemp;
m_strPortRXData +=(char)ch;
DataProcessTemp(m_strPortRXData.Mid(0,2));
m_strEditRXData += ch;
UpdateData(FALSE);
return 0;
}


void CTEST1Dlg::DataProcessTemp(CString stRXData)
{
CString data1,data2;
BYTE db1,db2;
char *temp=(char*)((LPCTSTR)stRXData);

db1=Hex2ten(temp[0]);
db2=Hex2ten(temp[1]);
data1=dtob(db1);
data2=dtob(db2);
if(data1[3]=='1')
state(IDC_STATIC0,0x0000FF00);
else
state(IDC_STATIC0,0xAAAAAAAA);

if(data1[2]=='1')
state(IDC_STATIC1,0x0000FF00);
else
state(IDC_STATIC1,0xAAAAAAAA);

if(data1[1]=='1')
state(IDC_STATIC2,0x0000FF00);
else
state(IDC_STATIC2,0xAAAAAAAA);

if(data1[0]=='1')
state(IDC_STATIC3,0x0000FF00);
else
state(IDC_STATIC3,0xAAAAAAAA);
if(data2[3]=='1')
state(IDC_STATIC4,0x0000FF00);
else
state(IDC_STATIC4,0xAAAAAAAA);

if(data2[2]=='1')
state(IDC_STATIC5,0x0000FF00);
else
state(IDC_STATIC5,0xAAAAAAAA);

if(data2[1]=='1')
state(IDC_STATIC6,0x0000FF00);
else
state(IDC_STATIC6,0xAAAAAAAA);

if(data2[0]=='1')
state(IDC_STATIC7,0x0000FF00);
else
state(IDC_STATIC7,0xAAAAAAAA);

}
...全文
800 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37581572 2017-02-20
  • 打赏
  • 举报
回复
如何获得积分
笨笨仔 2016-11-02
  • 打赏
  • 举报
回复
由于使用串行通讯比较慢,为了提高效率会将数据一起放在缓冲区中发送或接收,为了从这个缓冲池中区分数据,通常的处理方法就是发送时为每段数据加上一个数据前缀和后缀,接收端从缓冲区中的数据中查找前缀,找到后再查找后缀,其中的内容为所需要的数据。不知楼主是否为了查找“前缀”?
雪狼__ 2016-11-01
  • 打赏
  • 举报
回复
收到就可以根据业务需求解析了啊,同问想问什么问题? 逐个字节判断,找到数据的主体部分实现相应的业务。
sevancheng 2016-11-01
  • 打赏
  • 举报
回复
逻辑性问题,怎么组装的就怎么拆
brk1985 2016-10-31
  • 打赏
  • 举报
回复
密密麻麻的看的眼花。你的问题是什么?

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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