【发布时间】:2015-01-07 05:37:25
【问题描述】:
我正在为使用 RS232 串行的旧电子设备编写接口。我遇到了一个我似乎无法解决的问题。这是原始代码
def readMyPort():
global readPort
while True: #always loop
if readPort: # only do something of the port is active
dataString = b''
while (mySerialPort.inWaiting()>0):
data = mySerialPort.read(1)
if (data == b'') or (data == b'\r') or (data == b'\n'):
if (dataString != b''):
myOutput.insert('1.0', (dataString + b'\n').decode())
dataString = b''
else:
dataString += data
我面临的问题是仪器响应命令发送一个12个字符的字符串,我似乎只捕捉到最后4个,不,没有'','\r'或'\ n' 在字符串中。为了排除故障,我添加了一个 print(),如下所示。神奇的是,我开始获取所有数据。
def readMyPort():
global readPort
while True: #always loop
if readPort: # only do something of the port is active
dataString = b''
while (mySerialPort.inWaiting()>0):
data = mySerialPort.read(1)
print(data) #<-------- the added line
if (data == b'') or (data == b'\r') or (data == b'\n'):
if (dataString != b''):
myOutput.insert('1.0', (dataString + b'\n').decode())
dataString = b''
else:
dataString += data
现在我不想让所有的打印都正常进行。我尝试只添加一个print('') 并且效果也很好,但我仍然有所有这些 \n 被打印出来。我试过print('', end = '\r'),但没用。有谁知道为什么?我不认为这是一个速度问题。我只运行 9600 波特。仅供参考:Win32 机器上的 python 3.2。该例程在它自己的线程中启动。
【问题讨论】:
标签: python serial-port pyserial