ECRobot C/C++ API for nxtOSEK
nxtOSEKでは、ECRobot (Embedded Coder Robot) というC/C++
APIライブラリを提供しています。
ECRobot C API Reference
更新: 2011/04 (ページフレームを追加 by 斉藤豊氏)
ECRobot C++ API Reference 更新: 2011/03
ECRobot C++ APIの特徴は次の通りです:
-
NXTの各種デバイスクラス。デバイスクラスには、NXTセンサ(含むRCX光センサ、HiTechnic社製センサ)、モーター、NXT本体(ボタン、バッテリー)、液晶表示、スピーカー、USBおよびBluetooth通信などが含まれます。
注記:一部のデバイスクラスは、グローバルオブジェクト(タスクおよび関数外で定義されたオブジェクト)として定義する必要があります。これは、各デバイ
スクラスのコンストラクタ/デストラクタではデバイスが使用しているハードウェアの初期化/終了処理をおこなっているため、適切なタイミングで各デバイス
の初期化/(特に)終了処理を実行するためです。グローバルオブジェクトのコンストラクタ/デストラクタはnxtOSEKアプリケーションの開始/終了時
に自動的に実行されます。
注記:v2.09より、グローバルオブジェクトとして定義すべきデバイスクラスを非グローバルオブジェクトとして定義した場合、コンストラクタ実行時に自
動的にアサーションメッセージをLCDに表示し、プログラムを停止する機能を追加しました。このメカニズムによりデバイスクラスをより確実に使用できま
す。
-
NXT GamePad用のR/C操作、DAQ(データロギング)およびVectorTテンプレートクラス
-
I2Cデバイスベースクラスを継承/コンポジットすることで、サードパーティ製I2Cデバイス対応の独自クラスを作成することが可能
-
リアルタイム組み込み制御を考慮したクラス設計(C++
RTTIは使用不可。例外処理は使用不可。new/deleteのオーバーロード)
-
NXTway-GS++、スマートポインタ等を含む10以上のサンプルプログラム(samples_c++\cppディレクトリを参照)
-
C++ソースファイル拡張子として、より一般的な.cppを使用
-
.c/.cppアプリケーションプログラムビルド用に新たにecrobot++.makを導入
(従来のecrobot.makは.c/.ccファイル向け)
-
ecrobotネームスペースにより、他のC++クラスとのクラス名の衝突を回避 (従来の.cc C++ APIとECRobot C++
APIの併用は不可)
- doxygen生成によるHTMLファイル形式の C++
APIリファレンス(英語版)。nxtOSEKパッケージにも同梱(ecrobot\c++\html\index.html)
-
TOPPERS/ATK(OSEK)のみに対応。(ecrobot\c\rtoscalls.cにJSP対応の機能を実装すれば、JSPでも使用可能)
下記にECRobot
C++ APIを使用したHello Worldサンプルを紹介します:
/* sample.cpp for
TOPPERS/ATK(OSEK) */
// ECRobot C++ API
#include "Lcd.h"
using namespace ecrobot;
extern "C"
{
#include "kernel.h"
#include "kernel_id.h"
#include "ecrobot_interface.h"
// nxtOSEK hook to be invoked from an ISR in
category 2
void
user_1ms_isr_type2(void){}
TASK(TaskMain)
{
Lcd
lcd;
lcd.clear();
lcd.putf("s", "Hello
World");
lcd.disp();
while(1);
}
} |
Home |