【发布时间】:2012-09-10 21:41:05
【问题描述】:
我正在尝试使用 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 来让接收函数工作。
欢迎提出任何想法!
【问题讨论】:
-
如果你能回答你自己的问题就好了。包含链接很好,但由于链接腐烂,仅链接的答案不受欢迎,请务必在答案本身中添加简短摘要。
标签: c++ serial-port arduino