カテゴリ
リンク

当サイトは、玄箱PRO (KURO-BOX/Pro)を中心とした組み込み、Linuxと電子工作を扱っています。
会社案内

情報セキュリティおよび個人情報の取り扱いについて


コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。コメントはそれぞれ投稿した人のものです。

■lcdproc クライアント
  LCDd にネットワークを通して接続することで、液晶に文字を表示することができます。表示する 側をクライアントと呼んでいます。クライアントを作れるようになると面白そうなので、作ってみる ことにします。




■ドキュメントについて
  開発ドキュメントは DOCBOOK 形式で書かれています。docs/lcdproc-dev/README.docbook にある ように docs/lcdproc-dev/ ディレクトリで、
xmlto xhtml-nochunks lcdproc-dev.docbook
を実行すると、lcdproc-dev.html が生成されます。xmlto がない場合はインストールしてください 。同じものが、
http://lcdproc.sourceforge.net/docs/current-dev.html
で公開されていますので参照してください。

■試してみる
  LCDd は TCP というプロトコルでネットワーク接続を待っているサーバです。サーバに接続するに は、ホスト名(またはIPアドレス)とポート番号です。ここでは玄箱PROの内部 (localhost) でデフ ォルトのポート番号(13666)を使っているものとします。  まず、LCDd に、手動でコマンドを送ってみます。telnet コマンドは、使います。telnet コマン ドは、ログインするだけでなく、指定したホスト・ポート番号に TCP で接続することができます。
telnet localhost 13666
を実行します。
kurobox@kurobox:~$ telnet localhost 13666 ←(画面1) 
Trying 127.0.0.1... 
Connected to localhost.localdomain. 
Escape character is '^]'.                        ←(画面2) 
hello                                           ←入力1 
connect LCDproc 0.5.2 protocol 0.3 lcd wid 20 hgt 4 cellwid 6 cellhgt 8 
client_set -name kurotest                       ←入力2 
success 
screen_add kurotest1                           ←入力3 
success                                        ←(画面3) 
listen kurotest1 
screen_set kurotest1 -priority foreground          ←入力4 
success 
widget_add kurotest1 line1 string                 ←入力5 
success 
widget_set kurotest1 line1 1 1 "This is test"         ←入力6 
success                                        ←(画面4) 
widget_add kurotest1 bar1 hbar                  ←入力7 
success 
widget_set kurotest1 bar1 4 4 50                 ←入力8 
success                                        ←(画面5) 
screen_set kurotest1 -priority info                 ←入力9 
success 
widget_set kurotest1 line1 1 1 "This is second test" ←入力10 
success                                          ←(画面6) 
^]                                                    ←コントロール+1 を入力(入力11) 
telnet> close                                  ←close を入力(入力12) 
Connection closed. 
kurobox@kurobox:~$
 接続前は、Clients: が0です。

lcdproc01.jpg

画面1
  接続すると、Clients: が1になります。


lcdproc02.jpg

画面2

 hello を入力(1)すると、LCDd がバージョンや液晶の表示領域の大きさなどの情報を返してきま す。入力2は、クライアントの名前を設定しています。メニュー表示などに使われるようです。入力3 でスクリーンを表示しています。listen kurotest1 というのが LCDd が送られています。これはス クリーン kurotest1 が表示されたということを意味します。ignore kurotest1 が送られると、ほか のスクリーンが表示されたいうことを意味します(ここの例では出てこない)。この時点では画面には ハート・ビート以外、表示されていません。

lcdproc03.jpg

画面3

 入力4で表示優先度を最優先 (foreground) にしています。success というのは、LCDd からの返事 でコマンドを受け付けたことを示しています。クライアントが一つのときで、サーバ・スクリーンを 表示しないように LCDd.conf で設定していれば、表示は変わりません。  入力5では、テキストを表示するためのウィジェット line1 を追加しています。ウィジェットとい うのはスクリーンを構成する要素のことです。以降は指定した名前 (line1) で呼び出します。入力6 で、ウィジェット line1 のプロパティ(属性)を設定しています。これで左上 (1,1) に"This is test"が表示されます。


lcdproc04.jpg

画面4

 入力7では、横バーを表示するためのウィジェット bar1 を追加しています。入力8で bar1 のプロ パティを設定し、位置(4,4)に 50 ドットの長さのバーを表示します。


lcdproc05.jpg

画面5

 入力9で表示の優先度を通常の info に変更しています。ここでは表示は変わりません。ほかのク ライアントがいれば、スクリーンが入れ替わっていくようになります。  入力10でウィジェット line1 のプロパティを再設定して表示を変えています。このように表示を 変える場合は、プロパティを再設定します。


lcdproc06.jpg

画面6

 入力11は 、telnet のコマンド・モードに抜けています。入力12で接続を切ります。接続を切ると 表示が戻ります。

■クライアントを作ってみる
  クライアントを作ってみました。ソースはlcdtest.cです。コンパイルして実行してみてください。
make lcdtest
でコンパイルできるはずです。
kurobox@kurobox:~/src/mylcd$ ./lcdtest ver.: 0.5.2, protocol ver.: 0.3, width: 20, height: 4, cellw: 6, cellh: 8 listen myscreen Key: Down Key: Down Key: Up ignore myscreen kurobox@kurobox:~/src/mylcd$
 lcdtest を起動すると4行に、
This is line 1 This is line 2 This is line 3 This is line 4
と表示し、すぐに左下に 1, 2, 3, ... と約1秒ごとにカウント・アップしていきます。


lcdtest1.jpg

 Down キーを押すと、右下に2秒「Down」と表示します。Up キーを押すと、プログラムを終了しま す。


lcdtest2.jpg


■クライアントの動作の概略
 詳細は省略しますが、最初に、初期化するコマンドを文字列の配列 init_cmd[] に書いておき送っ ています(275-281行)。つぎに、This is line x という文字を送ります(283 から 287行)。その後、 Upキーが押されるまで while ループで、左下と右下の表示を更新しています。
<光永 法明>

 カテゴリ 

 

トラックバック(0)

このブログ記事を参照しているブログ一覧: lcdproc クライアントを作ってみる

このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/1225

コメントする

おすすめ書籍
Powered by
Movable Type 4.1