---自作MPGワイヤレス化 (15)---

 自作手パ(MPG)をワイヤレス化するのにアダプターを作製
 し、後は、ケースに組む状態になってます。
 ただ、念のデータの取りこぼしを調べたら、パルスジェネレータ
 を早く回すと、約半分の取りこぼしがあったので、受信側の
 プログラムにリングバッファーをいれました。
 リングバッファーをいれることで、ほぼデーターの取りこぼし
 がなくなりました。
 
 
 多少、疑問が残ったので、送受信のデーターの取りこぼし
 を調べるのに、ローコストLCDシリアル通信モニター
 作製しました。
 これだけでは、ただデーターの表示をするだけなので、
 カウントしたデータを計測してターミナルに表示できるように
 基板とプログラムを作成しました。
 基板といっても、PICにバスコンとICSPの端子をつけ
 
 ただけのものです。

 

 比較的短時間で、ほぼ動くようになりましたが、二つほど
 ドツボにはまって、二日ほどもがくことになりました。
 
 一つは、リングバッファーの操作でした。「s」のキャラクター
 が入力された一つ前のデーターをカウントのキーにするのに、
 リングバッファーの読み取りのポインターを「s」の一つ前に
 もどせばいい、と思いこんでいました。これが、ドツボの始まり
 でした。
 いくら、やっても、思ったキーになりません。
 読み込んだデータを、デバッグ用に表示してみて、やっと
 分かりました。
 データを取り込んだ後、ポインターを次の読み込みにそ
 そなえて、一つ進めていたのです。
 本来なら、ポインターを二つもどさないとだめなわけでした。
 「-1」としていたところを「-2」にしてやっと解決です。
  もう一つは、久しぶりに使ったprintf( )のフォーマットの間
  違いでした。
 「int」の「%4d」としなければならないところを、「char」の
 「%c」としていました。当たり前に、表示されないので、
 あれこれいじって、やっとprintf( )のフォーマットにたどり
 つきました。
 昔、PC用に、Cであれこれやっていたころは、printf( )が
 大嫌いで、直接ビデオラムを操作して表示する関数等を作って
 使ってました。
 今回は、ターミナルへの表示位置を決めるのに、printf( )を
 つかって、エスケープシーケンスの使いまくりでした。

 

 とりあえずのプログラムです。
 main.c
 例によって、ゴミが沢山のこっています。表示をもうちょっと洗練
 させたいなと思ってますが、計測中の表示をやめて、計測終了
 後に表示させた方が、いいのかなと、思案中です。