• 已解决 49851 个问题
  • 已帮助 5903 位优秀工程师

怎么验证串口传输的数据有误, 然后重发?

lichangle 2019-04-07 浏览量:1139
怎么验证串口传输的数据有误 然后重发?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 串口硬件上有每一帧都有奇偶检验位,也可以加CRC单独一个字节的检验;

    如果是自定义协议还可以加最值检测、列表等方式降低出错率

    • 发布于 2019-04-07
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:8
  • 一般来说,都是用效验来做的。

    你可以参考一下TCP,使用校验和和滑动窗口来传输,可确保快捷和可靠。

    校验和由发送端计算然后由接收端验证,验证不通过就丢弃。

    滑动窗口技术通过动态改变窗口大小来调节数据传输,以全双工数据传输为例,提供两个滑动窗口:一个用于接收数据,另一个用于发送数据。

    TCP使用肯定确认技术,其确认号指的是下一个所期待的字节。 假定发送方设备以每一次三个数据包的方式发送数据,也就是说,窗口大小为3。发送方发送序列号为1、2、3的三个数据包,接收方设备成功接收数据包,用序列号4确认。发送方设备收到确认,继续以窗口大小3发送数据,如果发现中间某个序号没有回应,则重传,例如,确认包中表示收到1、3,则接下来发送2、5、6。当接收方设备要求降低或者增大网络流量时,可以对窗口大小进行减小或者增加,比如降低窗口大小为2,每一次发送两个数据包;如果需要暂停的话,就发送一个窗口为0的请求。

    • 发布于2019-04-07
    • 举报
    • 评论 0
    • 1
    • 0

  • 用crc检验就可以了,如果crc错误就请求重发,或者直接使用485modbus协议也可以
    • 发布于2019-04-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 你需要自己定义相应的检测协议(在通信协议中),比如对端回传一个校验和,和本地校验和比较。

    不过这些都会减低传输效率的。

    • 发布于2019-04-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 这种重发机制一般会要求串口上面的通信协议有个应答标识,下位机收到上位机的命令后,使用这个应答标识回复上位机

    上位机在收到这个标识后,看下位机是否正确收到数据,如果没有则再次发送

    • 发布于2019-04-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 1、通过第3方的软件或是硬件进行检测,出错后再触发发送端重发。

    2、协议上的验证,比如CRC,校验失败后,让发送端重新发布数据。

    • 发布于2019-04-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 增加校验码,如果校验码不对就发送错误吗告诉发送方,发送方就重新发送
    • 发布于2019-04-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 大多是使用有校验的协议的啊,比如modbus中使用的CRC16,当CRC16的校验不对时,也就是数据不对,就会要求重发的。
    • 发布于2019-04-08
    • 举报
    • 评论 0
    • 0
    • 0

怎么验证串口传输的数据有误, 然后重发?