私は Arduino IDE v 1.0.1 を Arduino メガ ADK で動作するようにセットアップしようとしています。すべてをセットアップしますが、多くの adk ライブラリがあるという問題があり ます 。.com/tools/adk/adk.html とardunio labs http://labs.arduino.cc/ADK/AccessoryModeからダウンロードできるArduinoADK-beta-001があります。
labs.ardunio.cc によると、ArduinoADK-beta-001が新しいバージョンです。
次の Arduino ライブラリのいずれかがインストールされている場合は、それらを削除する必要があります。 AndroidAccessory USB_Host_Shield (バージョン 1.x と 2.x の両方) 新しい UsbHost ライブラリは、古い AndroidAccessory ライブラリや USB_Host_Shield ライブラリのどのバージョンとも共存できません。 .
しかし問題は、Web 上に存在するすべてのスケッチが古いものを使用していることです。たとえば、poweron()メソッドはArduinoADK-beta-001には存在せず 、代わりにbegin()を使用する必要があります。
もう1つは、古いライブラリの read() メソッドで、3つの引数を取ることができますが、新しいライブラリには引数がありません。
両方のライブラリで AndroidAccessory.hを開きましたが、 ArduinoADK-beta-00には古いメソッドのすべてのメソッドが含まれていることがわかりましたが、プライベートに設定されているため使用できません。ヘッダー ファイルの内容は次のとおりです。 :
#ifndef __AndroidAccessory_h__
#define __AndroidAccessory_h__
#include "UsbHost.h"
#include "Arduino.h"
#include "Stream.h"
#define DATA_BUFFER_SIZE 64
class AndroidAccessory : public Stream {
private:
const char *manufacturer;
const char *model;
const char *description;
const char *version;
const char *uri;
const char *serial;
MAX3421E max;
UsbHost usb;
bool connected;
uint8_t in;
uint8_t out;
EP_RECORD epRecord[8];
// TODO: Reuse `descBuff` after connection and/or stream descriptor?
uint8_t descBuff[256];
byte dataBuff[DATA_BUFFER_SIZE];
unsigned int numBytesInDataBuff;
unsigned int nextByteInDataBuffOffset;
bool isAccessoryDevice(USB_DEVICE_DESCRIPTOR *desc)
{
return desc->idVendor == 0x18d1 &&
(desc->idProduct == 0x2D00 || desc->idProduct == 0x2D01);
}
int getProtocol(byte addr);
void sendString(byte addr, int index, const char *str);
bool switchDevice(byte addr);
bool findEndpoints(byte addr, EP_RECORD *inEp, EP_RECORD *outEp);
bool configureAndroid(void);
bool dataBufferIsEmpty();
void refillDataBuffer();
// Private because it bypasses the data buffer.
int read(void *buff, int len, unsigned int nakLimit = USB_NAK_NOWAIT);
void powerOn(void);
public:
AndroidAccessory(const char* manufacturer,
const char* model,
const char* description = "An Arduino-based Android accessory",
const char* version = "1.0",6
const char* uri = "http://labs.arduino.cc/ADK/Index",
const char* serial = "00000000");
boolean begin(void);
void refresh(void);
bool isConnected(void);
virtual size_t write(uint8_t *buff, size_t len);
virtual int available(void);
virtual int peek(void);
virtual int read(void);
virtual void flush();
virtual size_t write(uint8_t);
using Print::write; // pull in write(str) and write(buf, size) from Print
};
#endif /* __AndroidAccessory_h__ */
ご覧のとおり、poweron()
メソッドはまだ存在していますが、プライベートであり、次のread()
ようにプライベートセクションで2回宣言されています。
int read(void *buff, int len, unsigned int nakLimit = USB_NAK_NOWAIT);
このような公開セクションの他の
virtual int read(void);
質問ですが、どのようにread()
関数を使用できますか? Androidデバイスから受信したデータはどこに保存する必要がありますか?