Simple Tester 編 2月某日:導入 suuから、「pic と Pilot を使ってなんか作りましょうよ。」と言われる。 注:Pic というのは、、、説明面倒なので、suu氏のページ参考。 色々協議の結果、簡単なデジタルテスタを作ることに決定!。 作業分担は、suuがPicでおいらがPilotの担当になった、というか おいらが先輩の権限で勝手に決めた。 だって、、、Picってアセンブラだから面倒なんだもの(^^;。 というのは冗談で、以前からちゃんとPilotのアプリを作ってみたいなあ とは思っていたんだよね。半年くらい前にGCCでサンプルをコンパイル したりして勉強をしたことがあったんだけど、当時の愛機はCompaq AERO 4/25 で、とてもじゃないけど、遅くてやってられなかった。。。 現在使用している開発マシンは VAIO PCG-505。 DOS/V Power Report に連載している、山田さんのアプリ開発に関する記事 ”実践モバイルプログラミング Pilotを極める”も連載開始号から買って いたんだよなあ。でも、12月号から買って無かったので、 急いで秋葉のブックタワーに行って、12月号以降のバックナンバーをそろえた。 pilot-tech-ml にも入る。pilot-mlもそうだけど、ここもなんか やさしい雰囲気を感じる(^^;。流通量は少な目だけど、有益な情報が 流れている。 2月某日:サンプルソースを見つけなきゃ。 テスタの機能を実現するためには、   Pic でA-D変換をして、   データをシリアルでPilotに送り、   Pilotでデータを表示する。 ということをしないといけない。。。 つまり、シリアルまわりの処理をしないといけない、、、 こりゃあ、どこかでソースを落とさなきゃ、、、と思っていたら、 POBoxの作者増井さんが UNIX MAGAZINE 2月号の記事で、Pilotの画面を ダンプしてシリアルに出力するアプリのソースを書いていたのを思い出す。 さらに、他にも色々検索していたら、Simple Term という通信ターミナル ソフト(確か山田さんのAccessIt!の元になったソフト)などを見つける。 実は、このソースがほとんど Simple Tester の元になっいて、さらに 名前もパクッてたりして、、、(^^;。 ちなみに、色々なソースは以下のサイトにある。 http://www.roadcoders.com/pilot/index.html http://www.iosphere.net/~howlett/pilot/source.html http://www.palmpilotfiles.com/ 上記のサイトはこのFAQからたどった。 http://www.geocities.com/SiliconValley/Horizon/5249/GNU_Pilot_SDK.html 開発をする人は是非御一読を、って代物。英語だけど。 2月某日:開発環境はどうするの? サンプルソースとか言ってる場合じゃなかった、、、 開発環境を整えないといけないや。以前はJumpとか試したけど、、、 やはりCが慣れているから、GCC か Code Warrier かな。 お財布と協議の結果、というか必然的にGCCを使うことに決定。 丁度この頃、ASCIIにCode Warrier のお試し版がCDに収録された。 結局「やはりお試し版はお試し版だな」とか言い切れる程まで試さなかった。 以前pilot-mlで、GCCのチュートリアルを訳したという人がいたことを思い出す。 で、調べてみると、、、なんと「Palm Pilot超入門プログラミング講座 」 なるものも書いてくれている。もう感謝感激である。 GCCを落としてきて、書いてあるとおりにインストールしてセットアップは完了。 前のバージョンよりも格段にインストールは簡単になっている。 でも、どこをどう変更されたのか(Autoexec.batとか)ちょっと不安でもある(^^;。 サンプルをコンパイルしてPRCファイルができるかどうか試してみる。 問題なく作成ができる。以前作ったテストソースもコンパイルしてみるが 無事作成終了。 2月某日:さて作るぞ! pilot-tech-ml で某氏の"Palm OS programming for GCC"がアナウンスされる。 まだ、一般には非公開らしいので、本当はここに書いてはいけないのかも しれないけど、書いちゃえ。まだ始めの方しか書いてないけど、おいらには 十分な情報がある。なんだかんだ言ってもやはり実際に動いているものの、 ソースが一番有益だな、と再認識する。 そういえば、ライブラリのチュートリアルについては、これまでふれて 無かった。実はこれら一連のマニュアル関係は、半年前開発の真似事を したときに全て落としてきてあった。ところがこれは Palm OS 1.0 対応 のものだったので、改めて2.0対応のものを落としてきた。さすがに 印刷はしていない。 やっと、Simple Tester の作成にとりかかる。 基本的には Simple Term の受信部分を使うので、適当にバサバサ削除して 再コンパイルしてみるが、、、案の定動かない(;_;)。しょうがないので、 元のソースを引っ張り出して、少しずつ変更することにする。急がば回れ とはこのことか。 ちょっとずつ削り、コンパイルを繰り返す。必要なのは、シリアルから 入力した数を、フィールドに出力するというところなので、ここだけの ものを作り上げる。テストを行い、意図する動作をするか確認した。 このフィールドに文字を表示させる、っていうのもなんかクセのある 感じだったなあ。未だによくわからん。 ちなみに、AD変換部とのデータをやり取りするプロトコルを考えようかと 思ったけど、面倒だから0Vからら5Vを0から255に変換して送る、 つまり1データを1文字として送ることにした。この説明じゃなんだか わからないかな(^^;、興味のある人はsuu氏のページを見てね。 ここにきて、suu の Pic を使ったAD変換部が完成したので、つなげて 見ることにする。無事データを受信することを確認できた。 ・・・こう書いていると、なんだか順調にここまできた感じだけど、 もっと苦労したような気がする。でも、よく覚えてないのは、 この後とっても苦労したからなんだと思う。 2月某日:なんと大ハマリ・・・ そう、いまだ謎なんだけど、ここがよくわからず、丸一日苦労した。 通信バッファから取ってきた1バイトが電圧のデータだ。 このデータを電圧に変換する式は以下のようになる。 V = data * 5 / 255 Vは小数2桁まで欲しい。しかしFloatが使えるかどうかよくわからなかった? というか、書いてみたらうまくいかなかったので、Intでやることにする。 それぞれの桁は以下の式で求められるはず、、、 V0(整数)  = data * 5 /255 V1(小数一桁) = (data * 10 * 5 /255)%10 V2(小数二桁) = (data * 100 * 5 /255)%10 だけど、うまくいかない。V2がどうしてもおかしくなる。 ちなみにLongで宣言してたんですけど、、、、だれか理由がわかったら 教えてください。こんなことなんかあまりにも基本的過ぎるだろうから、 pilot-tec-ml では恥ずかしくて聞けなくて(^^;。 色々試行錯誤の結果、適当にごまかしてV2の値を得ることに成功。 データの表示をビットマップで行うことにする。ビットマップももっと 簡単に表示できるかと思ったら、表示させるときに定型の書き方が あることがわかる。関数化しておく。 求めていた機能が実現できているものが一応の完成をみる。 これが、Simple Tester Ver.0.1 となった、がこれは非公開。 2月某日:グラフで表示! ここでちょっと欲がでた。 受信したデータをグラフ形式で表示したくなる。絵は、、、結構簡単に 書けることがわかった。X軸(Volt)Y軸(時間)は簡単に表示することができた。 データの点も同様に適当な位置に表示することができた。あとはこれを スクロールできればいいんだけど、そんな便利な関数、、、あった(^^;。 とまあこんな感じで、グラフ表示は割とすんなり表示することができた。 細かな調整をして、これを Simple Tester Ver1.0 とする。 2月某日:いよいよ公開だ。 せっかく作ったんだもの、誰かに自慢したいのは人の性か(^^;。 ホームページを作ったりするのは、例の如く先輩の権限でsuuにまかせる。 というか、おいらはここからはほとんどなにもしてなかった。 ホームページを完成させ、いよいよ pic-ml と pilot-ml でアナウンスをする。 pic-ml の方はちょっと反応があったかな。pilot-ml は以前Picの話があった ので、興味のある人がちょっと食い付いてくれた。 おいらはこんなものだろうと思ったが、suu は不満だったようだ(^^;。 両方に興味がある人はそんなにいないし、ましてやPilot側のソフトは 単体で動かないからねえ。と思ったので、デモ版を作成することにした。 起動時に、データを擬似的に与えている。 でも、これを載せてもあまり、というか全く反応は無かった。。。 ちょっと悲しい。まあ興味ある人少ないだろうからな、という結論に やはり達する。 反応があると、うれしいものなので、もしこれを読んだ人がいたら、 感想をメールでください。 ということで、以上でSimple Tester 編は終わりです。 今度は、Palm Lander 編を書きます。 実は、関数の細かい話しなんかもしようかと思っていたのですが、結構前の ことですっかり忘れてしまいました。次はもう少しちゃんと書く予定です。 ではでは