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

51串口接收处理的思路?

天外飞信 2017-06-29 浏览量:951

读10串数据,只能处理到4串。思路是在接收中断建立缓存数组。然后读完一串置标志。在主程序20MS轮询标志并做处理,判断帧头和校验码。


但是还是会丢失,感觉处理不过来。是不是我没关中断引起的?


串口需要注意哪些?有没有好的关于串口接收处理的思路
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 10串数据的命令间隔时间 处理一串命令的时间 大致要估算一下,看看时间够不够,在考虑是不是开关中断的问题
    • 发布于 2017-06-29
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:7
  • 20ms的时间应该是够的,只是在这20ms的时间内可能有别的事件打断了串口的处理,你把程序贴上来看看吧
    • 发布于2017-06-29
    • 举报
    • 评论 0
    • 0
    • 0


  • 跟关不关中断关系不大
    串口接收完成处理数据的时间不要超过接收两个字节之间的时间
    或者主程序轮询的时间间隔不要超过接收一帧数据的时间


    还一种方法是:你要把缓存数组搞成环形队列!你计算一下处理一串的时间,然后这个时间内会收到多少串,缓冲区设成比这个值大点就行了
    • 发布于2017-06-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 串口连续传输字节时,下位机的RXBUF只能存一个字节,你必须在两个传输位(停止位、起始位)的时间内把数据取走,不然下一个字节的数据就来了​
    • 发布于2017-06-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 我也在学这个,路过看看。问题解决了,请帮忙告诉方法,谢谢!
    • 发布于2017-06-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 不可能的,我以前就做过串口中断接收不定长数据,没有这个问题。首先RI标志位每接收一个字符都要复位一次,这个不用说的了,而且单片机一般不会跟不上20MS/一个字符的速度,不然就考虑一下提高主频(换用高频晶振),一般12M晶振是可以满足要求的。另外一般串口接收出现问题,八成都是上位机的原因,楼主静下心来监测一下上位机有没有问题吧!

    • 发布于2017-06-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 建议采用一个缓存区来做,还有就是反应时间20-30ms左右,如果超过了30ms,就强制接收完成,等待下一次接收,这种处理机制楼主可以学习学习。
    • 发布于2017-06-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 对于可靠数据传输,一般要有应答机制,发送端不能一直不停的发送数据,可以参考modbus协议的做法
    • 发布于2017-10-30
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :https://atta.szlcsc.com/upload/public/pdf/source/20190620/C399511_539387F5E9D2FD83209AB1CE0CB254B2.pdf 回复

相关问题

问题达人换一批

51串口接收处理的思路?