Название: Работа с библиотекой libusb Отправлено: useruser от Январь 15, 2014, 11:59 Продолжаю работать с библиотекой libusb. ОС Linux Debian. Команда sudo apt-get install libusb-dev выполнена, т.е. "Уже установлена самая новая версия libusb-dev".
Код pro файла Код: #------------------------------------------------- Код main.cpp файла Код: #include "mainwindow.h" На первой-же команде "libusb_init(NULL);", возникает ошибка - undefined reference to libusb_init В чём может быть ошибка? Название: Re: Работа с библиотекой libusb Отправлено: alex312 от Январь 15, 2014, 12:31 Цитировать В чём может быть ошибка? Вывод компилятора в студию !Или попробуй перед сборкой выполнить qmake. Название: Re: Работа с библиотекой libusb Отправлено: useruser от Январь 15, 2014, 12:39 Вывод компилятора
(http://s020.radikal.ru/i722/1401/80/3895b29990cb.jpg) Название: Re: Работа с библиотекой libusb Отправлено: alex312 от Январь 15, 2014, 13:04 Код: #include "lusb.h" помоему надо #include <usb.h> Название: Re: Работа с библиотекой libusb Отправлено: useruser от Январь 15, 2014, 14:53 Цитировать помоему надо Нет такого файла в папке libusb-1.0.9. Там много файлов, но такого нет.#include <usb.h> lusb.h - это переименованный libusb.h (48 Кб) Название: Re: Работа с библиотекой libusb Отправлено: alex312 от Январь 15, 2014, 15:06 libusb-1.0.9. тогда в проекте библиотеку надо подключать не -lusb а -lusb-1.0Название: Re: Работа с библиотекой libusb Отправлено: useruser от Январь 15, 2014, 15:16 тогда в проекте библиотеку надо подключать не -lusb а -lusb-1.0 Не понимаю почему, но сделал, как вы написали.Ошибка "can not find -lusb-1.0" Название: Re: Работа с библиотекой libusb Отправлено: alex312 от Январь 15, 2014, 16:10 Напиши-ка какая версия Debian у тебя, и какие пакеты *usb установлены.
Название: Re: Работа с библиотекой libusb Отправлено: alex312 от Январь 15, 2014, 17:45 Может поможет.
Как это выглятит у меня (Ubuntu 12.04) (https://dl.dropboxusercontent.com/u/88492657/screensoot/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%20%D0%BE%D1%82%202014-01-15%2016_09_50.png) (https://dl.dropboxusercontent.com/u/88492657/screensoot/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%20%D0%BE%D1%82%202014-01-15%2016_29_17.png) во вложении проект. Название: Re: Работа с библиотекой libusb Отправлено: useruser от Январь 15, 2014, 17:50 Напиши-ка какая версия Debian у тебя, и какие пакеты *usb установлены. У меня тоже есть подозрения, по этому поводу. Но я новичок и мало что понимаю.Может версия библиотеки, установленная в системе не совпадает с версией в хедер файле libusb.h? Хотя это моё предположение. Debian 7.1 (wheezy) lib_usb-dev тоже установлен (http://s003.radikal.ru/i204/1401/bb/c9303093f2d0.jpg) Может поможет. Спасибо. Посмотрю. Надеюсь хоть что-то пойму.Как это выглядит у меня (Ubuntu 12.04) во вложении проект. Название: Re: Работа с библиотекой libusb Отправлено: useruser от Январь 15, 2014, 20:16 Посмотрел ваш проект, попытался запустить.
Ошибка. Похоже, не может найти libusb. Путь INCLUDEPATH и LIBS менял (на картинке). Всё равно не находит. Возможно, ошибка в пути, а по этому пути лежат только "документы"... (http://s017.radikal.ru/i411/1401/88/d75ff7f2f46a.jpg) (http://s017.radikal.ru/i403/1401/bb/5489d437791b.jpg) Название: Re: Работа с библиотекой libusb Отправлено: alex312 от Январь 15, 2014, 20:41 http://packages.debian.org/ru/sid/libusb-1.0-0-dev
И зачем ты подключаешь папку с документацией ? Название: Re: Работа с библиотекой libusb Отправлено: useruser от Январь 15, 2014, 21:19 И зачем ты подключаешь папку с документацией ? Это я уже понял.) Удалил все пакеты, всё переустановил "вручную" (не из репозиториев). Вроде, начало работать. Название: Re: Работа с библиотекой libusb Отправлено: Alex Custov от Январь 15, 2014, 21:34 В .pro файле:
Код: CONFIG += link_pkgconfig Название: Re: Работа с библиотекой libusb Отправлено: useruser_ от Январь 22, 2014, 11:37 Не могли бы вы подсказать немного по коду. А конкретно по функции libusb_interrupt_transfer. Вижу, что тут собрались люди "в теме" :)
В примере эта функция использована для чтения данных (хотя interrupt переводится как прерывание). Мой код Код: unsigned char buf[64]; EP_IN=0x00 -точка входа, но я не уверен т.к. до конца не понимаю что это &ret - непонятно что это Пишет ошибку &ret was not declared in this scope. Смотрю функцию libusb_interrupt_transfer (libusb_device_handle *dev_handle, unsigned char endpoint, unsigned char *data, int lenght, int actual_lenght, unsigned int timeout) Понимаю это так Смотрю функцию libusb_interrupt_transfer (экземпляр(обработчик?) устройства, конечная точка чтения,размер читаемого буфера, размер данных, размер данных, период повторения чтения(пауза?) ) Итого 1) Пока не понятно, какая у меня должна быть EP_IN -точка входа и где и чем её смотреть? У меня есть плата, посылающая массив 64 бита. 2) &ret - непонятно что это (int actual_lenght?, автоповторение предыдущего значения?) и почему возникает ошибка. Название: Re: Работа с библиотекой libusb Отправлено: kuzulis от Январь 22, 2014, 12:10 Цитировать В примере эта функция использована для чтения данных (хотя interrupt переводится как прерывание). 1. Почитай для начала USB спецификацию и разберись что такое bulk, isochronous и interrupt конечные точки, зачем они нужны, чем отличаются, какой максимальный размер пакета можно прокачать через точку того или иного типа и пр. 2. Посмотри конфигурацию своего девайса, какие он имеет типы точек и пр. Например через lsusb -a в Linux. 3. Выбери точки на которые будешь слать/читать данные (точки могут быть как двунаправленные и иметь одинаковые номера, так и определенного направления - зависит от железки). 4. Напиши код. Название: Re: Работа с библиотекой libusb Отправлено: useruser_ от Январь 22, 2014, 12:28 Не могли бы вы дать мне ссылку на usb спецификацию?
В сети много информации, есть на русском, английском, usb 2.0 и т.д. Какую лучше прочитать? Название: Re: Работа с библиотекой libusb Отправлено: alex312 от Январь 22, 2014, 12:32 Какую лучше прочитать? Для начала - http://usb.fober.net/teoriya/Tipy-peredachi-dannyx/Название: Re: Работа с библиотекой libusb Отправлено: alex312 от Январь 22, 2014, 12:36 Смотрю функцию libusb_interrupt_transfer (libusb_device_handle *dev_handle, unsigned char endpoint, unsigned char *data, int lenght, int actual_lenght, unsigned int timeout) Не смотри больше туда, смотри сюда (http://libusb.sourceforge.net/api-1.0/group__syncio.html#gac412bda21b7ecf57e4c76877d78e6486).И осознай разницу между int actual_lenght и int * transferred . P.S. о том что переменную перед использованием надо объявить, надеюсь уже догадался. Название: Re: Работа с библиотекой libusb Отправлено: useruser_ от Январь 23, 2014, 12:07 alex312 -спасибо за статьи, почитал.
Насчёт переменных это и так ясно. lsusb полезная команда, но в моём линуксе её не было. И apt тоже. Установил нужные пакеты, перезагрузился и "сломал" линукс. Не загружается. Разбираться долго. Ну оно может и к лучшему. Переустановил всё с нуля -QT, пакеты. Теперь libusb установленная из репозитория работает и линукс "посвежее" (debian-7.3.0-i386-kde). Пытаюсь сделать следующий шаг. Найти (открыть) устройство, зная его VID и PID. (http://s020.radikal.ru/i722/1401/ea/4871187e48b1.jpg) (http://i047.radikal.ru/1401/1f/5ecfe4c6547b.jpg) Мой код Код: #include <QApplication> Результат - программа завершилась с кодом 1. То есть return 1 - не видит устройство. VID 0x0483, PID 0x3748 - вроде правильные. В линуксе устройство видно. Других ошибок нет. Вывод компилятора -всё ок Process /usr/bin/make exited normaly. Я правильно указал VID и PID? Название: Re: Работа с библиотекой libusb Отправлено: alex312 от Январь 23, 2014, 12:58 Результат - программа завершилась с кодом 1. То есть return 1 - не видит устройство. 1. Включи отладку libusb.2. вот тебе контрольные программы - https://github.com/mobyfab/qstlink2 , https://github.com/texane/stlink Название: Re: Работа с библиотекой libusb Отправлено: useruser_ от Январь 24, 2014, 17:01 Цитировать 1. Включи отладку libusb. Сделал #define USB_DEBUG_LEVEL 1 Цитировать 2. вот тебе контрольные программы Установил (не без помощи сообщества debian)(http://s019.radikal.ru/i639/1401/e8/cb11a9d808c0.jpg) Теперь можно понять, что не так с VID и PID? Название: Re: Работа с библиотекой libusb Отправлено: alex312 от Январь 24, 2014, 17:11 Теперь можно понять, что не так с VID и PID? Конечно, ведь у QStlink2 есть исходники.ЗЫ А еще могут быть проблемы с правами доступа. Попробуй запустить свою программу с правами root . Название: Re: Работа с библиотекой libusb Отправлено: useruser_ от Январь 24, 2014, 20:25 Цитировать Конечно, ведь у QStlink2 есть исходники. Вижу, что написан на Qt. И это программатор. У меня как бы уже есть программатор под windows. На нём и программировал плату.В QStlink2 исходниках много cpp файлов. Предлагаете искать во всех функцию, отвечающую за VID PID? Цитировать Попробуй запустить свою программу с правами root Выполнил sudo ./usb как советовали ниже. Без результата.Название: Re: Работа с библиотекой libusb Отправлено: lit-uriy от Январь 24, 2014, 21:02 >>sudo usb
будет искать в путях указанных в переменной окружения PATH в линухе в отличие от виндовоза, в текущем каталоге не ищется. поэтому казывай путь полностью, можно относительный путь использовать: sudo ./usb (относительно текущего каталога) Название: Re: Работа с библиотекой libusb Отправлено: useruser_ от Март 11, 2014, 18:08 Прошло много времени. Кое в чём разобрался.
Сейчас пытаюсь передать сигнал на плату. Передаю единицу. Код: unsigned char buffer[1]; Но ничего не происходит, и ret возвращает -7. В норме должно 0. Точку указываю ту-же что и для чтения. Нашел предполагаемую точку для записи. Изменил. Запустил программу. Ничего не происходит. В аутпуте libusbx error [submit_bulk_transfer] submiturb failed error -1 errorno= -2 -1 |