调用raw_input后从串口读取Python程序时挂起

时间:2013-09-21 20:05:32

标签: python pyserial

我正在使用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))

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

0 个答案:

没有答案
相关问题