開発環境の BricxCC を使うだけではなく、ちょっと目先を変えて、コマンドラインベー
スで使ってみましょう。
BricxCC のエディッタには多少の不満があるので、コマンドラインベースででも開発でき
ると便利。
本当は、Eclipse で開発できると便利なんだけど、まだ、leJOS に対するものしかなさそ
う。(★)
LDT - leJOS Development Toolset
http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-306.html
これも、機会があれば、そのうち試してみたい。
■ 環境変数 PATH の設定
まず、BricxCC のパスをシステムの環境変数 PATH に追加します。
デフォルトのままインストールしたのであれば、「C:\Program Files\BricxCC」にインス
トールされているので、これを環境変数 PATH の最後にセミコロン(;)をつけて、その後
につけます。
■ コマンド nbc
NXC プログラムをコンパイルしたり、ダウンロードするのは、nbc コマンドを用います。
オプション -help で、どのようなコマンドのシンタックスを見てみましょう。
■ コンパイルと NXT へのダウンロード
プログラム Bumper01.nxc をコンパイルしてダウンロードしてみます。
---
C:\_docs\Lego\Bricx_NXC>nbc -S=usb -d Bumper02.nxc
---
コンパイルエラーのときは、以下のように表示されます。今回は、19 行目の
Off(OUT_BC)
文のセミコロンを抜かしました。
■ 目的ファイルの生成
目的ファイルをファイルとして残す場合は、-O オプションを使います。このとき、この
実行ファイルの拡張子は「.rxe」を指定しておきます。
---
> nbc -O=Bumper02.rxe Bumper02.nxc
---
そうすると、Bumper02.rxe というファイルができます。これが、コンパイル後の目的フ
ァイルです。-O オプションで目的ファイル名を指定しないと、どうやら NULL に出力さ
れるようです。(★)
■ 逆コンパイル
この目的ファイルを逆コンパイルするには、-x オプションを使います。
逆コンパイル結果は、標準出力に出ます。
---
C:\_docs\Lego\Bricx_NXC>nbc -x Bumper02.rxe
---
逆コンパイルした結果は、NBC のコードです。
NBC のコードについては、BricxCC をインストールしたフォルダーのサブフォルダーに
Documentation フォルダーがあり、そのなかにガイドとチュートリアルがありますので、
参考にしてください。
C:\Program Files\BricxCC\Documentation
■ NBC ファイルの生成
わざわざ、逆コンパイルしなくても、NBC ファイルを生成するオプションもあります。
NBC ファイルを生成するには、-nbc オプションを使います。
逆コンパイルした結果と、-nbc オプションで生成したファイルを比較しても面白いかも
しれません。
---
C:\_docs\Lego\Bricx_NXC>nbc -nbc=Bumper02.nbc Bumper02.nxc
---
■ NeXTTool - USB & Bluetooth NXT communication utility
NXT と通信をするユーティリティ。
これで取得できる情報や、操作も、ほとんどは BricxCC の [Tools] メニューから取得で
きるので、あまり使うことはないかも。
まずは、オンラインヘルプ。
/COM オプションで接続ポートを指定する。
メモリーに入っているファイルのリストを表示するのは、 -listfiles アクション。= の
後は、バイト数(と思われる★)
また、この出方からいうと、プログラム名は 15 文字以内かな。(★)
バッテリーレベルなどの情報の表示。
バッテリーレベルの単位は mV のようだ。(★)
以上
スで使ってみましょう。
BricxCC のエディッタには多少の不満があるので、コマンドラインベースででも開発でき
ると便利。
本当は、Eclipse で開発できると便利なんだけど、まだ、leJOS に対するものしかなさそ
う。(★)
LDT - leJOS Development Toolset
http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-306.html
これも、機会があれば、そのうち試してみたい。
■ 環境変数 PATH の設定
まず、BricxCC のパスをシステムの環境変数 PATH に追加します。
デフォルトのままインストールしたのであれば、「C:\Program Files\BricxCC」にインス
トールされているので、これを環境変数 PATH の最後にセミコロン(;)をつけて、その後
につけます。
■ コマンド nbc
NXC プログラムをコンパイルしたり、ダウンロードするのは、nbc コマンドを用います。
オプション -help で、どのようなコマンドのシンタックスを見てみましょう。
--- > nbc -help Next Byte Codes Compiler version 1.0.1.b34 (1.0.1.34, built Sun Nov 25 20:14:23 CST 2007) Copyright (c) 2006, John Hansen Syntax: nbc [options] filename [options] -S=<portname>: specify port name (COMn or usb), resource name, or alias -BT: use bluetooth -d: download program -b: treat input file as a binary file (don't compile it) -q: quiet -n: prevent the system file from being included -D=<sym>[=<value>]: define macro <sym> -x: decompile program -Z[1|2]: turn on compiler optimizations -O=<outfile> : specify output file -E=<filename> : write compiler errors to <filename> -I=<path>: search <path> for include files -nbc=<filename> : save NXC intermediate NBC code to <filename> -L=<filename> : generate code listing to <filename> -Y=<filename> : generate symbol table to <filename> -w[-|+] : warnings off or on [default is off] -EF : enhanced firmware -safecall: NXC will wrap all function calls in Acquire/Release -api: dump the API to stdout -help : display command line options ---
■ コンパイルと NXT へのダウンロード
プログラム Bumper01.nxc をコンパイルしてダウンロードしてみます。
---
C:\_docs\Lego\Bricx_NXC>nbc -S=usb -d Bumper02.nxc
---
コンパイルエラーのときは、以下のように表示されます。今回は、19 行目の
Off(OUT_BC)
文のセミコロンを抜かしました。
--- C:\_docs\Lego\Bricx_NXC>nbc -S=usb -d Bumper02.nxc # Error: ';' expected File "C:\_docs\Lego\Bricx_NXC\Bumper02.nxc" ; line 20 # unsigned #---------------------------------------------------------- ---
■ 目的ファイルの生成
目的ファイルをファイルとして残す場合は、-O オプションを使います。このとき、この
実行ファイルの拡張子は「.rxe」を指定しておきます。
---
> nbc -O=Bumper02.rxe Bumper02.nxc
---
そうすると、Bumper02.rxe というファイルができます。これが、コンパイル後の目的フ
ァイルです。-O オプションで目的ファイル名を指定しないと、どうやら NULL に出力さ
れるようです。(★)
■ 逆コンパイル
この目的ファイルを逆コンパイルするには、-x オプションを使います。
逆コンパイル結果は、標準出力に出ます。
---
C:\_docs\Lego\Bricx_NXC>nbc -x Bumper02.rxe
---
逆コンパイルした結果は、NBC のコードです。
NBC のコードについては、BricxCC をインストールしたフォルダーのサブフォルダーに
Documentation フォルダーがあり、そのなかにガイドとチュートリアルがありますので、
参考にしてください。
C:\Program Files\BricxCC\Documentation
■ NBC ファイルの生成
わざわざ、逆コンパイルしなくても、NBC ファイルを生成するオプションもあります。
NBC ファイルを生成するには、-nbc オプションを使います。
逆コンパイルした結果と、-nbc オプションで生成したファイルを比較しても面白いかも
しれません。
---
C:\_docs\Lego\Bricx_NXC>nbc -nbc=Bumper02.nbc Bumper02.nxc
---
■ NeXTTool - USB & Bluetooth NXT communication utility
NXT と通信をするユーティリティ。
これで取得できる情報や、操作も、ほとんどは BricxCC の [Tools] メニューから取得で
きるので、あまり使うことはないかも。
まずは、オンラインヘルプ。
--- C:\_docs\Lego\Bricx_NXC>nexttool -help NeXTTool version 1.0 (1.0.10.1, built Mon Nov 5 13:15:27 CST 2007) Copyright (c) 2006 John Hansen Usage: NeXTTool [options] [actions] Options: /COM=port: specify port name (COMn, usb, resource string, or alias) /BT[=name]: use bluetooth (selects the first brick found or the named brick) /HEX: use hexidecimal for numeric output /Duration=<n>: specify the tone duration for the playtone action /Inbox=<n>: use inbox number n when sending or reading a message /Loop: loop when playing sound files /Relative: reset output position relative /Empty: empty mailbox when reading /Bin[=filename]: dump data output as binary to a file (nxt.bin) Actions: -init : initialize nxt.dat file -listbricks : list resource names of all found NXT bricks -clear : erase all items on the brick -battery : return the battery level -input=<N> : read input N (0-3) -output=<N> : read the status of output N (0-2) -mute : stop playing sounds -playtone=<frequency> : play a tone for the specified duration -run=<filename> : run the specified program -runningprogram : return the name of the currently running program -stop : stop the currently running program -playfile=<filename> : play the specified sound file -firmware=<filename> : download firmware -download=<filename> : download the specified file to the NXT -upload[=<pattern>] : upload the specified file(s) from the NXT (or *.*) -listfiles[=<pattern>] : list the files matching the pattern (or *.*) -listmodules[=<pattern>] : list the modules matching the pattern (or *.*) -delete=<filename> : delete the specified file from the NXT -datalog | -datalog_full: upload datalog (_full == verbose) -eeprom=<n> | -eeprom_full: upload eeprom block (_full == all blocks) -memory=<n> | -memory_full: upload 128 bytes of memory (_full == all memory) -map: upload memory map -keepalive : return the current sleep time limit -sleep=<timeout> : set NXT sleep timeout (in minutes) -msg=<string> : send the specified message to the NXT -readmsg=<box> : read the message from the specified box -resetoutputposition=<port> : reset the position for the specified port -resetinputsv=<port> : reset the input scaled value for the specified port -setname=<new_name> : set the name of the NXT -getname : return the name of the NXT -versions : return the NXT firmware and protocol versions -deviceinfo : return all NXT device information -freemem : return the amount of free memory -lsstatus=<port> : return the low speed status for the specified port -boot : reset the NXT into SAMBA mode (usb only) -btreset : reset the NXT bluetooth to factory settings (usb only) -defrag : defragment the NXT filesystem General: -help : display command line options ---
/COM オプションで接続ポートを指定する。
メモリーに入っているファイルのリストを表示するのは、 -listfiles アクション。= の
後は、バイト数(と思われる★)
また、この出方からいうと、プログラム名は 15 文字以内かな。(★)
--- C:\_docs\Lego\Bricx_NXC>nexttool /COM=usb -listfiles Test01.rxe=748 Trybot02.rxe=1744 Bumper02.rxe=714 Bumper01.rxe=676 Sensor01.rxe=1796 HelloWorld01.rxe=542 Trybot01.rxe=1642 TouchSensor01.rxe=444 UltrasonicSenso.rxe=1664 TouchSensor02.rxe=710 Random02.rxe=1366 TrunRight05.rxe=528 Random01.rxe=710 Spiral01.rxe=508 TrunRight04.rxe=516 TrunRight03.rxe=524 TrunRight02.rxe=482 TurnRight01.rxe=468 ForwardAndBackw.rxe=6040 LineTracer01.rxe=11522 NVConfig.sys=1 RPGReader.sys=14346 Demo.rxe=9436 Try-Touch.rtm=3788 Try-Light.rtm=4456 Try-Sound.rtm=6864 Try-Ultrasonic.rtm=3756 Try-Motor.rtm=2630 Woops.rso=4699 faceopen.ric=316 faceclosed.ric=316 ! Startup.rso=8161 ! Click.rso=451 ! Attention.rso=1755 ---
バッテリーレベルなどの情報の表示。
--- C:\_docs\Lego\Bricx_NXC>nexttool /COM=usb -battery -versions -deviceinfo 7076 Protocol version = 1.124 Firmware version = 1.03 Brick name = NXT Bluetooth Address = 00:12:AB:34:CD:56 Bluetooth signal strength = 0,0,0,0 Free memory = 34000 ---
バッテリーレベルの単位は mV のようだ。(★)
以上