我正在尝试使用 Python 2.7 pySerial 包通过串行端口(使用 RS232、RS485 测试)发送 9 个字节。如果我将字节写到串口,一些字节会随机丢失(不会到达接收端)。如果我在每次写入单个字节之间使用 1 毫秒等待,则所有字节都会到达接收端。
我在同一操作系统上测试了 2 个串行终端之间的功能。
这是导致数据包(字节)丢失的代码片段:
import serial
import struct
ser = serial.Serial()
ser.baudrate = 9600
ser.parity = "N"
ser.rtscts = False
ser.xonxoff = False
ser.write(struct.pack('B', 0x61))
ser.write(struct.pack('B', 0x62))
ser.write(struct.pack('B', 0x63))
...
ser.close()
正在工作的片段:
import serial
import struct
from time import sleep
ser = serial.Serial()
ser.baudrate = 9600
ser.parity = "N"
ser.rtscts = False
ser.xonxoff = False
ser.write(struct.pack('B', 0x61))
sleep(0.001)
ser.write(struct.pack('B', 0x62))
sleep(0.001)
ser.write(struct.pack('B', 0x63))
sleep(0.001)
...
ser.close()
随机数据包丢失的根本原因是什么?
系统详情:
- OSX 10.9.4
- 蟒蛇 2.7
- Minicom 或 screen 用于终端仿真
测试环境:
- ATC USB/RS485 转换器
- ATC 串行/RS485 转换器,带 USB 串行适配器