実践Linux                 TOPへ  Cプログラミング目次へ

Glade2がないシステム用に、GTK+のみで書き直してみる  2016年9月

glade3からは、インターフェイスデザイナーに特化し、ソースを書き出す(ビルド)機能がなくなってしまいました。
これからは、GTK+プログラムをGladeに頼らず、自前で作成する以外ないようです。
しかし、ゼロから作成するのはどうも面倒です。
そこで、Glade2で書き出したプログラムを少し変更し、GTK+のみのプログラムに変更して、CentOS7などでも利用できるようにしてみました。


自動描画のテスト

ダウンロード

システムに合わせて、フォントを入れ替えてやる必要があります。
 伝統的なコアXフォントを利用しています。
 callbacks.cを編集して、フォントを設定しなおしてください(冒頭の#defineの部分)。

 xlsfontsコマンド等で表示されるフォントから、適切なフォントを選んで設定してください。
 フォントについては、こちらを参照。

 フォントを設定しなおしたら、makeを実行します。
 実行ファイルtestが更新されたら、これをダブルクリックして実行してみます。
 うまく表示されないときは、また別のフォントで試してみてください。


放物線運動

ダウンロード

pangoを使ったTrueType文字の表示、cairoを使った描画(TrueType文字を含む)なども試しています。

システムにあわせてフォントを入れ替える必要があります。
test
 伝統的なコアXフォントを利用しています。
 システムに合わせて、フォントを入れ替えてやる必要があります。
 callbacks.cを編集して、フォントを設定しなおしてください(冒頭の#defineの部分)。

 xlsfontsコマンド等で表示されるフォントから、適切なフォントを選んで設定してください。
 フォントについては、こちらを参照。

 フォントを設定しなおしたら、makeを実行します。
 実行ファイルtestが更新されたら、これをダブルクリックして実行してみます。
 うまく表示されないときは、また別のフォントで試してみてください。

test(pango), test(cairo)
 TrueTypeフォントを使います。
 fc-listコマンド等で表示されるフォントから、適切なフォントを選んで設定してください。
 フォントを設定しなおしたら、makeを実行します。



     空気抵抗なし ■空気抵抗を考慮した場合


簡易エディター

ダウンロード

gtkでは変数をグローバル化してデータをやりとりする代わりに、やりとりしたいデータをオブジェクトにカプセル化して受け渡しする機能があります。
g_object_set_data (G_OBJECT(textview), “entry”, (gpointer) entry1); //textviewオブジェクトにキー“entry”とentry1のデータをセット
entry = GTK_WIDGET (g_object_get_data(G_OBJECT (textview), “entry”)); //g_object_get_dataでデータを受け取る


秋月電子のデーターロガー(pico ADC-16)とUSB-シリアル変換器を使用した計測プログラム

ダウンロード

システムに合わせて、フォントを入れ替えてやる必要があります。
 伝統的なコアXフォントを利用しています。
 callbacks.cを編集して、フォントを設定しなおしてください(冒頭の#defineの部分)。

 xlsfontsコマンド等で表示されるフォントから、適切なフォントを選んで設定してください。
 フォントについては、こちらを参照。

 フォントを設定しなおしたら、makeを実行します。
 実行ファイルtestが更新されたら、これをダブルクリックして実行してみます。
 うまく表示されないときは、また別のフォントで試してみてください。



USB-シリアル変換ケーブル
秋月電子通商のUSB-シリアル変換モジュールK-01798を使用。
USB-RS232C変換チップはprolific社PL2303。
LinuxではたくさんのUSBシリアル変換ケーブルがサポートされているが、PL2303というチップを使ったものが一般的なようだ。

モジュールを接続すると、/dev/ttyUSB0が生成される。(システム→管理→ハードウェア(下方)→USB(下方)→PL2303 Serial Port→USB Vendor Specific Interface→PL2303 Serial Port→詳細 /dev/ttyUSB0)
このデバイスにはroot:uucpにrwの権限が与えられている。
# dmesg | grep tty  確認。
# stty -F /dev/ttyUSB0 -a でデバイスの設定がわかる。

# lsusb  USBデバイスの情報を確認する。
Bus 002 Device 002: ID 067b:2303 Prolific Technology. Inc. PL2303 Serial Port 等と表示される。
lsusbは/proc/bus/usb/devicesから情報を読み込んでいる。# cat /proc/bus/usb/devices
lsusb -vは、詳細表示。
lsusb -tは、USB階層をツリー形式で表示する。

pico ADC-16について
9600ボー、1ストップビット、パリティ無しの固定プロトコル。
入力範囲=±2500mvまで。

@スイッチを入れる
RTSを有効、DTRを無効にする。
立ち上がりまで1秒ぐらい待つ。

A計測要求
1バイトの制御データを送る。1チャンネル使用、分解能16ビットの場合、1Fを送る。
返信があるまで待ち時間を入れる=分解能16ビットの場合、0.7秒程度。

B返信
3バイトのデータが返される。1バイト=符号、2バイト=上位8ビット、3バイト=下位8ビット。

AとBを繰り返す。




計測結果はdataファイルに保存されます。

実際の使用例(様々なセンサーを取り付けてみる




TOPへ  Cプログラミング目次へ