不增加校验字,分别用两个字节表示0和1,用哪两个数字最好?

2020-01-12 17:13发布

本帖最后由 wochai 于 2019-12-14 08:09 编辑

如题.
串口通讯中,我想用两个字符表示0和1,用哪两个最不容易受到干扰出错。
比如:A对应1,B对应2
传输给对方后,可以由于干扰变成C,但是不要出现A和B交换的情况。

编辑原因:“用两个字节表示0和1”  改为 “用两个字符表示0和1”
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
lyer
1楼-- · 2020-01-14 02:12
wochai 发表于 2019-12-13 13:41
0101 0101
1010 1010
这个通讯时错了一位,不就恰好交换了?!

但是还有一位停止位
xyz543
2楼-- · 2020-01-14 06:38
wochai 发表于 2019-12-13 13:38
0000 0000
1111 1111
这种全满全空的数值,在波特率错误的时候特别容易出现,好像不太合适。 ...

楼主的这个问题,我在 1995 年时也遇到了,但不是 0 与 1 状态的传递,而是使用了 RS-485 且传递了几个 Byte 后,在工业应用上要能对抗致命的极严重干扰!大致上是变成了 C 后还可完整的还原其原来的那几个 Byte 资料不出错,
但最终完成了这个任务,它不是 CRC!而其中所的方式谅我在此不便公布,因我这两年内在退休前已较有空要来将当年的这方法给申请专利给我所在的公私单位,因为这是于敲码时所构想的,所以使用的权力是在公司而不是我自己。
言归正传,个人感觉就二楼的方法是较靠普的,或是说也可以用 0x0F & 0xF0 的类似连续的 0 或是 1。我以我个人的浅见来说说为何是要选这个方式,因为 Baudrate 不变的状况下,要干扰一个 Bit 的资料由 0 变 1 或是将 0 变 1 是很容易的。
这又要来说到这干扰突波的发生与特性,刚说到同 Baudrate 在不变的状况下,外界要产生改变一个 Bit 所需的突波能量会较小就易达成,但是要能干扰到连续的一组 Bit 那得要多大的能量啊?!这点请楼主评估看看,或其他坛友来补述也行。
最后再来说到若是...这帖内所有坛友给出的建议都无法达成的话,那表示这些资料的组合或是这 UART 串口硬件层是根本无法可靠的来传递资料了,也建议楼主考虑其他的如 RS-485 实体层或是如 USB 内的 NRZI 编码等啥的再试一试吧!
canspider
3楼-- · 2020-01-14 12:02
本帖最后由 canspider 于 2019-12-14 10:21 编辑

核心思路就是过采样,用更多的信息来表达一位数据
再往深了研究就是深空通讯技术了
fct8591
4楼-- · 2020-01-14 13:47
参考纠错码原理和方法,数据量大时还可以少了太浪费资源了不如CRC不对就扔了。
wochai
5楼-- · 2020-01-14 16:50
 精彩回答 2  元偷偷看……
XA144F
6楼-- · 2020-01-14 18:39
说白了这就是扩频技术,无线传输里的干扰比这多的多。

一周热门 更多>