讲述一个奇葩的技术故事
有一家公司,做了一个古老的设备,通过串行通讯发送数据,还特意设置了校验位,奇葩的是这个校验位在通讯过程中会改变设置,有时是常0,有时是常1。这样做的真正目的是什么?技术人员都懂,实在不好意思说。
下面说点真格的技术经验,这个问题是第二次遇到了,上一次还是十年前。当时在linux下,操作系统直接丢弃了校验出错的数据,导致后面的应用无法接收完整的数据,这也是当初这样设计的目的,最后需要修改操作系统的默认设置,才能解决问题。
而在windows操作系统下,出错处理就不是那么武断了,系统的驱动程序会报校验错误,但是数据接收正常,如何处理由程序员自己决定,是不管不顾,还是出错重发,又或是弃之如履,总之,在目前的技术条件下,串行通讯变得非常高速可靠,和那个使用调制解调器的年代截然不同了,那才真是一场噩梦般的通讯,好在一去不复返了,所以再说就是罗嗦了。
如今,人工智能突飞猛进,看看AI是如何回答这个问题的:
当串口设置了校验位,并在通讯过程中检测到校验出错时,通常会有以下几种可能的反应:
数据重传:许多串口通讯协议(如RS-232)支持检测到错误后的数据重传。这意味着,当接收设备检测到校验错误时,它可能会请求发送设备重新发送数据。
丢弃错误数据:对于某些应用,接收设备可能选择简单地丢弃错误的数据包,并继续等待下一个数据包。这通常发生在实时性要求较高或者错误数据包被视为无效或损坏的情况下。
报警或日志记录:在某些系统或应用中,当检测到校验错误时,系统可能会触发一个报警或者在日志中记录错误信息。这对于故障排除和系统监控非常有用。
数据完整性检查:有些协议或应用可能不仅仅依赖于校验位来验证数据的完整性。它们可能会使用更复杂的算法(如CRC)来检查数据的完整性,并在检测到错误时采取相应的行动。
停止通讯:在某些极端情况下,如果错误无法恢复或重试,接收设备可能会选择停止通讯,等待进一步的指令或处理。
总的来说,当串口设置了校验位并在通讯中检测到错误时,如何响应取决于具体的协议、应用需求和系统设计。
讲述一个奇葩的技术故事
最新推荐文章于 2024-07-08 16:27:32 发布
