RPi 到 Arduino 通过 rs485 没有收到所有字符
RPi to Arduino thru rs485 not receiving all characters
我已将此 USB to RS485 Converter plugged on the RPi and have this 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,12345678901" 而不是收到 "cmd1,123456"。
请记住,即使我使用相同的 RS485 转换器将 Arduino Nano 连接到我的 PC 上并使用 Arduino 的串行监视器 IDE,我也会得到相同的结果...如果我设置波特率速率到 115200 我又收到 2 个字符 "cmd1,12345678" 但由于我将使用 RS485 超过 50 米的距离,我可能需要使用最大 9600 波特率...
我已将此 USB to RS485 Converter plugged on the RPi and have this 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,12345678901" 而不是收到 "cmd1,123456"。
请记住,即使我使用相同的 RS485 转换器将 Arduino Nano 连接到我的 PC 上并使用 Arduino 的串行监视器 IDE,我也会得到相同的结果...如果我设置波特率速率到 115200 我又收到 2 个字符 "cmd1,12345678" 但由于我将使用 RS485 超过 50 米的距离,我可能需要使用最大 9600 波特率...