我已将此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,12345678901"我得到" cmd1,123456"。
请记住,即使我使用相同的RS485转换器在我的PC上连接Arduino Nano并使用Arduino IDE的串行监视器,我也会得到相同的结果......如果我将波特率设置为115200,我会收到2更多角色" cmd1,12345678"但由于我将使用RS485超过50米的距离,我可能需要使用最大9600波特率......