W6では(私の他のロボットもそうですが)1バイトキャラクタによってこれから送受信する 情報の種類を宣言し、次のバイトからは実際にデータをやり取りする仕組みをとっています。
コマンドマップのダウンロード(2004/12/23版)
また、別の例としてRCサーボを動かす場合について説明します。この場合は、はじめに"A"を
送ります。
W6側のプログラムでは、最長で制御プログラムのループが1回まわる間は、レシーブデータレジスタ
は読まれないので、"A"を送った後、40msecくらい待って、W6が"A"をレジスタから取り込んだ頃を
見計らって「関節番号」、「関節データ」を送ります。
(W6側には通信バッファを用意していないので、"A"がレシーブデータレジスタ
から読み出される前に次のデータを送ると通信エラーになってしまいます。)
2003年頃は、上の様に一定時間待ってコマンドキャラクタに続くデータを送っていました。 VisualBasicはタイマが簡単に使えるので良かったのですが、2004年の前半、 VisualC++で作ったプログラム からW6を直に動かし始めた時、時間の計り方を知らなかったので、W6がコマンドキャラクタを 取り込んだ時点でそのキャラクタを送り返させ、それをトリガにして次のデータを送るように変えました。