nxtOSEKプログラムをBluetoothで転送する

毎回毎回USBケーブルをつなぐのが面倒なので、
Bluetoothでプログラム転送できないのかな、と調べてみたら。

http://bricxcc.sourceforge.net/nexttool_docs.html
http://forums.nxtasy.org/lofiversion/index.php?t789.html

ちゃんと書いてありました。

結局nexttoolの引数で/COM=〜の代わりに/BTを付けるといけるんだけど、この場合(たぶん)COMポートを一つずつ探していってるっぽくて時間が非常にかかる。(1分ぐらい)

で2つ目のURLにあるとおり、
NeXTTool.exe -listbricksを実行して(1分ほどかかるかも)、

BTH::NXT=BTH::NXT::XX:XX:XX:XX:XX:XX::X

という風なNXTのBluetoothのアドレス?をメモしておく。

メモしたアドレスを元に、

NeXTTool.exe /COM=BTH::NXT::XX:XX:XX:XX:XX:XX::X /BT -download=NXTway_GS_JSP.rxe

を実行するとぼちぼちな速度でダウンロードに成功。

ただ、ダウンロードだけだとうまくBluetoothで接続できてない場合との見分けがつかないので、

NeXTTool.exe /COM=BTH::NXT::XX:XX:XX:XX:XX:XX::X /BT -listfiles=NXTway_GS_JSP.rxe

を実行してファイルサイズ取得もやっておく。

毎回このコマンドを打つのは面倒なので、
C:\cygwin\nxtOSEK\ecrobot/ecrobot.mak
の320行目付近の

rxeflash:
@echo "echo Executing NeXTTool to upload $(RXEBIN_TARGET)..." >./rxeflash.sh
@echo "$(WINECONSOLE) $(NEXTTOOL_ROOT)/$(NEXTTOOL) /COM=usb -download=$(RXEBIN_TARGET)" >>./rxeflash.sh
@echo "$(WINECONSOLE) $(NEXTTOOL_ROOT)/$(NEXTTOOL) /COM=usb -listfiles=$(RXEBIN_TARGET)" >>./rxeflash.sh
@echo "echo NeXTTool is terminated." >>./rxeflash.sh

の後に

@echo "echo Executing NeXTTool to upload $(RXEBIN_TARGET) via Bluetooth..." >./b_rxeflash.sh
@echo "$(WINECONSOLE) $(NEXTTOOL_ROOT)/$(NEXTTOOL) /COM=BTH::NXT::XX:XX:XX:XX:XX:XX::X /BT -download=$(RXEBIN_TARGET)" >>./b_rxeflash.sh
@echo "$(WINECONSOLE) $(NEXTTOOL_ROOT)/$(NEXTTOOL) /COM=BTH::NXT::XX:XX:XX:XX:XX:XX::X /BT -listfiles=$(RXEBIN_TARGET)" >>./b_rxeflash.sh
@echo "echo NeXTTool is terminated." >>./b_rxeflash.sh

を追加しておくと、毎回rxeflash.shと同時にb_rxeflash.shが生成されるので、
コマンドラインでsh ./b_rxeflash.shを実行すればBluetoothでプログラムが転送できる。
(BTH::NXT:XX:XX:XX:XX:XX:XX::Xの部分はNeXTTool -listbricksの結果にあわせて書き換えてください。)
本当は別ターゲットを作った方がいいと思うけどMakefileに詳しくないのでこれで満足。