关于数据处理问题

kusheng176 2010-09-14 12:10:45
我现在在MFC上接收到单片机发送过来的数据,8个数据为一组。当发过来N组数据的时候,我首先要对每一组数据进行处理,就是将每一组的8个数据进行相加,看是否=0x00(0x00为等待信号;非0x00为所需数据)
若不等于,先暂时放在一边(这些数据是需要还原的,但是这个操作是最后进行的),再判断下一组数据。直到所有数据判断完以后,再进行还原。下面是我的程序(我用的是Scomm控件,RThreshold=1)

VARIANT variant_inp;
COleSafeArray safearray_inp ;
LONG len,k;
BYTE rxdata [2048] ; //设置BYTE 数组An 8bit integerthat is not signed.
CString buffer,buffifo ;
if (m_ctrlScom. GetCommEvent()==2)// 事件值为2 表示接收缓冲区内有字符
{ ///// 以下可以根据自己的通信协议加入处理代码
variant_inp = m_ctrlScom. GetInput () ; // 读缓冲区
safearray_inp = variant_inp ; // VARIANT型变量转换为ColeSafeArray 型变量
len = safearray_inp. GetOneDimSize () ; // 得到有效数据长度
for(k=0;k<len;k++)
safearray_inp. GetElement ( &k,rxdata+k) ; // 转换为BYTE 型数组
for (k=0;k<len;k++) // 将数组转换为CString 型变量
{
BYTE bt=*(char * ) (rxdata+k) ;
buffer.Format("%02x",bt); //将字符送入临时变量buffer存放
m_output+=buffer; //在编辑框中显示所有数据
m_edit123+=bt ; //加入接收编辑框对应字符串
m_zijie+=1; //总共数据数
pdateData(FALSE);
if (bt!=0x00)
{
huanyuan();
}
}
}


我现在的问题就是:数据(全部)进来后,我要如何只对每8个数据进行处理,而不是全部。

...全文
42 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kusheng176 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zgl7903 的回复:]
引用 2 楼 kusheng176 的回复:
引用 1 楼 zgl7903 的回复:
你的数据至少应该能区分出哪里是起始头才能做这样的处理吧


当有数据来了,就开始了。
然后连续的8个数据为一组。

如果还没开始接收 数据已经来了, 或中间有错误丢失的, 怎么恢复正常?
[/Quote]

我通过PC机发个信号,来开始进行数据的采集和接收。
zgl7903 2010-09-14
  • 打赏
  • 举报
回复
你的数据至少应该能区分出哪里是起始头才能做这样的处理吧
zgl7903 2010-09-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kusheng176 的回复:]
引用 1 楼 zgl7903 的回复:
你的数据至少应该能区分出哪里是起始头才能做这样的处理吧


当有数据来了,就开始了。
然后连续的8个数据为一组。
[/Quote]
如果还没开始接收 数据已经来了, 或中间有错误丢失的, 怎么恢复正常?
kusheng176 2010-09-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zgl7903 的回复:]
你的数据至少应该能区分出哪里是起始头才能做这样的处理吧
[/Quote]

当有数据来了,就开始了。
然后连续的8个数据为一组。

27,374

社区成员

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

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