欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

串口接收三种数据,并将其诀别送入对应线程或进程中使用

更新时间: 2014-01-05 03:14:26 责任编辑: Author_N1

 

串口接收三种数据,并将其分别送入对应线程或进程中使用
用开发板上的串口,随机不停地发送整形、char型、300个字节。利用串口接收这些数据,将其解析出来分别送入处理整形、char型、300个字节的线程或进程中处理。大体的怎么去实现。
怎样发送这三种数据类型?接收时怎么去解析?协议怎么定?用的S5PV210的开发板
--参考方法--
串口发送的数据都是按字节发送的,发送与接收需要定义如何区分整形、char型、300个字节.
比较简单的做法是设定超时时间,根据接收到连续字节的个数来区分.
--参考方法--
这个问题需要在数据链路层协议中解决。

例如,可以将要发送的数据打包,在包头相应的域中指明数据类型(格式)、长度等等。
--参考方法--
PC上位机接收注意 在线程用消息信号量,否则数量大CPU占用率太高,最简单下位机发送数据转换为字符型的明码(速度也很快),但占字节稍多些,
--参考方法--
引用:
Quote: 引用:

PC上位机接收注意 在线程用消息信号量,否则数量大CPU占用率太高,最简单下位机发送数据转换为字符型的明码(速度也很快),但占字节稍多些,



将串口接收到的数据转化成字符明码后直接和int、char、300字节比较大小。是这个意思么?那我数据之间怎么区分?难道用中断的发送方式,来一个转化一个比较一下,这样效率也不高了啊!!

要协议,你直接比较会出问题的
比如,每一帧都以0x12,0x34,0x56,0x78,4字节开头
然后+一个字节的数据类型或者该帧是给谁的,比如给线程1,就0x01,给0x02
然后+二个字节的数据长度,比如你是发300个字节则为0x01,0x2c
然后是数据,比如你那300个字节
最后是校验,把前面所有的用32位(4字节)或者16位(二字节)加起来不足的补零
如上面(按16位加)就是SUM=0x1234+0x5678+0x0101+0x2c..+....
所以最终就是
帧头4字节 0x12 0x34 0x56 0x78
帧所属进程1字节 0x03
帧内数据长度2字节 0x01 0x2c
帧数据....
校验

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:14:26
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/19943/
本文WWW.DOC100.NET DOC100.NET版权所有。