![]() |
|
|
![]()
|
|
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Ты используешь версию библиотеки 1.0. Она несовместима с 0.1, которая у тебя установлена в системе. Тебе необходимо установить пакет libusb-1.0.0-dev. А библиотеку задавать так: LIBS += -lusb-1.0
|
|||
|
||||
| tzirechnoy |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 1 Всего: 16 |
Как раз на следующей страницэ указано, где взять пример, который можэт просканировать все устройства и прочитать их дескрипторы (включая vid/pic/class/etc )
Как несложно заметить, в примере -- usb_init(), а не libusb_init(). Впрочем, действительно есть у libusb такая проблема: приличный developers guide -- под libusb-0.1, а сейчас типа стабильная версия -- libusb-1.0 Я бы для начала посоветовал именно на -0.1 и разрабатывать -- ну, она вполне работает, притом написано под неё большэ и кода и документацыи. Да, в Debian они присутствуют обе, -0.1 -- под именем просто libusb, а -1.0 -- под именем libusb-1.0 и libusb-1.0-0-dev. И собирать под -1.0 надо с -lusb-1.0 |
||||
|
|||||
| ISerg1986 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 12.1.2014 Репутация: нет Всего: нет |
Спасибо, bsa за ваш ответ. Правда я это уже сделал раньше. Кроме того, до установки libusb-1.0.0-dev, мне пришлось поудалять всё, установленное из репозиториев. А я считал, что лучше всё ставить оттуда. Теперь команда libusb_init(NULL); не выдаёт ошибки. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
|
|||
|
||||
| ISerg1986 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 12.1.2014 Репутация: нет Всего: нет |
Ну не знаю. Я всё поставил - ничего не работало. Всё удалил, поставил вручную - заработало. Правда теперь не знаю что делать. В примере приводят вот такой код
А это мой код
У меня посылка составляет 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 (экземпляр(обработчик?) устройства, конечная точка чтения,размер читаемого буфера, размер данных, размер данных, период повторения чтения(пауза?) ) |
||||
|
|||||
| tzirechnoy |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 1 Всего: 16 |
Прочитайте описание протокола USB. Да, это очень тяжёлое чтение довольно глупого документа -- но без этого достаточно безсмысленно пытаться самому написать обмен по USB -- хоть в драйвере хоть в устройстве. Кстати, насколько я помню, вроде бы endpoint 0 зарезервировано для control transfers. И почему-то input/output endpoints начинаются с 1 (хотя вроде ничего не мешает и по 0 передать interrupt transfer).
Так ret должна быть твоей переменной. Вообще, это очевидно для сишника: всё, что не описано как константы, переменные или функцыи библиотеки -- это твои переменные.
Нет, Вы в корне неправильно понимаете, а как правильно -- описано в документацыи. Кстати, у Вас опечатка дажэ при копировании прототипа функцыи. |
||||||
|
|||||||
| ISerg1986 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 12.1.2014 Репутация: нет Всего: нет |
Оставил эту функцию (libusb_interrupt_transfer) пока в покое. Не всё понимаю - трогать пока не буду
А в этой libusb_open_device_with_vid_pid(NULL, DEV_VID, DEV_PID); ошибиться уже сложно. Пытаюсь найти (открыть) устройство, зная его VID и PID. ![]() ![]() Мой код
Результат - программа завершилась с кодом 1. То есть return 1 - не видит устройство. VID 0x0483, PID 0x3748 - вроде правильные. В линуксе устройство видно. Других ошибок нет. Вывод компилятора -всё ок Process /usr/bin/make exited normaly. Я правильно указал VID и PID? Это сообщение отредактировал(а) ISerg1986 - 26.1.2014, 20:19 |
|||
|
||||
| kuzulis |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 5.9.2007 Репутация: нет Всего: 1 |
А ты сначала проверь что возвращает libusb_init(), затем посмотри исходники утилиты QStLink (о которой ты писал на другом форуме), проверь права доступа и пр. Если ничего не выйдет - значит не судьба, брось это.
|
|||
|
||||
| ISerg1986 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 12.1.2014 Репутация: нет Всего: нет |
Посмотрю, хотя странно всё это. Я уже систему переустановил - Линукс Дебиан последней версии, поставил только необходимые пакеты. QT из репозитория. Всё "чистое", по инструкции -а не работает Можно, но это в крайнем случае. В самом крайнем есть рабочий(? поверю на слово) проект для eclipse, но ведь тут речь про QT? Проверял. Я и так дал пользователю привилегии рута, и через судо запускал. Похоже, что дело не в правах. Так не интересно. Надо довести эксперимент до логического финала. |
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 1 Всего: 16 |
УМВР -- ну, после того, как удалил обе ссылки на mainwindow, который Вы не привели. В смысле -- возвращает 2.
Так что проверяйте детали: что запускаете от рута, что собирается именно ваш проект, что он вообще пересобирается (удалите бинарник), что вы код возврата правильно читаете. |
|||
|
||||
| ISerg1986 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 12.1.2014 Репутация: нет Всего: нет |
Похоже, понял в чём дело. Я не правильно указал VID и PID. Заместо 0х там был другой символ - не русская х, а что-то другое(?). Дело в кодировке.
Заработало. Код завершения 0. Но выдаёт странные ошибки в Aplication Output во время работы т.к. непонятно что происходит. А именно - неизвестно, что это за "точка" EP_IN 0x81 и какое у меня должно быть её значение. ![]() Код
|
|||
|
||||
| ISerg1986 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 12.1.2014 Репутация: нет Всего: нет |
Переподключил устройство - нашлось ещё несколько usb
Пытаюсь подключится к 0xffff 0xbad Выдаёт ошибку permission denied. Нет прав доступа к устройству. Причём к 002 033. Добавил правила ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="0bad", MODE="0666" и ещё одно ATTRS{idVendor}=="002", ATTRS{idProduct}=="0bad", MODE="0666" Сделал reload rules - ошибка не исчезла. ![]() Это сообщение отредактировал(а) ISerg1986 - 27.1.2014, 16:51 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
ISerg1986, как у тебя с английским? Что в переводе на русский значит слово "bad"?
|
|||
|
||||
| ISerg1986 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 12.1.2014 Репутация: нет Всего: нет |
С отличием школа+институт+спецподготовка 4 года+технический английский Тут bad оно 0xbad т.е обозначение в шестнадцатеричной системе PID устройства. Его так задал мне программист платы. Шина 002 устройство 033 VID 0xffff PID 0xbad. Никакого криминала Сейчас "грешу" на виртуалку. Похоже что система блокирует порты. Устройство подключено к Windows 7 а там VMWare c Linux. Буду покупать отдельный компьютер подешовке т.к. нужно исключить все глюки и ошибки. А так - что ни система, то новые ошибки. А код то один и тот-же. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
||||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |