我开始为一个设备编写代码,该设备将以全双工模式进行数据输入输出,所以我会在出现问题时使用硬件握手并设置中断条件。但是,当涉及到错误检测时,不太清楚最好的方法是什么。RS232:要校验还是不要校验?
RS232有内置的奇偶校验,我可以使用。据我了解,如果我使用8个数据位,一个奇偶校验位和一个停止位,那么线上的数据包将是10位。这意味着对于每发送1024个字节,我都会发送128字节的验证信息。由于奇偶校验对于每个字节是50/50的事情,因此持续少于一个字节的短暂突发噪声将导致仍然与奇偶校验位一致的损坏不是不太可能的。所以这似乎不是一个可靠的测试。
如果我在每个1024字节的末尾使用校验和,在115200波特仍然只有80ms,我的验证开销从12%下降到小于1%,即使我使用64位校验和。错过腐败很难。
仅仅是一种在sub 100波特连接的时代很有用的技术,它早已过时,我应该使用块校验和,或者我错过了什么?
还有一些值得考虑的事情:可能会出现在使用此环境的环境中的短暂爆发噪声?如果是这样,RS-232肯定是不适合的,它将被视为室内,办公环境总线。更好的选择是RS-485(代码兼容)或更好,CAN(不兼容)。 – Lundin
@Lundin [RS-485](http://en.wikipedia.org/wiki/Rs4850)将不满足OP需要的“全双工模式下的数据输入和输出”,它不是全双工通信协议。 [RS-422](http://en.wikipedia.org/wiki/Rs422)将提供更好的电噪声免疫力,但仍保留全双工能力。 – chux
@Lundin - *“RS-232 ...被认为是......巴士” - 不是“巴士”,而是通信链路。巴士意味着控制,寻址,甚至是电力以及数据。 – sawdust