3

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

我从我的设备中得到了所有想要的东西,但显然我没有得到我想要的用户输入。此外,如果我在打开串行端口之前将这些行移到,我仍然可以正确读取它。基于此,我猜测输入缓冲区上的某些东西弄乱了我从串行端口读取的方式。我尝试清除输入缓冲区以消除输入数据中的任何换行符,但这并没有奏效(或者我只是做错了)。我知道我想做的事情是可能的;希望我只是缺少一些小东西。

4

0 回答 0