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