【发布时间】: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