ここでいくつかのハイレベルなアドバイスを求めています。私はPythonを使用して、シリアルを介して常に受信されるデータをプロットしています。同時に、ユーザーがプロンプト(Pythonシェルなど)を介してデータを入力できるようにする必要があります。次に、そのデータは同じシリアルポートを介して送信され、データを送信しているデバイスと通信します。
私の問題は、プロットapp.MainLoop() "Thread"がブロックされているように見え、ウィンドウが閉じられるまでraw_input部分が表示されないことです。また、これらの4行をwhileループ内に配置しようとしましたが、同じ問題が発生します。すべての情報を1回入力できますが、プロットを開始すると、グラフウィンドウを閉じるまで永久にブロックされます。
if __name__ == '__main__':
app = wx.App()
window = DataLoggerWindow()
window.Show()
app.MainLoop()
prompt_counter = "main"
while(1):
if prompt_counter == "main":
ans = raw_input("Press f for freq, press a for amplitude: \n")
if ans == "f":
prompt_counter = "freq"
elif ans == "a":
prompt_counter = "amp"
else:
prompt_counter = "main"
elif prompt_counter == "freq":
freq = raw_input("Enter the frequency you want to sample at in Hz: \n")
ser.write("f"+freq+"\n")
prompt_counter = "main"
elif prompt_counter == "amp":
amp = raw_input("Type in selection")
ser.write("a"+amp+"\n")
prompt_counter = "main"
プロット部分は、シリアルポートを読み取り、受信したデータを印刷するだけです。両方の部分は、バックエンドのデバイスで別々に機能します。ですから、これは私がPythonコードをどのように書いたかに問題があると確信していますが、理由はわかりません。