C++ 利用软件提高红外串行可靠性

C++ 利用软件提高红外串行可靠性,c++,c,serial-port,serial-communication,infrared,C++,C,Serial Port,Serial Communication,Infrared,在谷歌上我能找到的最好的东西是里德·所罗门编码;但这似乎相当激烈 基本上,我是在与一个小型的、资源有限的设备进行通信,该设备有一个串行端口。通信是通过红外线进行的;串行端口直接连接到IR编码器/解码器硬件,然后再连接到IR收发器 通信是半双工的。这是一个硬件限制,因为IR部分用户会看到他们自己的传输。我与主机进行轮询,并在客户机上使用一个中断来知道何时发送回 我的问题是硬件对静电放电极为敏感。我已经采取了所有实际的硬件措施来减少这个问题,但这些措施还不够好;我现在正在研究软件问题 有人能提出错误

在谷歌上我能找到的最好的东西是里德·所罗门编码;但这似乎相当激烈

基本上,我是在与一个小型的、资源有限的设备进行通信,该设备有一个串行端口。通信是通过红外线进行的;串行端口直接连接到IR编码器/解码器硬件,然后再连接到IR收发器

通信是半双工的。这是一个硬件限制,因为IR部分用户会看到他们自己的传输。我与主机进行轮询,并在客户机上使用一个中断来知道何时发送回

我的问题是硬件对静电放电极为敏感。我已经采取了所有实际的硬件措施来减少这个问题,但这些措施还不够好;我现在正在研究软件问题

有人能提出错误恢复的实现方案吗?理想情况下,它不需要重新传输


越简单越好。如果有免费的图书馆,那就更好了

如果您不想使用Reed Solomon,那么编码如何?这是一个非常小的算法,并且这段代码在一个C文件中完全实现了它,并且在商业项目中使用它看起来很干净(尽管它不是标准的开源许可证之一)

您可能还可以找到其他实现。Golay码是低比特率数字无线电系统中用于错误恢复的几种机制之一


里德·所罗门(Reed Solomon)似乎是纠正错误的标准。我没有以下方面的经验,只是通过谷歌搜索找到的,所以可靠性检查将取决于您,但RS的图书馆就在那里: