Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python pyserial多次写入串行端口_Python_Serial Port_Pyserial - Fatal编程技术网

python pyserial多次写入串行端口

python pyserial多次写入串行端口,python,serial-port,pyserial,Python,Serial Port,Pyserial,我正在从同一个串行端口进行写入和读取。问题是: 当我一个接一个地写入串行端口时,如下面的代码所示: 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 = 960

我正在从同一个串行端口进行写入和读取。问题是:

当我一个接一个地写入串行端口时,如下面的代码所示:

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循环之后发送数据:(我没有删除if语句)

我从串口读到的仍然是:
“\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\xE2”

除了第一个数据外,我无法发送任何其他数据。为什么会这样?我该怎么办

注意:在while循环中,我尝试阅读了两次: 响应=记录读取行() 响应=记录读取行()

这次,当我打印我读取的数组时,它会打印[],这意味着我无法读取任何内容。 问候


编辑:现在我使用两个不同的usb端口ttyUSB0和ttyUSB1来检查我的问题是否与这种情况有关。但是从同一端口写入和读取似乎没有什么问题。

问题可能是端口配置错误。您必须设置适当的值

ser = serial.Serial(
    port='/dev/ttyUSB0',
    baudrate=9600,
    parity=???,
    stopbits=???,
    bytesize=???)

我没有看到换行符,因此您应该尝试使用rec.read(字节)或使用\0d\0a或其他方式完成换行


请看

hmm,我使用了read(字节),它没有解决我的问题,但没有尝试你的第二个建议。这可能是我解释的问题的解决方案,但对我来说,这不是一个持久的解决方案。因为当我的代码完成时,我将不会使用此代码向端口发送数据。我将有一个传感器,它将发送数据,我将读取它,它不会发送任何类型的下线数据。还有其他建议吗?我也忘了提一下,我的传感器数据的长度不会固定。
ser = serial.Serial(
    port='/dev/ttyUSB0',
    baudrate=9600,
    parity=???,
    stopbits=???,
    bytesize=???)