arduino ADK + Android пример мигает ошибка компиляции - PullRequest
6 голосов
/ 29 января 2012

Я пытаюсь сделать проект, используя плату Arduino ADK http://arduino.cc/en/Main/ArduinoBoardADK и Sony Ericsson Xperia Play под управлением Android 2.3.4.Для начала все, что я хочу сделать, это мигнуть светодиодом с моего устройства Android, используя хороший учебник, найденный здесь http://allaboutee.com/2011/12/31/arduino-adk-board-blink-an-led-with-your-phone-code-and-explanation/. Мне удалось скомпилировать приложение Android, но у меня большие трудности на скриншоте Arduino, я могуне разрешить импорт, и он не будет компилироваться в Windows7.Я понимаю, что есть некоторые проблемы с версией Arduino IDE.Я попытался скомпилировать как 0022, 0023 и 1,0.Дальше я мог пойти с кодом, который я получал после того, как отредактировал AndroidAccessory.h:

D:\arduino-0023\libraries\AndroidAccessory/AndroidAccessory.h:37: error: 'EP_RECORD' does not name a type

D:\arduino-0023\libraries\AndroidAccessory/AndroidAccessory.h:50: error: 'EP_RECORD' has not been declared

D:\arduino-0023\libraries\AndroidAccessory/AndroidAccessory.h:50: error: 'EP_RECORD' has not been declared

D:\arduino-0023\libraries\AndroidAccessory/AndroidAccessory.h:64: error: 'USB_NAK_LIMIT' was not declared in this scope

. Я думаю, что прочитал всю документацию и не могу найти решение своей проблемы.Настроить это - такая боль ... Мне действительно нужно сделать эту работу.Заранее спасибо!:)

---------------------------------------------------------------------------------------------------------------------------

РЕДАКТИРОВАТЬ1: решениеу меня получилось скомпилировать скетч на Linux (Ubuntu)

---------------------------------------------------------------------------------------------------------------------------

EDIT2: еще раз с использованием новейшей библиотеки USB с веб-сайта arduino код НЕ компилируется. Я попытался скомпилировать в IDE v22 и v1.0.2 под управлениемWindows 8 и Ubuntu 12.10 со следующими ошибками:

E:\Development\arduino-1.0.2\libraries\UsbHost/AndroidAccessory.h: In function 'void setup()':

E:\Development\arduino-1.0.2\libraries\UsbHost/AndroidAccessory.h:68: error: 'void AndroidAccessory::powerOn()' is private
sketch_jan10a:16: error: within this context

E:\Development\arduino-1.0.2\libraries\UsbHost/AndroidAccessory.h: In function 'void loop()':

E:\Development\arduino-1.0.2\libraries\UsbHost/AndroidAccessory.h:66: error: 'int AndroidAccessory::read(void*, int, unsigned int)' is private
sketch_jan10a:23: error: within this context

Ответы [ 7 ]

3 голосов
/ 30 января 2012

Библиотека была написана и протестирована в:

Arduino Alpha 0022

Вы пытались добавить это к ArduinoAccessory.h?

#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
#endif 

Также я бы рекомендовал прочитатьчерез это также:

http://developer.android.com/guide/topics/usb/adk.html#installing

В ней особо указано, что вам нужна библиотека CapSense для щита Android на Arduino:

http://www.arduino.cc/playground/Main/CapSense

Также упоминается, что вам также необходимо установить avr-libc:

sudo apt-get install avr-libc

MAC OS X:

fink install avr-libc avr-gcc avr-binutils avrdude 
2 голосов
/ 26 марта 2012

EP_RECORD определяется как часть USB Host Shield 1.0.Однако он удаляется из библиотеки USB Host Shield 2.0.

См. Объявление здесь: http://www.circuitsathome.com/mcu/usb-host-shield-library-version-2-0-released

Так что сообщения об ошибках, которые у вас есть с EP_RECORD, появятся снова, если вы когда-нибудь обновитесь до 2.0.Также ознакомьтесь с adk.h и adk.cpp из версии 2.0 на GitHub.Обновленный пример DemoKit 2.0 больше не использует AndroidAccessory.h / .cpp.

1 голос
/ 07 марта 2013

Поместите этот код там, где другие определения находятся в Usb.h

#define USB_NAK_LIMIT       32000   //NAK limit for a transfer. 0 means NAKs are not counted 

Поместите это сразу после typedef в SETUP_PKT в Usb.h

/* Endpoint information structure               */
/* bToggle of endpoint 0 initialized to 0xff    */
/* during enumeration bToggle is set to 00      */
typedef struct {        
    byte epAddr;        //copy from endpoint descriptor. Bit 7 indicates direction ( ignored for control endpoints )
    byte Attr;          // Endpoint transfer type.
    unsigned int MaxPktSize;    // Maximum packet size.
    byte Interval;      // Polling interval in frames.
    byte sndToggle;     //last toggle value, bitmask for HCTL toggle bits
    byte rcvToggle;     //last toggle value, bitmask for HCTL toggle bits
    /* not sure if both are necessary */
} EP_RECORD;
1 голос
/ 09 февраля 2012

Звучит так, будто вам просто не хватает заголовка USB_Host_Shield / Usb.h , который определяет эти константы.

0 голосов
/ 28 апреля 2015
  1. Установите ArduinoADK BETA 001, который является последним ADK, доступным на сегодняшний день.

  2. Разархивируйте его и в папке arduino вы найдете библиотеки и библиотеки-V2.

  3. Если вы скопируете USB-хост в библиотеки, вы получите androidaccessory.h, прочитав частную ошибку

  4. Скопируйте USB-хост из библиотеки V 2, которую вы сможете успешно скомпилировать. Я был.

0 голосов
/ 20 января 2014

Я думаю, если мы действительно знаем, что это EP_Record epRecord [8]; это все о том, что может помочь. EP_Record не был объявлен в этом файле. Следовательно, у него нет типа. Когда я дал USB_NAK_LIMIT тип int, эта ошибка исчезла. Я понятия не имею, какой тип дать EP_Record? Единственное, о чем я могу думать, это то, что это может быть массив epRecord [8]; выглядит как массив.

Несмотря на то, что сайт разработчика Android полезен, его не хватает во многих отношениях. Одним из них будет некоторая онлайн-помощь для разработчиков. Похоже, что это единственный источник ответов на вопросы, и большинство из них на самом деле не решают проблемы.

0 голосов
/ 06 февраля 2012

Это звучит как проблема, с которой я столкнулся некоторое время назад. (поэтому я использовал микробридж, а не ADK с USBDroid) мне пришлось перейти в 3 библиотеки, сообщение об ошибке указал мне на них

// (Примечание. Какие файлы были скопированы в общую папку эскизов arduino, а не в расположение обычных библиотек arduino) В этом может быть ваша проблема?)

Затем я заменяю wiring.h на Arduino.h в каждом. (Примечание. Сделайте резервную копию всего, чтобы сохранить некоторые вещи, если это не ваша проблема). Затем скопируйте в папку с таким же именем, но с номером перед именем. таким образом, при перезапуске программного обеспечения arduino вы получите ошибку, проигнорируйте это и скомпилируйте.

В результате работал USBdroid как видно на http://www.youtube.com/watch?v=h7aa_6PNdRI Работа еще не завершена, но сделала меня счастливой. У меня еще есть несколько багов для работы.

Cheers, Al

...