2012-01-29 3 views
6

Я пытаюсь сделать проект, используя плату ADQ arduino http://arduino.cc/en/Main/ArduinoBoardADK и Android 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. Я понимаю, что есть некоторые проблемы с версией IDE arduino. Я попытался скомпилировать оба из 0022, 0023 и 1.0. Дальше я мог бы пойти с кодом я получаю эти ошибки компиляции после редактирования AndroidAccessory.h:arduino ADK + android LED blink пример компиляции ошибок

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 

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

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

EDIT1: Решение, которое сработало для меня, заключалось в том, чтобы составить эскиз на Linux (Ubuntu)

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

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

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 

ответ

0

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

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

3

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

Arduino Альфа 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 
+1

да я сделал :(этот маленький заголовок редактировать получил меня так далеко, но все же оставил меня с ошибками, которые вы видите выше ... – androidu

+1

Ну я и попробовал его на версии 0022, и я получаю ту же ошибку ... Я не понимаю, что я делаю неправильно ... – androidu

+1

@ MarciCăşvan См. Мой обновленный ответ на ссылку на документацию по установке необходимых библиотек. – fuzz

0

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

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

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

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

Cheers, Al

+0

Я скопировал libs в папку '/ libraries', как указано в документации – androidu

1

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

+0

Я также импортировал USB_Host_Shield и USB-библиотеки ... Там где-то есть конфликтная версия библиотеки ... Я дважды проверю – androidu

+1

@ MarciCăşvan Я думаю, это определенно, где ваша проблема. Что-то мешает правильному включению заголовка. – Zenexer

+0

Это не работает для меня Я сдаюсь – androidu

2

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.

+0

Я обязательно проверю это, и если мне удастся, я пометю ваш ответ :) спасибо – androidu

1

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

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

Место это только после того, как ЬурейеЕ 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; 
+0

Хороший ответ, если он решает проблему, хотя вы можете объяснить, что не так, и почему ваше решение необходимо. – Tass

+0

Определения отсутствуют в заголовках, я не знаю, почему, поэтому я перекопал в старый код и нашел их. Прямо сейчас я бы рекомендовал устанавливать библиотеки Macproino при их запуске без каких-либо проблем. http://practicalmaker.com/projects/macroduino-project-page – Orman

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

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

  3. При копировании USB хоста в библиотеках вы получите androidaccessory.h прочитать личное ошибки

  4. копирование USB хост из библиотеки V 2 вы должны быть в состоянии успешно скомпилировать. Я был.