【发布时间】:2012-02-06 13:43:09
【问题描述】:
我有一个奇怪的问题。我和我的一个朋友认为使用声音在计算机之间进行串行端口的通信会很有趣。基本上,计算机会发出一系列哔声以发送数据,并通过麦克风收听哔声以接收数据。总之,世界上最讨厌的串口。我已经解决了所有基础知识。我可以过滤掉只有一种频率的声音,并且我已经将数据从一台计算机发送到另一台计算机。虽然传输是相当无差错的,仅受非常响亮的噪音影响,但仍然存在一些问题。我的问题是,有什么好方法可以检查数据是否有错误,更重要的是,可以从这些错误中恢复。
一旦您了解了它使用声波的事实,我的串行通信就非常标准了。我在每一帧中使用一个起始位、8 个数据位和一个停止位。我已经考虑过循环冗余检查,并且我计划将其纳入我的错误检查中,但 CRC 并没有解决一些更隐蔽的问题。例如,考虑发送两个字节的数据。您发送第一个,它正确接收,但就在第一个字节的停止位和下一个字节的起始位之后,一本大书掉在地板上,接收器将其解释为起始位,现在真正的起始位作为数据的一部分被读取,并且接收器可能正在读取许多字节的垃圾数据。最终,数据暂停可以让事情重回正轨。
不过,这还不是最糟糕的。位也可以丢弃,我能想到的大多数错误检查方案都依赖于接收一定数量的字节。当接收者一直在等待可能不会到来的字节时会发生什么?
因此,您可以看到这个问题的复杂性。如果您可以指导我获取任何资源,或者只是给我一些提示,我将非常感谢您的帮助。
【问题讨论】:
标签: serial-port crc