我正在使用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))
我从我的设备中获得所有需求,但显然我没有得到我想要的用户输入。此外,如果我在打开串口之前移动这些线路,我仍然可以正确读取它。基于此,我猜测输入缓冲区上的某些内容正在弄乱我从串口读取的方式。我已经尝试清除输入缓冲区以摆脱输入数据的任何换行符,但这没有用(或者我只是做错了)。我知道我想做的事情是可能的;希望我只是错过了一些小事。