サーバのステータス表示用のプログラム(fbst)

 内部ネットワークのサーバにする予定の RaspberryPi 3B があります。このラズパイには SPI 接続で接続した 3.5 inch の液晶がついています。この液晶にサーバの状態を表示させようと思います。

 例えば、htop コマンドを使ってもある程度は状態を見ることができます。ただ、テキストだけではなくて、グラフ表示もしてみたかったので、プログラムを作ることにしました。

 ところが、SDL2 を使って簡単に表示するつもりでしたが、うまくいきませんでした。

Fbst

SDL2 失敗

 SDL2 を使って 3.5 inch の液晶に表示しようと思いましたが、/dev/dri が開けないとメッセージが出て実行できませんでした。どうやら著作権保護が関係しているようです。

 3.5 inch の液晶は SPI 接続するタイプで、fbcp-ili9341 を使って表示しています。そのため、/boot/config.txt で dtoverlay=vc4-fkms-v3d を無効にしています。dtoverlay=vc4-fkms-v3d を有効にすれば実行はできますが、fbcp-ili9341 がコピーできないのか 3.5 inch の液晶には何も表示されませんでした。

DirectFB 失敗

 SDL2 が失敗したので、フレームバッファに直接描画するしかないと思いました。そこで簡単にフレームバッファを使えるライブラリがないか探したところ、DirectFB というものがあることを知りました。

 しかし、DirectFB もエラーになって表示できませんでした。

直接フレームバッファを使う

 結局、直接フレームバッファに表示することにしました。グラフはグラフィックとして、文字列はグラフィックを表示したあとにエスケープシーケンスを使って表示することにします。

 以下のサイトを参考にしました。

ラズパイでフレームバッファ(/dev/fb0)を使用して、直接ディスプレイ画像を入出力する

ANSIエスケープシーケンス チートシート

ダウンロードは以下からどうぞ。
Fbst フレームバッファを使ったホストのステータス表示

Raspberry Pi

Posted by sirius