RSS表示装置のソフトウェア解説(2)

fig140713a1RSSの取得ができたので、表示するデータを抜き出す。RSSはXMLで記述され、多くの情報が含まれている。RSSの構造を図にしてみたものを右に示す。今回この中でジャンルとタイトルを表示に使用した。

そこでXMLを解釈しデータを抜き出さなければならない。いつもはPHPやPerlなどでXML Parserライブラリを使用するがstm32でphpやperlは動かないので使えない。探せばC言語用のライブラリもありそうだが、メモリー容量等の問題で使えるか怪しいので、今回は簡単なParserを自作した。

シンプルなParserで、オープンタグとクローズタグを読み込んだ時点で、ユーザの関数を呼び出す。タグ名は引数で渡される。ちゃんとしたParserならばタグのパラメータの情報も渡さなければならないが、今回は使用しないので無視している。あと、タグ以外のテキストも読み込まれた時点でユーザの関数を呼び出す。

大変簡単なParserだが、これで情報のあるタグに来たこと/出たことを検出し、データを抜き出すことができた。

あとは、抜き出したデータの文字データでフォントを呼び出しビットマップに変換しOLEディスプレーにスクロールしながら表示する。

fig140713a2

スクロール表示する速度は遅いので、表示する間、XBee WiFiをuartのフロー制御で待たせていたのだが、待たせ過ぎたようでサーバーとの接続が切断され、RSSの後半のデータが取得できない。

そこで、RSSの情報を表示する前に一旦 RAMに記憶することにしたが、STM32のメモリー容量は限られている。表示するデータだけ記憶するようにしたことで、20Kbyte程度のバッファーで問題なく表示できた。

これで、RSS表示装置ができた。動かしていると結構面白い。今回はNucleoを使用したのでサイズが小さくないが、必要なのはディスプレーとSTM32とXBee WiFiだけなので、基板を起こせばOLEDディスプレーよりも小さいサイズでできそうだ。汎用の情報表示端末として使えるのではなかろうか。

Leave a Reply

メールアドレスが公開されることはありません。