我把这个USB to RS485 Converter插在RPi上,把这个TTL to RS485连接到Arduino Nano。我使用9600波特率。我需要在每个方向发送最多16个字符,但当我尝试发送时,在接收端我只接收前11个字符。。。如果我用usb电缆把Arduino Nano连接到RPi上,通讯就完美了。。。在
这是Arduino代码:
int rs485CtrlPin = 6;
void setup() {
pinMode(rs485CtrlPin, OUTPUT);
Serial.begin(9600);
while (!Serial);
}
void loop() {
digitalWrite(rs485CtrlPin, HIGH);
Serial.println("cmd1,12345678901");
delay(10);
digitalWrite(rs485CtrlPin, LOW);
delay(5000);
}
这是Python代码:
^{pr2}$所以我收到的不是“CMD112345678901”,而是“CMD1123456”。在
请记住,即使我使用相同的RS485转换器在我的PC上连接Arduino Nano,并使用Arduino IDE的串行监视器,我也会得到相同的结果。。。如果我将波特率设置为115200,我会收到两个字符“CMD112345678”,但由于我将使用RS485超过50米的距离,我可能需要使用最大9600波特率。。。在
多亏了来自Arduino论坛的用户Riva我发现我有多蠢。。。 在Arduino代码中,我在发送数据和关闭RS485的传输管脚之间增加了10毫秒的延迟,在9600波特率(每秒1200字节)下,你只能发送12个字节。要使用完整的1200字节的数据传输,您需要增加1秒的延迟(这是显而易见的,当你考虑它,我似乎没有它)。。。在
关于Arduino论坛的完整主题可以在here找到。在
相关问题 更多 >
编程相关推荐