通过软件提高红外串行可靠性
Improving IR serial reliability via software
我在Google上找到的最好的东西是Reed-Solomon编码;但这似乎相当激烈。
基本上,我正在与一个具有串行端口的小型资源受限设备进行通信。通信是通过红外线;串行端口直接连接到IR编码器/解码器硬件,然后连接到IR收发器。
通信为半双工。这是一个硬件限制,因为红外收发器将看到自己的传输,否则。我与主机进行轮询,并在客户端上使用中断来知道何时发送回。
我的问题是硬件对静电放电非常敏感。我已经采取了所有实用的硬件措施来减少这个问题,但它们还不够好;我现在在看软件问题。
谁能建议任何实现错误恢复,理想情况下,不需要重传?
越简单越好。如果有免费的图书馆,那就更好了!
如果您不想使用Reed-Solomon,那么如何使用Golay Encoding?这是一个非常小的算法,这个代码完全在一个C文件中实现,并且看起来可以在商业项目中使用(尽管它不是标准的开源许可证之一)。
您可能还可以找到其他实现。Golay码是在低比特率数字无线电系统中用于错误恢复的几种机制之一。
链接到源代码
相关文章:
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- C++高阶模板
- 获取 SFML 窗口的 HWND 和高可用性?
- Opencv 恢复到比我设置的更高的分辨率
- 输入较高值时的分段代码
- 高精度双精度的 Sprintf 格式化问题
- 在Windows(C++)中使用USB相机拍摄高分辨率照片
- 较高值 n 的分割错误(例如 n=999997)
- 在 C++11 及更高版本中,有没有办法初始化初始值设定项列表中的向量?
- 将更高的优先级设置为 boost::asio 线程处理进程
- 在C++上实现高斯赛德尔迭代方法
- 他们如何将红外锁定像素转换为镜头前方 1m 的正常平面上的位置
- 如何在C++中为高分辨率时钟声明变量?
- 在 Windows/C++ 上使用多进程应用程序的高精度定时操作
- 为什么 Perf 具有如此高的上下文切换?
- 如何获得CMake Tools以在Visual Studio Code中编译具有C++11(或更高版本)功能的程序?
- C++:矩阵高斯消除不起作用:使用单维数组来存储元素
- 用于运行高可靠性航天软件的特定 Linux 发行版
- 通过软件提高红外串行可靠性