我正在尝试使用 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 来接收功能。
任何想法都将受到欢迎!