【问题标题】:RPi to Arduino thru rs485 not receiving all characters通过 rs485 到 Arduino 的 RPi 未接收到所有字符
【发布时间】:2018-05-03 17:56:48
【问题描述】:

我将这个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 代码:

import serial
import time
import datetime

ts = time.time()
st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
print st + ": Session started!"
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=0)
while True:
    try:
        if(not(ser.isOpen())):
            ser.open()
        cmd = ser.readline()
        ts = time.time()
        st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
        print st + ": " + cmd
    except Exception as ex:
        error = "Exception is: " + ex.__str__()
        if(not(ser == None)):
            ser.close()
            ser = None
            ts = time.time()
            st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
            print st + ": " + error

所以我得到的是“cmd1,123456”,而不是“cmd1,12345678901”。

请记住,即使我使用相同的 RS485 转换器在我的 PC 上连接 Arduino Nano 并使用 Arduino IDE 的串行监视器,我也会得到相同的结果...如果我将波特率设置为 115200,我会收到 2更多字符“cmd1,12345678”,但由于我将使用 RS485 超过 50m 的距离,我可能需要使用最大 9600 波特率...

【问题讨论】:

    标签: python arduino raspberry-pi serial-port rs485


    【解决方案1】:

    感谢来自 Arduino 论坛的用户 Riva,我发现我是多么愚蠢...... 在 Arduino 代码中,我在发送数据和关闭 RS485 的传输引脚之间添加了 10 毫秒的延迟,在 9600 波特率(每秒 1200 字节)下,您只能发送 12 字节。要使用完整的 1200 字节数据传输,您需要添加 1 秒的延迟(这在您考虑时很明显,但我似乎没有)...

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-05
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-29
      相关资源
      最近更新 更多