Смущает разные библиотеки ADK

Я пытаюсь настроить Arduino IDE v 1.0.1 для работы с Ardunio mega ADK, я настраиваю все, но проблема в том, что вокруг много библиотек adk, а именно adk_release_20120606, которую можно скачать с сайта разработчика Android http://developer.android.com/tools/adk/adk.html и ArduinoADK-beta-001, которые можно загрузить с веб-сайтов ardunio http://labs.arduino.cc/ADK/AccessoryMode.

Согласно labs.ardunio.cc ArduinoADK-бета-001 является более новой версией.

Если у вас установлена ​​какая-либо из следующих библиотек Arduino, вам необходимо удалить их: AndroidAccessory USB_Host_Shield (версия 1.x и 2.x). Новая библиотека UsbHost не может сосуществовать ни со старой библиотекой AndroidAccessory, ни с какой-либо версией библиотеки USB_Host_Shield.,

но проблема в том, что во всех существующих эскизах в Интернете используется старый, например, в ArduinoADK-beta-001 не указан метод poweron(), а вместо этого следует использовать begin().

другая вещь - метод read () в более старой библиотеке, он может принимать 3 аргумента, но в более новой он не имеет аргумента.

Я открыл AndroidAccessory.h в обеих библиотеках и обнаружил, что в ArduinoADK-бета-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() объявляется дважды один в приватном разделе, как это:

 int read(void *buff, int len, unsigned int nakLimit = USB_NAK_NOWAIT);

а другой в публичном разделе, как это

 virtual int read(void);

поэтому вопрос, как я мог использовать read() функционировать? И где должны храниться данные, когда они получены от устройства Android?

0 ответов

Другие вопросы по тегам