ToCoStickのシリアル通信で受信プロンプトを無くす

前回のエントリで調べた、シリアル通信の受信データの部分を書き換えてみました。

開発環境について

ToCoNetSDKというのが無償にて提供されています。これをダウンロードして展開するとeclipseによる開発を行えます。今回はこのWindows版(eclipse同梱で楽そうだった)を使ってコードを修正しました。

ビルドの方法などは特に特別なことは無く、ToCoNetSDKのページのPDFに詳しい説明があるので省きます。

変更点

修正するプロジェクトは「App_Uart」です。gistにアップしてありますが、受信時にデータ以外の文字列の表示をしないようにコメントアウトしただけです。 (gistのタブが8設定で見づらい・・・変更効かない...)

そのままビルドをするとデバッグビルドになるので、Makefileデバッグフラグを無効してやる必要があります。詳細はgistの方を見て下さい。

ビルドで作成した.binファイルをTWE-Lite専用プログラマで書き込んでやります。

動作検証

手前が送信側、後ろ側が受信側になります。送信側は手を入れていないのでプロンプトが出ますが、受信側にはプロンプトが出なくなりました。

f:id:tomo_watanabe:20131224220848p:plain

補足:シリアル通信動作

動作検証の結果では、送信側はEnterキーでデータを確定しているのですが、受信側では改行などが入っていません。ちょっとコードを調べてみたのですが、入力の終了を検出する箇所は以下のようになっています。(Source/input_string.C)

if (u8Byte == 0x0d || u8Byte == 0x0a) {
    // enter、系列の終了
    bComplete = TRUE;
} else if ...

CRやLFは送信するわけではなく、送信データの終了フラグとして使われています。したがって、受信側にはCRもLFも送信されずに連続した文字列として受信されます。とはいえ、受信側としては受信バッファが空になるまで読みこめばいいので困ることは無いかと思いますし、必要なら送信時にデリミタを付加して受信側でデコードすればよいでしょう。

まとめ

とりあえず受信側を修正してみましたが、送信側も同じような要領で削除することはできるでしょう。ただ送信データにはそもそもプロンプトは含まれないので修正する意味はあまり無いかと思いますが。受信側の修正としては、起動時のメッセージなども修正して削除する。なども必要だと思いますが、起動後に一度受信バッファをクリアすれば実用上は問題は無いでしょう。

実際に使用するにはまだ修正する箇所があるような気もしますが、今のところ実運用する予定は無いのでここまで(^^;

一応今回作成したToCoStick動作用バイナリを置いておきます。動作上の保証はいたしません