マイコンボードと通信

仕事は、泥沼になりつつありましたが今日の会議で執行猶予1ヶ月の判決がおりました。

...で、ロボットに時間を回せるぞ...と思いきや、まだ修理は帰ってきません。新規に注文した品もまだきません。

そこで、個人的にインターフェースが「かなり」気に入らないHeartToHeart3を何とかしようと思い、HtoH3の代わりになるものを自作してやろうと一念発起。ユーザーインターフェース周りはVCでやると面倒なので(んな、ところで時間をかける気はない^^汗)、C#2005を使うことに決定。

シリアル通信なんて12年ぶりにやるので大丈夫かな?と思ったのですが、案の上ハマリました^^;
まずは、簡単なコマンド(バージョン情報の取得)をRCB3HV(マイコンボード)に送って反応があるか「ステップ実行」して確認していたのですが、RCB3の待機状態を確認する「0x0D」を送って「0x0D」が帰ってくるのを確認後、バージョン情報を要求するための「0xFF + CheckSum」を送ったのですが(ここでブレークポイントをはっていた)、DataReceive()イベントが発生しません。いろいろ、調べた結果待機状態確認(「0x0D」)を送ったあと50ms以内にコマンドを送信しないとタイムアウトするそうです。
※ソース
ttp://www2.rocketbbs.com/625/harudori.html

...で、これが作成中のHtoHCustom.exeです。
画像


時間的余裕とヤル気が持続すれば、XNA(の3D)を利用してグラフィカルにポーズ作成できればいいなと考えてます。(たぶん、ここまでハムリかな?)

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

G
2008年02月14日 18:35
質問させてください。私もC++でプログラムを作ろうとしています。
「0x0D」を送り「0x0D」が返ってくるのは確認できましたが、その後コマンド、チェックサムを送っても何も返ってこないで困っています。
チェックサムは1byte目からチェックサムの手前までのbyteの値を加算した値の下位1byteでよろしいのでしょうか。
バージョン情報を要求するコマンドのチェックサムは何になるのでしょうか。
よろしくお願いします。
2008年02月14日 19:47
// 引数
// byte* buf コマンドのbyte配列
// int count コマンド配列のサイズ
byte CalcCheckSum(byte *buf, int count)
{
byte ret = 0;
for (int i = 0; i < count; i++)
{
ret += buf[i];
}
return ret;
}

記事はC#となってますが、VC++2005でも同様のものを作ったときのチェックサムの関数です。
この記事にもあるように、「0x0D」を送ると「0x0D」が送信されてきますが、バージョン情報取得コマンドを50ms以内に送信しないといけません。ブレークポイントで止めて確認しようとしたらダメです。TRACE()マクロなどを使ってアウトプットウインドウで確認したほうがいいです。
G
2008年02月15日 22:50
丁寧なご回答ありがとうございます。
教えていただいた関数で動作することができました。
悩んでいたのでとても助かりました。
本当にありがとうございました。