2009-10-17スマートフォン用の表示で見るかみやんの技術者ブログ主にプログラムの話ですこの広告は、90日以上更新していないブログに表示しています。TDS01VをPC側制御ソフトのAibiUIに接続するプログラムを書いた。GPS(アンタレス48)やLRF(Top-URG)では、シリアル接続して、要求を出したらデバイス側からデータが一方的にずっと流れてくるので、SerialPortの受信イベントをハンドリングすればよかったのだが、このTDS01Vは毎回毎回、「データくれ」要求を出さないといけないので、イベントドリブンでは不便。いうことでマルチスレッドにした。情報が更新されるまで待つセンサ情報要求6.へ戻る、または、計測停止である。}}StartThread()をGUI側から呼べばOK。Start()のOnLineReceived()は各自Formへの通達方法に変えてください。俺は、デリゲート経由でGUI側へ通知しています。あと、Start()の中で使われているTds01vクラスは、下記。周期計測時間(単位:秒)、0.1単位で最大25.5秒まで。}}エラーのときは、FormatExceptionを投げていますが、特にこの型に意味はありません。自分でExceptionクラスを作るのが面倒なので、適当にFormatExceptionを選びました。うち地磁気センサしか使わないので、レスポンスクラスとか、レスポンスのパーサクラスとかは作ってありません。地磁気は方位で得る方法ではなく、磁気ベクトルで得る方法で使っています。これの方が、磁力が大きすぎるときとか小さすぎるときなど異常を感知できるので。その代わり、自分でキャリブレーションのGUIを作って補正してあります(この辺のエントリ参照)。ロボットに積んで動かしてみました。搭載位置は、GPSのポールの中点。