RPi至Arduino至rs485未接收所有字符

2024-05-23 19:10:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我把这个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波特率。。。在


Tags: to代码nanoserialrpiarduinoconverterusb
1条回答
网友
1楼 · 发布于 2024-05-23 19:10:33

多亏了来自Arduino论坛的用户Riva我发现我有多蠢。。。 在Arduino代码中,我在发送数据和关闭RS485的传输管脚之间增加了10毫秒的延迟,在9600波特率(每秒1200字节)下,你只能发送12个字节。要使用完整的1200字节的数据传输,您需要增加1秒的延迟(这是显而易见的,当你考虑它,我似乎没有它)。。。在

关于Arduino论坛的完整主题可以在here找到。在

相关问题 更多 >