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