...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

シリアルポート

B4に相談されたのでシリアルポート経由でセンサとやりとりするコードを見た.
ごちゃごちゃとコードをいじる・・・.
その結果わかったこと.
実行するたびにセンサから受け取ったはずのバイト列が異なっている.
が,稀に正常な値が送られてくる.
が,バイナリのフォーマットを無視して1パケット分をまるごとファイルやテキストボックスに出力すると正常に受信できている.
特に,バイト列をファイルに書き込んで,それをバイナリエディタで見たら正常なのが意味不明.
よって,一時はポインタのバグでバイト列を破壊しているのかとも思ったがそうでもないようだ.
困った,全然わからん.
今のところ,うちの研究室の人は誰も原因が分からない模様.
どうやら,きっと,多分,おそらく,C/C++プログラミングの問題ではない(一瞬,コンパイラまで疑ってしまったではないか).
バイス依存のバグだろう.
ありがちなのは,起動後(ポートを開いてからデータを通信するまでの間)にデバイスの初期化が必要だというパターン.
しかし,ざっと見たところそういう記述はマニュアルに載っていない.
あるのはソフトウェアリセットやパワーオンの方法.
しかし,正常に受信できることもあるし,データフォーマットを無視すれば後ろの方には正常なデータがある.
いやー,これはどうしたものか・・・.