串口通信,帧头帧尾校验和不懂,大神指导

2019-03-23 15:48发布

串口通信,
1.帧头帧尾校验和是自己定的么?这算是一个协议么?
2.我看到有的协议有帧头没有帧尾但是有校验和,帧尾是可以有可以没有么?
3.帧尾就是校验和么?帧尾和校验和有一个就可以吗?
4.帧头跟帧尾都必须有吗还是帧头必须有帧尾不必须有?
作为小白,网上查着查着就乱了,求大神解释上面问题                                                               
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
bobde163
1楼-- · 2019-03-24 13:29
shijizai 发表于 2018-7-2 11:01
串口通信,工程中实现功能时,主从设备间应该怎样互传,比如校验和什么的是否需要互传之类的,大神能简单 ...

两个设备间通信,就好比两个人之间在聊天对话,首先这两个人至少要说同一种语言吧,比如中文或者是英语之类,语言不同当然是听不懂了,串口通信中,大家使用的“语言文字”就是一个个字节,一共256个字节,就像是汉语中的一个个汉字一样,然后你要对话,那一般是一句一句话的说吧,才能更好的理解对方的意思,很少见到一个字一个字的说吧,相应的串口通信协议中,大多都是多个字节“组成一句话”,再发送出去。
帧头就好比说话前先打个招呼:“我要说话了,你听着”,然后说要说的话
帧尾就好比一句话说完了,也打个招呼:“我说完了”,然后对方就去处理你说的话的意思了。
校验和就好比一个暗号,事先双方定义好对暗号的规则,比如说所有字的笔画加起来一定要等于100画等这样的规则,这样对方在听到你说的话之后,会去计算这些笔画的总数对不对,不对的话那说明要么是对方说错话了,要么是我这一方听错了,不能处理。

所以以我们日常中的对方过程来作模型,可以看到帧头和帧尾还有校验和你都可以自己定义的取舍,比如你两个人挨着在说悄悄话时,就可以不需要这些东西了,但是如果在隔着桌子在问答时,那可能就需要帧头或者帧尾来表示要开始说话或者结束说话。

这样解释,不知道你能不能理解
shijizai
2楼-- · 2019-03-24 17:51
 精彩回答 2  元偷偷看……
shijizai
3楼-- · 2019-03-24 19:47
huo_hu 发表于 2018-7-2 11:22
1.帧头帧尾校验和是自己定的么?这算是一个协议么?
如何把串口的一个个字节分成一个个数据包是要有一个标 ...

再问一个另外的问题哈,你说如果我要一个单片机的USART2传到另一个单片机的USART2,这个时候程序应该怎么写呢?USART_SendData(USART2,'A');用这个么?但是怎么区分两个单片机的USART2呢?如果这么写会不会发送到原单片机的USART2上?我这时候发送应该怎么发送?
Li_Lei
4楼-- · 2019-03-25 01:37
bobde163 发表于 2018-7-2 15:14
两个设备间通信,就好比两个人之间在聊天对话,首先这两个人至少要说同一种语言吧,比如中文或者是英语之 ...

你说的这个更像是系统应用层程序,协议的复杂程度和硬件有关系.
比如数据包在网络传输就不能假设先发的数据先到,就必须加帧号或时间戳来区分,简单的串口是不会出现这种情况的.
搞得太复杂没必要,你到底要弄啥,摆出来看看
Li_Lei
5楼-- · 2019-03-25 01:54
 精彩回答 2  元偷偷看……
shijizai
6楼-- · 2019-03-25 05:46
bobde163 发表于 2018-7-2 15:14
两个设备间通信,就好比两个人之间在聊天对话,首先这两个人至少要说同一种语言吧,比如中文或者是英语之 ...

已经很通俗了,非常能理解,多谢大神

一周热门 更多>