シリアルデータをリアルタイム表示するプログラム(JupyterNotebookで)を作成しています。
なんとなく、以下のプログラムで動作するようになったのですが、
結果をポップアップしたいのですが、方法がわからず、いろいろチャレンジしましたが、クリアできず
にいます。
どなたか、アドバイスいただけますか?
以下、みよう見真似で作成したソースファイルです。
Task1で、定周期でデータを取得しています。
Task2で、取得したデータを定周期で表示しています。
#%matplotlib inline
#%matplotlib qt
#00 ライブラリをインポート
import schedule
from time import sleep
import numpy as np
import matplotlib.pyplot as plt
#%matplotlib qt
#import matplotlib.animation as animation
#Plot
from IPython.display import display, clear_output
from collections import deque
#01 定期実行する関数を準備
def task():
CapSerialData(ser, qsData1, qsData2, qsData3, qsData4, qmData1, qmData2)
def task2():
clear_output(wait = True)
ax1.cla()
ax1.scatter(range(0,N),qsData1,s=10,c='red');
ax1.scatter(range(0,N),qsData3,s=10,c='blue')
ax1.set_xlabel("time [x90 ms]")
ax1.set_ylabel("Dist. [m]")
ax1.set_xlim(0, N)
ax1.set_ylim(0, 10.0)
ax2.cla() ax2.scatter(range(0,N),qsData2,s=10,c='red'); ax2.scatter(range(0,N),qsData4,s=10,c='blue') ax2.set_xlabel("time [x90 ms]") ax2.set_ylabel("Power [dBm]") ax2.set_xlim(0, N) ax2.set_ylim(0, 65535) ax3.cla() ax3.scatter(range(0,N),qmData1,s=10,c='blue') ax3.set_xlabel("time [x90 ms]") ax3.set_ylabel("Dist. [m]") ax3.set_xlim(0, N) ax3.set_ylim(0, 10.0) ax4.cla() ax4.plot(range(0,N),qmData2, 'b-') ax4.set_xlabel("time [x90 ms]") ax4.set_ylabel("Power [dBm]") ax4.set_xlim(0, N) ax4.set_ylim(0, 5000) display(fig)
N = 1000
キューを作成
qsData1 = deque([0]*N)
qsData2 = deque([0]*N)
qsData3 = deque([0]*N)
qsData4 = deque([0]*N)
qmData1 = deque([0]*N)
qmData2 = deque([0]*N)
schedule.clear()
#02 スケジュール登録
ser = InitialSerial()
schedule.every(0.1).seconds.do(task)
schedule.every(0.1).seconds.do(task2)
plt.ion()
fig = plt.figure(figsize=(12, 8))
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 3)
ax3 = fig.add_subplot(2, 2, 2)
ax4 = fig.add_subplot(2, 2, 4)
#03 イベント実行
while True:
schedule.run_pending()
sleep(0.05)
あなたの回答
tips
プレビュー