私は 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))
私は自分のデバイスから必要なものをすべて取得していますが、明らかに、必要なユーザー入力を取得していません。また、シリアル ポートを開く前にこれらの行を移動しても、正しく読み取ることができます。これに基づいて、入力バッファの何かがシリアルポートからの読み取り方法を台無しにしていると推測しています。入力バッファーをクリアして、データの入力から改行文字を削除しようとしましたが、うまくいきませんでした (または単に間違っています)。自分のやりたいことが可能であることはわかっています。うまくいけば、私は何か小さなものを逃しています。