Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino AX.25协议干扰发送数据包_Arduino_Logic_Sequence_Termination - Fatal编程技术网

Arduino AX.25协议干扰发送数据包

Arduino AX.25协议干扰发送数据包,arduino,logic,sequence,termination,Arduino,Logic,Sequence,Termination,我很抱歉不能为这个问题提供代码,但这更符合逻辑。我对AX.25协议的终止顺序是111111,即6个1。因此,如果在我的数据包中发现这个1序列,它将表示包文件的结尾,并在不正确发送包的其余部分的情况下发送它。我会尽我所能解释我的结论和测试结果,以便你们能理解我的困境 ***在Arduino中编程****** 字节1包含8位。看下面并尝试在一个矩形框中描绘一个字节。紧挨着它的是字节2,它也包含8位。 情景1: ||_1_0_1_1_0_1_0||u 1_1_1_1_0|_|| 尝试的解决方案1:您可

我很抱歉不能为这个问题提供代码,但这更符合逻辑。我对AX.25协议的终止顺序是111111,即6个1。因此,如果在我的数据包中发现这个1序列,它将表示包文件的结尾,并在不正确发送包的其余部分的情况下发送它。我会尽我所能解释我的结论和测试结果,以便你们能理解我的困境

***在Arduino中编程******

字节1包含8位。看下面并尝试在一个矩形框中描绘一个字节。紧挨着它的是字节2,它也包含8位。 情景1:

||_1_0_1_1_0_1_0||u 1_1_1_1_0|_||

尝试的解决方案1:您可以简单地将1更改为0并跟踪它

情景2:

||_1_0_1_1_0_1_1_1_1_1_1_0_1_0_124;

尝试的解决方案2:尝试的解决方案1中断。我被困在这里

单独使用这些字节不会激活AX.25终止序列,但组合使用这些字节会导致问题

以下是可能的案例列表:

1六个1s=数据包结束时激活的终止序列

2数据包实际数据内6个1=提前终止

3如果将1更改为0,则在恢复更改时,六个0的顺序可能会出现问题

由于内存限制,4一次只能读取1个字节的EEPROM

5如果两个字节之间出现六个1,也会过早激活终止序列


提前感谢您提供的任何帮助。

ax.25协议要求的解决方案是位填充

从概念上讲,每当接收机看到五个连续的一位和一个零位时,它都假定发送方已经填充了零位以分解数据中的错误帧序列,并在发送接收到的数据之前将其移除。六个1位中唯一可以未填充发送的序列是帧序列;所有数据都已发送。接受者必须总是去塞满东西

填充或取消填充通常需要几个字节的工作ram或几个字节的寄存器,尽管可能有一些创造性的方法

引用官方TAPR协议标准:

为了确保上述标志位序列不会意外地出现在帧中的任何其他位置,发送站监控由五个或更多连续“1”位组成的组的位序列。每当发送五个连续的“1”位时,发送站在第五个“1”位之后插入一个“0”位。在帧接收期间,每当接收到五个连续的“1”位时,紧跟在五个“1”位之后的“0”位被丢弃

谷歌搜索AX.25位填料应该会返回您可能需要的详细信息