3

我正在尝试使用 Arduino 的 SoftwareSerial 与 RS-422 设备进行通信。我使用SN75179BP将 422 转换为 TTL。

该设备是 8 位 - 奇校验 - 1 个停止位。我尝试使用以下方式修改软件序列库: http: //arduino.cc/forum/index.php/topic,108097.0.html

将写入函数中的奇偶校验位计算更改为奇数而不是偶数。

几个问题:首先,如果我在 recv 函数上使用 pylon [第 4 条评论] 建议的确切模式,同时尝试上传我得到的草图:

/var/folders/st/vmhkh5t57592ln_zhkyfq2q80000gn/T//cct5EjNP.s: Assembler messages:
/var/folders/st/vmhkh5t57592ln_zhkyfq2q80000gn/T//cct5EjNP.s:243: Error: register r24, r26, r28 or r30 required
/var/folders/st/vmhkh5t57592ln_zhkyfq2q80000gn/T//cct5EjNP.s:263: Error: register r24, r26, r28 or r30 required

不知道为什么。但如果我保持原样的功能,只改变这个:

  // skip the parity bit
    tunedDelay(_rx_delay_stopbit);
    DebugPulse(_DEBUG_PIN2, 1);

    // skip the stop bit
    tunedDelay(_rx_delay_stopbit);
    DebugPulse(_DEBUG_PIN2, 1);

   

对此:

 // skip the 2 stop bits
    tunedDelay(_rx_delay_stopbit*2);
    DebugPulse(_DEBUG_PIN2, 1);

我可以上传草图,甚至开始在我的序列号上接收真实和正确的数据。

第二个问题是,无论我做什么 - 我都无法让 write 函数工作。该设备不响应​​任何输入,除了在第二个我尝试通过串行向该设备发送一些东西时,我停止在我的接收通道上获得漂亮和干净的数据,而是变得混乱......

[顺便说一句,在那种情况下——如果发送一些“新行”0D,它会带回接收通道上的正常数据......]

*-我使用的是 Arduino 1.0.1

编辑:我不知道它是否重要,但我正在使用 inverse_logic 来接收功能。

任何想法都将受到欢迎!

4

1 回答 1

0

您是否尝试过将写入功能更改为非逆逻辑并确保您已正确设置奇偶校验和停止位?:-)

于 2012-10-24T22:41:28.220 回答