【PyFMI】最小構成のMBD事例 第2章 その116【リアルタイム描画⑩】

【PyFMI】最小構成のMBD事例 第2章 その116【リアルタイム描画⑩】 事例
【PyFMI】最小構成のMBD事例 第2章 その116【リアルタイム描画⑩】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/

はじめに

とりあえず、必要そうなウィジットは配置し終えた・・・が、
まだScaleが実際に配置されていたのは確認していない。

よって、Scaleの配置確認と挙動の確認を実施する必要がある。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

Scaleの配置確認

太郎くん
太郎くん

そういえば、Scaleがちゃんと配置されてるか確認していなかったな・・・。

フクさん
フクさん

さっと確認してしまおう。

tkinterにScale配置、Enable Cpu Load、pause、sin wave、Sawtooth wave、DC Motor Control、target[rad/s]、voltage[V]、speed[rad/s]、loadtorqueStep.tau[N m]、cyrrent[A]、cpu_load[ms]、Scale、target Speed
太郎くん
太郎くん

完成!!!!

フクさん
フクさん

してないよ!
中のロジック部分は一切手を入れてないし。

太郎くん
太郎くん

あ、そうか。
FMU関連の処理とか入ってないな・・・。

Scaleの挙動確認

フクさん
フクさん

あと、Scaleの挙動も確認しておこう。

太郎くん
太郎くん

挙動?
マウスでつまんで動かせばいいのでは?

フクさん
フクさん

一応、前回のコードを再度もってこよう。

def change(value):
    if scalbln.get():
        _ytmp = float(value)
        print(_ytmp)

scale = tkinter.Scale(
    root,
    label = "target Speed",
    orient=tkinter.VERTICAL,    #方向
    command=change,             #調整時に実行
    length = 300,
    from_ = 100,
    to = 0
    )
フクさん
フクさん

一応コールバック関数であるchangeが呼ばれたら、その時のScaleの値を標準出力するようにしてある。
これでScaleの値が取れてるか確認する。
って作業だ。

太郎くん
太郎くん

なるほど。
どっちにしてもScaleを動かせば良いってことね。

>>> root.mainloop()
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0
11.0
12.0
13.0
14.0
15.0
16.0
17.0
18.0
19.0
20.0
21.0
22.0
23.0
24.0
25.0
26.0
27.0
28.0
太郎くん
太郎くん

うん。
Scaleの値が取れてるっぽい。

フクさん
フクさん

これでGUI関連のみが完了した状態と言える。

太郎くん
太郎くん

GUI関連が終わったってことはtkinter周りの作業も終了ってことだね。

フクさん
フクさん

それがまだあるんだなー。

太郎くん
太郎くん

まじか。

フクさん
フクさん

tkinterでGUI処理をする際に
root.mainloop()
を呼び出すわけなのだけど、
この関数、メインウィンドウが閉じるまで帰ってこない

太郎くん
太郎くん

え?
そうなの?
となると、FMU関連の処理ってどこでやれば・・・。

フクさん
フクさん

あと描画関連もあるけどね。

フクさん
フクさん

一応タイマ処理ってのがあって、その中でやることになるかなー。

太郎くん
太郎くん

あー、タイマイベント的なやつか。
GUI関連でよく見る気がする。

フクさん
フクさん

というわけでタイマ処理関連をやっていく。

まとめ

フクさん
フクさん

まとめだよ。

  • Scaleの配置確認。
    • 問題無く配置されているのを確認。
  • Scaleの挙動確認。
    • 値をprintしているのでそれを確認。
      • Scaleの値が出力されているの挙動もOK。
  • tkinterはmainloopに入ると、戻ってこない。
    • よって、タイマ処理を使ってうFMU関連、描画関連をうまくハンドリングする必要あり。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました