python pyserial不止一次写入串口

时间:2012-06-28 10:01:35

标签: 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 = 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来检查我的问题是否与这种情况有关。但似乎从同一个端口写入和读取没有任何问题。

2 个答案:

答案 0 :(得分:0)

问题可能是端口配置错误。你必须设置正确的值

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

答案 1 :(得分:0)

我没有看到换行符,所以你应该尝试使用rec.read(bytes)或用\ 0d \ 0a或其他东西完成行。

请参阅http://pyserial.sourceforge.net/shortintro.html#readline