2012-09-10 71 views
3

我试图使用Arduino的SoftwareSerial与RS-422设备进行通信。 我使用SN75179BP将422转换为TTL。Arduino SoftwareSerial库mod允许8-O-1 com

该器件是8位 - 奇校验 - 1个停止位。 我试着用mod修改softwareserial库: http://arduino.cc/forum/index.php/topic,108097.0.html

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

两个问题: 首先,如果我用确切的MOD由塔[4评论]在recv函数建议,同时要上传的素描时,我得到:

/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); 

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

的第二个问题,就是无论我做什么 - 我不能写功能的工作。 该设备不响应​​任何输入,除了在第二次尝试通过串行发送某个设备到该设备,我停止在我的接收通道上获得漂亮和干净的数据,而不是我变得杂乱无章...

[顺便说一句,在这种情况下 - 如果发送一些“新线” 0D,它带回正常的数据在收到信...]使用

* - 我的Arduino 1.0.1

编辑:我不知道它是否重要,但我正在使用inverse_logic来使receive函数正常工作。

任何想法都会受到欢迎!

+0

解决方案:http://arduino.cc/forum/index.php/topic,122281.0.html – user1661283

+1

这将是很好,如果你能回答你自己的问题。包括链接是好的,但由于链接腐烂,只有链接的答案是皱眉,一定要在答案本身添加一个简短的总结。 – dandan78

回答

0

你有没有试图改变写功能非反逻辑,并确保您所设置的奇偶校验和正确的停止位? :-)