Darkside(リンクエラー修正しました)

2018年11月1日(木) 22:01

完全成功

 ちょっとした共犯が残っていた。

 何と、受信データーは読んでいたが、それを液晶表示するための1行が消えていた。
 sprintf で表示を用意していたが、液晶へ送信していなかった。ソフトで試行錯誤を繰り返すと、重要な1行を消したままにしてしまうことは良くある。

 配線ミスは確かだったようで、下段に応答メッセージがズラズラと表示された。
 左端のSTは、プログラムがどこまで進行したかを示している。応答メッセージ自体は、その次からである。A55A・・・そういう仕様か!

 TWE LITE のシリアル通信アプリで書式モードバイナリ送信を行う場合、パケットを更にパケットで包まねばならない。外側のパケットは、0xA5 0x5A から始まるヘッダーが存在する。そういうヘッダー付きのパケットに包んだうえで、TWE LITE にTXする。
 ではRXは?

 やはり 0xA5 0x5A から始まるヘッダーを持ったパケットに包まれて、パケットが受信される。
 それは知っていたのだが、他の TWE LITE から無線受信したパケットだけでなく自分自身から返って来る応答メッセージまで2重パケットになっているとは思わなかった。

 一瞬だけ面倒臭いと思ったものの、これって相手先を用意することなく「パケットを解く」試験が可能ということだ。
 応答メッセージを受信し、中身だけ取り出して表示するようにソフトを記述する。もちろん、パケット仕様に存在するチェックサム等の確認も行う。すんなり成功した。いざ使えるようになれば、素直に動作してくれるようだ。
 細部のノウハウは、MCC自動生成部分を見れば分かる。やってることは、かなり単純。ただし、受信時のエラーハンドリングなどは、自力でゼロから記述するのは苦労すると思われる。記述は少ないが、それは知っていればの話である。

 受信は、割り込みでバックグラウンド処理できている方が圧倒的に使い勝手が良い。そこで、RX割り込みだけを有効とし、割り込みハンドラ内でパケットを解くようにソフトを書き換える。やる前は面倒かもしれないと思ったが、やってみると簡単だった。

 DB A1 は応答メッセージのヘッダーで、次は任意指定のID。これは、送信パケットに指定したIDと同じで、どのパケットに対する応答であるかを区別できる。最後の 01 は、「成功」という意味だ。失敗なら 00 が返って来る。

written by higashino [バトルタンク改造Tiger1] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

Comments

TrackBacks

Darkside(リンクエラー修正しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4