我正在寻找通过非常嘈杂的 uart 通信链路发送数据(BER 可以达到 1E-13)。我正在考虑发送 64 字节长的数据。但是,这些数据包的长度不同,应该可以使用带有 X FEC 字节的 reed solomon 进行自解码,这些字节是根据程序中的另一个函数设置的。
数据包应按照以下方案进行划分:
byte | 1 | 2..64 | 64..X |
meaning | Seq number | DATA | RS FEC bytes |
我现在正在考虑的是如何能够将数据包定界为接收方可识别的。我想过两个主要的选择:
- 玉米棒
- 使用 COBS 听起来是一个不错的选择,但是,由于它是一个嘈杂的通道,我担心影响定界字符的错误会破坏整个数据包。
- 添加标题
- 添加一个标头来告诉数据包有多大感觉有点糟糕,因为它只有一个字节长,没有使用 reed somon 纠错的选项,并且编写另一个纠错算法是矫枉过正的。
对于这个问题,我还有哪些其他选择?