• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

怎么判断串口接受的字节个数。。

Gwvfbukn 2018-10-01 浏览量:2024

怎么判断串口接收到一个字节还是两个字节。。。


要发送0 - 65535之间的数,怎么判断是一个字节的还是两个字节的。。。



0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 串口接收和发送的最小单位是字节

    题主描述不是太清晰,我只能猜测一下:

    因为最小单位是字节,所以,当需要发送>255、且小于65536的数值时,必须要发两个字节。

    细谈还分几种情况

    通讯协议:通讯双方一开始就约定好,我所发送数据的格式。比如,约定不管数值多大,都发两个字节。先发高8位,再发低8位。小于256时,先发一个00再发低8位。

    事实上,很多通讯协议是变长的。解决方案有两种:

    一、通讯报文里指定位置说明了报文长度,我们等着收全就行了

    二、字节间超时。一般串口发送多个字节时,相邻两个字节相隔时间极短。我们可以定义,持续一段时间,比如50mS没有接收到数据,就认为已经接收完毕了。

    希望能帮助到题主

    • 发布于 2018-10-01
    • 举报
    • 评论 2
    • 1
    • 0
Gwvfbukn 回复了 Spirit:怎么判断字节间超时呢,不是很懂,怎么判断已经有50ms没有接受中断?在哪里判断,判断哪个标志呢。。。 回复
Spirit 回复了 Gwvfbukn:如果你使用的是STM32的话,百度下:DMA+空闲中断 会有解释。笨一点的办法:另开一个定时器,每个串口接收中断,都把定时器计数器重置。这样,一旦定时器产生中断,就表示出现字节间超时。 回复

其他答案 数量:11
  • 一般来说,串口是一帧一帧地传输,通常数据格式为一字节(8bit)。你要发两个字节只能发两包。
    • 发布于2018-10-01
    • 举报
    • 评论 0
    • 0
    • 0

  • 话说,串口初始化,8n1 参数,数据都是 8 位的,你要是 16 位的数据需要发送两次,发送两个 8 位数据。 

    为了保证 你的 8 位 和 16 位数据原子性,(8位是一个原始数据,还是 16 位是一个原始数据),要自己设计一个通信协议,原始数据放到通信报文中,接受完报完后解析报文,提取原始数据。也有很多串口通信协议,可以参考他们的协议

    • 发布于2018-10-02
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以通过超时判断,超过一定时间就停止接收
    • 发布于2018-10-02
    • 举报
    • 评论 1
    • 0
    • 0
Gwvfbukn 回复了 yhj416606438 :具体怎么实现呢,能给段代码参考吗。。。 回复

  • 这个需要收发双方自己规定好的,如果你发的数据全是8位就全当8位收就好了,如果是16位的你把连续收到的俩8位作为一个数据不就行了。因为你发送方发送的也是发了两次(俩8bit),不要说发个100是8位的,你可以把她当16位发,(高字节在前还是低字节在前自己定),双方规定好没有任何问题
    • 发布于2018-10-02
    • 举报
    • 评论 0
    • 0
    • 0

  • 串口上面通信一般是定长的,如果是不定长通信,那需要约定每次通信的包头和包尾,这样才能正确接收
    • 发布于2018-10-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 串口数据都是有包头和包尾的,这个包头和包尾会包含你的数据长度信息
    • 发布于2018-10-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 串口接收会用一个缓冲区缓存数据,直接读取你的缓冲区大小就可以知道
    • 发布于2018-10-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 串口数据的分割通常是采用固定长度,如果长度不固定,就需要采用超时机制,当串口连续等待一定时间比如10ms没有接收到数据,就表示数据接收完成。
    • 发布于2018-10-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 不定长的数据都是通过超时判断来处理的,比如modbus协议就是这种方式
    • 发布于2018-10-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 串口中断是一个中断一个字节触发,根据这个可以判断
    • 发布于2018-11-14
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

怎么判断串口接受的字节个数。。