目次
前
次
ボタンメソッド設計
ボタンオブジェクトを定義したのでメソッドを
設計していきます。
ボタンオブジェクトに一覧は、以下。
- fload Load
- fsave Save
- fexec Exec
- fcancel Cancel
- clrParameters Clear
- exit exit
それぞれのメソッドを設計します。
fload
ボタンをクリックしたなら、テキストファイル
一覧を表示し、どれかのファイル名を選らべる
ようにします。
Tcl/Tkに組み込まれている「tk_getOpenFile」を
利用してGUIでの操作が可能になるようにします。
ファイル名をtFileNameという変数名で管理。
温度と時刻を、連想配列のxexe_temp、xexe_timeに
値を格納。
ファイルディスクリプタが必要なので、それを
fd_inとしておきます。
ファイルから全情報を取得するために、whileを利用。
fsave
ボタンをクリックしたなら、FileNameと書いた
ラベルの下に入力した、ファイル名を利用して
ファイルを新規に生成し、情報を保存。
情報は、P0からP5の右に入力した温度と時刻に
します。
項目、温度、時刻の順に格納し、1レコードの
中のフィールドは、スペースで区切ります。
次のようなテキストが格納されるようにします。
P0 20 0:00
P1 120 1:00
P2 120 3:30
P3 210 4:50
P4 210 6:00
P5 20 7:00
fexec
ボタンをクリックしたなら、温度、時刻の情報
から、1秒経過後の温度、時刻を計算して表示。
ボタンのクリックで、1秒ごとのタイマー割込みを
通知されるようにします。
タイマー割込みで、計算処理と表示をシーケンシャルに
実行します。シーケンシャルに実行するのか、割込みを
無視して、何もしないのかはフラグを参照して判断する
としておきます。
Tcl/Tkは、言語仕様にタイマー割込み処理を含んで
いません。組込み関数afterで、OSが扱うシステム
タイマーを参照し、所定の時間間隔を生成してます。
Tcl/Tkは、OSとしてはUnixを利用することが前提
ですから、システムタイマー値は、OSが扱っている
独自タイマーから生成しているはず。
精度は高くないですが、今回の用途では正確な時刻
を扱わないとして、システムタイマーを使うことに
しました。
fcancel
ボタンをクリックしたなら、1秒経過後の温度、時刻の
計算と表示を中断終了します。
Execボタンのメソッドの中で、フラグを利用して
計算と表示をするか否かを設定できるとしました。
フラグをenableからdisableにするだけで、動作を
中断させられます。中断後、表示をシーケンス処理
開始前の状態に初期化。
clrParameters
温度と時刻が、次の組合せになるようにします。
P0 20 0:00
P1 20 0:00
P2 20 0:00
P3 20 0:00
P4 20 0:00
P5 20 0:00
目次
前
次