MFC用MSComm接收惯导数据,通信协议转化一直有问题,请大神帮忙看一下?

weixin_42836427 2019-03-17 11:27:22
这是控件响应的代码,但是最后输出结果全都是0,不知道哪里出现错误!
if (m_mscom.get_CommEvent() == 2)
{
CString str;
char chrBuffer[1024] ;
long k;
unsigned short usLength = 0, usCnt = 0;
VARIANT InputData = m_mscom.get_Input();
COleSafeArray fs;
fs = InputData;

for (k = 0; k < fs.GetOneDimSize(); k++)
{
fs.GetElement(&k, chrBuffer + k);
usLength = fs.GetOneDimSize();
memcpy(&chrBuffer, &fs, usLength);//可能是这里出错,但是找不到解决方法
switch (chrBuffer[1])
{
case 0x50:
memcpy(&stcTime, &chrBuffer[2], 8);
break;
case 0x51:
memcpy(&stcAcc, &chrBuffer[2], 8);
break;
}

}

CString str_T;
str_T.Format(_T("Time:20%d-%d-%d %d:%d:%.3f\r\n"), (short)stcTime.ucYear, (short)stcTime.ucMonth,
(short)stcTime.ucDay, (short)stcTime.ucHour, (short)stcTime.ucMinute, (float)stcTime.ucSecond + (float)stcTime.usMiliSecond / 1000);
CString str_A;
str_A.Format(_T("Acc:%.3f %.3f %.3f\r\n"), (float)stcAcc.a[0] / 32768 * 16, (float)stcAcc.a[1] / 32768 * 16, (float)stcAcc.a[2] / 32768 * 16);


m_EditRev += str_T;
m_EditRev += str_A;
UpdateData(false); //将数据在屏幕中对应控件中显示出来。
}

}
...全文
116 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
一条晚起的虫 2019-03-19
  • 打赏
  • 举报
回复
memcpy(&chrBuffer, &fs, usLength); // chrBuffer是个数组,去掉前面的& // fs是个结构体吧?取fs.data[]之类的

2,425

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 其他硬件开发
社区管理员
  • 其他硬件开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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