我正在写同一个串口读取。这是什么问题:
当我一个接一个地写入串口时,如下面的代码所示:
import serial
import array
rec = serial.Serial()
trans = serial.Serial()
rec.port = "/dev/ttyUSB0"
rec.baudrate = 9600
rec.timeout = 0.5
rec.open()
trans.port = "/dev/ttyUSB0"
trans.baudrate = 9600
trans.timeout = 0.5
trans.open()
if trans.isOpen():
trans.write("\xFE\x1D\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE2")
trans.write("\xFE\x1D\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE3")
while rec.isOpen():
response = rec.readline()
etc. etc. etc
只要while循环转动,我就会继续只读取第一个发送的字符串。我也尝试在while循环之后发送数据:(我没有删除if语句)
while rec.isOpen():
trans.write("\x00\x00")
response = rec.readline()
我从串口读取的内容仍然是:
“\ xFE如果\ X1D \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XE2"
我不能发送除第一个以外的任何其他数据。为什么会这样?我该怎么办?
注意:同样在while循环中我尝试阅读两次: response = rec.readline() response = rec.readline()
这一次,当我打印我读过的数组时,会打印[],这意味着我无法读取任何内容。 此致
编辑:现在我使用了两个不同的USB端口ttyUSB0和ttyUSB1来检查我的问题是否与这种情况有关。但似乎从同一个端口写入和读取没有任何问题。
答案 0 :(得分:0)
问题可能是端口配置错误。你必须设置正确的值
ser = serial.Serial(
port='/dev/ttyUSB0',
baudrate=9600,
parity=???,
stopbits=???,
bytesize=???)
答案 1 :(得分:0)
我没有看到换行符,所以你应该尝试使用rec.read(bytes)或用\ 0d \ 0a或其他东西完成行。