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に詳しくないのでこれで満足。