【Raspberry Pi】Tcl/TkとC言語で距離センサーの値を表示するGUIをつくろう 第1回
北本です。今回もRaspberry Piの話題です。
前回、Raspberry Piでシャープ測距モジュール GP2Y0E03で測距値を読み取り、それをコンソール上に表示することに成功しました。しかし、コンソールだけで入出力を行うのは何かと不便でしょう。コンソール上にどんどん追記されていく値は読みづらいです。画面上にウィンドウを出して随時変化する値を表示したりでもできれば見やすくなるかもしれません。また、そのウィンドウ上に処理の開始や停止など何らかの操作を行うボタンを配置したりすることができれば便利でしょう。今回はそれを実現していきたいと思います。
ここで活躍するのがTcl/Tkです。Tclはスクリプト言語の一種で、TkはGUI扱うためのツールキットです。WindowsでGUIを作成するとなるとC#あたりが候補となってくるかもしれませんが、Raspberry Piを含めたLinux環境では使えません。しかし、Tcl/Tkなら、WindowsでもLinuxでもサクッとインストールして使うことができます。しかも、C言語との連携も比較的容易にできます。ですから、Linux環境の組み込み系プログラムのデバッグでは重宝するようです。
にもかかわらず、今日ではあまりメジャーでないのか情報が少なく、大きな本屋さんにいってもTcl/Tkを扱った書籍が全く置いていなかったりします。
かくいう私も入社するまでTcl/Tkのことは知らなかったです。実際に触ってみると、C言語、C++、C#、Java、JavaScriptといったC言語及びその流れを強く引き継いでいる言語に触れてきた私にとって、Tclの文法は癖のあるものでした。英語、フランス語、ドイツ語、イタリア語と習得してきたところに、アラビア語を学ぶような感じ……と言うと大袈裟過ぎるかもしれません。
例えば、次のようなウィンドウ。C言語で表示させようとすると、コードの行数は3桁以上に及んでしまうことでしょう。
しかし、Tcl/Tkならたった3行で済みます。
1 2 3 | label .label1 -text "abc" button .button1 -text "TEST" pack .label1 .button1 |
簡単に説明すると、”abc”という文字列を表示するlabel1という名前のラベルと、”TEST”という文字列が表示されたbutton1という名前のボタンを作成し、3行目のpackでそれらをウィンドウに表示させています。
今回は、Tcl/Tkの紹介で終わってしまいましたが、次回以降はC言語との連携について具体的に書いていきたいと思います。