2011年12月28日

ADKやBTに対応したMemoryMapLibリリースしました

以前本ブログでご紹介いたしましたArduino用の機器間通信プロトコルモジュール MemoryMapLibを バージョンアップさせ、Android Accessory(ADK)で使用できるようにしてみました。

以前の記事はこちら。
http://projectc3.seesaa.net/article/237969593.html
プロトコルの詳細説明は上記URL内記事内にpdfへのリンクを貼りつけています。

MemoryMapLibは、夜子ママ氏作のAndroid用ライブラリ AndyLibと通信できるライブラリです。MemoryMapプロトコルに対応 している機器と通信できます。
AndyLibでは通信路としてBluetooth以外に、Android AccessoryやMicrobridgeなど複数の経路を抽象化、上位アプリ側に 公開するレイヤとして機能してくれます。
対するArduino側のMemoryMapLibも、各種インターフェースに対応する作りにしました。
この2つのモジュール間のやりとりは中間経路をいろいろ選択できるといえると思います。

★今現在、AndyLibについては、日本Androidの会・神戸支部のリポジトリにて公開されています。

さて本記事では、MemoryMapLibのAndroid Accessoryで使用する場合と、UART(Bluetooth含む) で使用する場合のコードの対比をしていきたいと思います。

ライブラリに同梱しましたサンプルスケッチは、ADKとUARTシリアル両方に対応しています。

サンプルスケッチの中に
#if 1
#define ADK_ENABLE
#else
#define SERIAL_ENABLE
#endif
という部分がありますので、ADK_ENABLEまたは、SERIAL_ENABLEのいずれかが有効になるようにしていただければOKです。

プロトコル等は上述のMemoryMapLibの説明から変化ありませんが、ADK等のインターフェースに対応できるように、一部改変しました。 インターフェースの設定は、 MemoryMapLib::setStreamInterface() で行います。

ここに、Android Accessoryまたは、SerialのStreamのインスタンスを設定します。
上記初期設定の後、通信処理についてはインターフェースに関わらず共通です。

●Android Accessory(ADK)選択時の初期化部例
MemoryMap mMemoryMap;
AndroidAccessory mAndroidAccessory("IshiiWorks",
    "AndyTank","AndyTank","1.0","http://www.yishii.jp/",
    "0000000012345678"); // ★作成するデバイスに合わせて変更
AndroidAccessoryStream mAndroidAccessoryStream;

setup(void){
    mAndroidAccessoryStream.setInterface(&mAndroidAccessory);
    mMemoryMap.setStreamInterface(&mAndroidAccessoryStream);
}
void loop()
{
    mMemoryMap.poll();
}

●UART(Bluetooth)選択時の初期化部
setup(void){
    Serial.begin(9600);  // 外部機器とは9600bpsで通信
    Serial.flush();
    mSerialStream.setInterface(&Serial);
    mMemoryMap.setStreamInterface(&mSerialStream);
}
void loop()
{
    mMemoryMap.poll();
}

以上です。
新たにインターフェースを追加する場合には、それ用のCommunicationStreamクラスを定義すればOKです。
とりあえず、Microbridge版も作ろうかなと思います。

ソースは以下のgithubにあげてあります。
https://github.com/yishii/Arduino_MemoryMapLib

電脳Arduinoでちょっと未来を作る (マイコンと電子工作)
藤本 直明 神崎 康宏 森 直久 光永 法明 k.kinukawa hatayan 山田 斉 ざがん あみのさん
CQ出版
売り上げランキング: 33770
posted by いしいっち at 07:00| Comment(0) | TrackBack(0) | Android開発関連 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック