怎么判断串口接收到一个字节还是两个字节。。。
要发送0 - 65535之间的数,怎么判断是一个字节的还是两个字节的。。。
串口接收和发送的最小单位是字节
题主描述不是太清晰,我只能猜测一下:
因为最小单位是字节,所以,当需要发送>255、且小于65536的数值时,必须要发两个字节。
细谈还分几种情况
通讯协议:通讯双方一开始就约定好,我所发送数据的格式。比如,约定不管数值多大,都发两个字节。先发高8位,再发低8位。小于256时,先发一个00再发低8位。
事实上,很多通讯协议是变长的。解决方案有两种:
一、通讯报文里指定位置说明了报文长度,我们等着收全就行了
二、字节间超时。一般串口发送多个字节时,相邻两个字节相隔时间极短。我们可以定义,持续一段时间,比如50mS没有接收到数据,就认为已经接收完毕了。
希望能帮助到题主
话说,串口初始化,8n1 参数,数据都是 8 位的,你要是 16 位的数据需要发送两次,发送两个 8 位数据。
为了保证 你的 8 位 和 16 位数据原子性,(8位是一个原始数据,还是 16 位是一个原始数据),要自己设计一个通信协议,原始数据放到通信报文中,接受完报完后解析报文,提取原始数据。也有很多串口通信协议,可以参考他们的协议