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

串口接收如何判断一帧接收完成?

dwwzl 2017-12-25 浏览量:7121
说明:每一帧长短不一,没有统一的开始和结束字符,波特率115200bps
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 1.设定好通讯协议,如包头+长度+数据+校验+包尾,那么中断中每收到一个字节就判断,直到收到包尾为止。这是51时代用得比较多的状态机接收流程。
    但如果由于接收中断被嵌套,或干扰等原因导致一帧数据的后部分丢失,就是说接收不到包尾,那么这个状态机如何能自动复位以便接收下一帧?

    2.串口空闲中断也是用得比较多的一种方法,但是波特率较高的时候,空闲中断的触发时间相应变短,使得接收中断不被打断的要求变高,如果接收中断被耽误了,从而触发空闲中断,也是收不到完整数据。

    3.定时器中断代替串口空闲中断,这个可以避免串口空闲中断时间不够的问题,因为这个定时器中断可以自己设置。但是一个串口需要搭配一个定时器使用,不爽。

    4.串口接收只把数据放到缓存,此外不做任何事情。然后在另一个线程不断parse这个缓存,从头开始找其中有没有符合一帧的数据,如果有就是解析,同时将这一帧从缓存中删掉,如果没有就什么也不做。这样的程序就不用管一帧是否结束,可以较好的适应各种收不全、丢数据的问题。
    • 发布于 2017-12-26
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了 :这个应用条件超过原厂的规格,一定会有影响。只能在105±2 °C for96 hours. 。 回复

其他答案 数量:21
  • 发送方可以给一个特定的应答信号来作为判定  发送完了就有应答  接收方响应
    • 发布于2018-04-14
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

串口接收如何判断一帧接收完成?