我正在使用 Python 2.7.4 和 pyserial 与设备(基本上是 Arduino)进行通信。由于某种原因,每当我尝试使用以下代码从设备和控制台循环读取数据时,我的程序就会挂起:
xbm = serial.Serial(port=PORT, baudrate=BAUD)
for i in range(20):
alldata = ''
s = raw_input('vin {}: '.format(i))
vin_y.append(float(s))
xbm.flushInput()
bytes_read = 0
while bytes_read < (packet_size*(avg_samples+1)):
if xbm.inWaiting() > 0:
read_size = xbm.inWaiting() # stop bit
data = xbm.read(read_size)
bytes_read += read_size
当我尝试以这种方式获取数据时,我正确地从 raw_input 获取数据,但随后我的程序挂起。如果我注释掉
s = raw_input('vin {}: '.format(i))
vin_y.append(float(s))
我从我的设备中得到了所有想要的东西,但显然我没有得到我想要的用户输入。此外,如果我在打开串行端口之前将这些行移到,我仍然可以正确读取它。基于此,我猜测输入缓冲区上的某些东西弄乱了我从串行端口读取的方式。我尝试清除输入缓冲区以消除输入数据中的任何换行符,但这并没有奏效(或者我只是做错了)。我知道我想做的事情是可能的;希望我只是缺少一些小东西。