SerialPort2でのRCB-3制御

ScratchでKHR-1HVを制御できないか奮闘しています。単なるシリアル通信だとバカにしてかかったのですが、思うようにうまくいきません。
付属のソフトでは問題ないのですが、シリアル通信ソフトなどを利用して真似しても通信が再現できません。

ウェブで参考にしていたRubyの例ではうまくいくのでScratchでもOKだと思ったのですが…
近藤科学KHR-2HVをMac OSX Leopardから操作する
ところが上のページのサンプルを別のPCで動かしてみたら動作しませんでした。

どうやらRCB-3のタイミングが結構厳しいようです。
マイコンボードと通信 sizuのセローに乗ってどこにいこう!/ウェブリブログ

そこで今まで試していたサンプルの各所にDelayを埋め込んだところ、なんとか動作させることができました。

port := SerialPort2 new openPortNamed: '/dev/cu.usbserial-KOS1VRMH' baud: 115200.
port nextPut: 13.
Delay waitMSecs: 10.
a := port readByteArray.
port nextPut: 244.
port nextPut: 1.
port nextPut: 0.
port nextPut: 245.
Delay waitMSecs: 10.
b := port readByteArray.
Delay waitMSecs: 100.
port close.

上記はモーションの1番を実行させる例です。

とりあえず前進できてよかったのですが、機種によってDelayの値が変わりそうで怖いです。

ScratchでAIBOを動かす

Scratch v1.4に、Defart/AIBOを搭載したAIBO(ERS-7 or Later)を制御するコマンドを追加してみました。
阿部さんの作成されたネットワーク拡張をもとにして、Defart/AIBOのためのコードを追加したという単純なものです。

これでScratchからAIBOの動きをコントロールできるようになりました。
また、v1.4対応なのでWeDoと組み合わせることができます。傾きセンサーを動かしてAIBOを操縦するコードもちゃんとうごきました。

時間があれば他の機能も制御できるようにしたいと思っています。

チェンジファイル:DefartNetworkConnection.cs
Scratchソース:Scratch Source Code