关于串口通信问题。

  • 大核桃
  • LV2工程师
  • |      2016-04-08 08:37:47
  • 浏览量 865
  • 回复:7
刚刚进入传感器生产企业,对51单片机的认识只限于天祥老师的10天学会单片机水平,关于串口通信问题有一些疑惑,希望传感器行业的朋友能够帮忙解答,如果有问的不明白的地方,希望各位朋友指出。非常感谢。
1,请问在串口通信中,数据包的帧头和帧尾(比如0x55,0xaa)是怎样加入到数据包的?是不是定义一个数组,将帧头和帧尾设置成0x55,0xaa,再将整个数组发送?在发送包含帧头帧尾的数据包时,是否需要在发送端发送时,即校验帧头帧尾?还是只需要在接收端校验帧头帧尾即可?
2,请问在串口通信中,如果需要发送如3.13这样的非整形数据,该如何实现?是由发送端进行处理,还是由接收端接收数据后再进行处理?
3,如果发送端发送3.13这种非整形数据包,如何处理数据包的校验和?
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:6
大核桃 2016-04-08
感谢!我对于校验不是太熟悉,之前了解过奇偶校验,但是我串口使用的是方式1传输,请问 “帧头,命令 功能码 数据位  校验码 帧尾” 中的 “校验码” 是否可以采用发送方将各个数据求和后,将其值作为校验码的内容发送?这样在接收方接收时重新计算接收的数据和进行比较作为一种校验方法,串口仍然使用方式1传输,这种方法可行么?在实际应用中一般采用什么方法校验?
0   回复
举报
发布
小雨儿 2016-04-08

数据帧是建立一个数组,赋值后发送的,一个完整的通信协议,包括帧头,命令 功能码 数据位  校验码 帧尾数据组成,你把这些固定的0x55 0xAA填入固定的数组单元位置,然后发送数组就可以实现。

对于浮点数的处理,需要转换为整数存储,再接收端接收后,再转换为实数的。

0   回复
举报
发布
大核桃 2016-04-08
感谢!感谢!
0   回复
举报
发布
sagitattoo 2016-04-08
版主的资料说的很明白!
0   回复
举报
发布
Eagleson 2016-04-08

楼主关于数据帧帧头和帧尾的理解是正确的,校验接收方检测就可以了,关于浮点数据的传输,楼主可以参考下这篇文档

0   回复
举报
发布
汉云 2016-04-08
1、发送端只是加上帧头帧尾在接收端进行校验。
2、浮点数据在单片机中都是32位数据,且是浮点数的编码。这样要是发多的话会很长时间,一种是转换成整型,根据你要的浮点精度来处理,*10、*100,在接收端再转成小数。
如果直接发浮点数的编码,你在接收端还要进行解码。
浮点数存储格式:http://blog.chinaunix.net/uid-23204219-id-1761337.html

3、这一点与第二点是相关的,校验和看你用什么方法,是CRC还是奇偶等等,由于浮点数还是以32位整型进行存储的,所以校验和也是按整型进行计算的。
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子