当前位置: 代码迷 >> WinCE >> wince串口通讯
  详细解决方案

wince串口通讯

热度:24   发布时间:2016-04-28 12:34:18.0
wince串口通信
这几天在做一个数据采集的程序,但是遇到一点小困难,在此,请教各位大侠们:
数据是以帧为单位的,有帧头和帧尾,但帧的长度不定,帧的发送间隔也不定,现在,我为串口接收开了一个线程,可以将这些数据一个字符一个字符存入缓冲区(循环队列),再为数据处理开了一个线程,完成数据的处理,但是,问题来了,因为数据接收和数据处理速度是不匹配的,肯定要用到线程的同步,有什么好的办法可以将这些帧提取出来,然后再以帧为单位去处理这些数据?

------解决方案--------------------
线程1:接收数据----->解析并放入数据列表(std::list或其他)
线程2:处理列表数据

对列表数据同步,可用Critical Section 
------解决方案--------------------
接收线程,接收数据,如果累计接收到完整的帧数据,就入队列,通知另外一个线程去处理帧数据。处理帧数据的线程在运作的时候,判断队列为非空则继续处理数据,如果为空就等待接收线程的通知再继续处理
------解决方案--------------------
信号同步吧。设置两个信号事件,通过帧头和帧尾来判别和提取一个完整的帧,接着激活一个处理事件,通知解析线程处理数据,数据处理完后激活读的事件来通知接收线程继续接收数据。
  相关解决方案