Russian Qt Forum
Ноябрь 26, 2024, 16:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Работа с библиотекой libusb  (Прочитано 18412 раз)
useruser
Гость
« : Январь 15, 2014, 11:59 »

Продолжаю работать с библиотекой libusb. ОС Linux Debian. Команда sudo apt-get install libusb-dev выполнена, т.е. "Уже установлена самая новая версия libusb-dev".
Код pro файла
Код:
#-------------------------------------------------
#
# Project created by QtCreator 2014-01-14T00:03:19
#
#-------------------------------------------------

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = usb_test
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h
FORMS    += mainwindow.ui
LIBS += -lusb


Код main.cpp файла
Код:
#include "mainwindow.h"
#include <QApplication>
#include "lusb.h"
//#include "lib/hidapi.h"
#include <stdio.h>
#include <string.h>
//#include "lib/hidapi.h"

int main(int argc, char *argv[])
{
libusb_init(NULL);

    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}



На первой-же команде "libusb_init(NULL);", возникает ошибка - undefined reference to libusb_init

В чём может быть ошибка?






Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #1 : Январь 15, 2014, 12:31 »

Цитировать
В чём может быть ошибка?
Вывод компилятора в студию !

Или попробуй перед сборкой выполнить qmake.
Записан
useruser
Гость
« Ответ #2 : Январь 15, 2014, 12:39 »

Вывод компилятора
« Последнее редактирование: Январь 15, 2014, 12:41 от useruser » Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #3 : Январь 15, 2014, 13:04 »

Код:
#include "lusb.h"
Непонимающий
помоему надо
#include <usb.h>
Записан
useruser
Гость
« Ответ #4 : Январь 15, 2014, 14:53 »

Цитировать
помоему надо
#include <usb.h>
Нет такого файла в папке libusb-1.0.9. Там много файлов, но такого нет.
lusb.h - это переименованный libusb.h (48 Кб)
« Последнее редактирование: Январь 15, 2014, 14:57 от useruser » Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #5 : Январь 15, 2014, 15:06 »

libusb-1.0.9.
тогда в проекте библиотеку надо подключать не -lusb а -lusb-1.0
Записан
useruser
Гость
« Ответ #6 : Январь 15, 2014, 15:16 »

тогда в проекте библиотеку надо подключать не -lusb а -lusb-1.0
Не понимаю почему, но сделал, как вы написали.
Ошибка "can not find -lusb-1.0"
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #7 : Январь 15, 2014, 16:10 »

Напиши-ка какая версия Debian у тебя, и какие пакеты *usb установлены.
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #8 : Январь 15, 2014, 17:45 »

Может поможет.
Как это выглятит у меня (Ubuntu 12.04)





во вложении проект.
Записан
useruser
Гость
« Ответ #9 : Январь 15, 2014, 17:50 »

Напиши-ка какая версия Debian у тебя, и какие пакеты *usb установлены.
У меня тоже есть подозрения, по этому поводу. Но я новичок и мало что понимаю.
Может версия библиотеки, установленная в системе не совпадает с версией в хедер файле libusb.h? Хотя это моё предположение.
Debian 7.1 (wheezy)
lib_usb-dev тоже установлен


Может поможет.
Как это выглядит у меня (Ubuntu 12.04)
во вложении проект.
Спасибо. Посмотрю. Надеюсь хоть что-то пойму.
« Последнее редактирование: Январь 15, 2014, 17:56 от useruser » Записан
useruser
Гость
« Ответ #10 : Январь 15, 2014, 20:16 »

Посмотрел ваш проект, попытался запустить.
Ошибка. Похоже, не может найти libusb.
Путь
INCLUDEPATH и LIBS менял (на картинке). Всё равно не находит. Возможно, ошибка в пути, а по этому пути лежат только "документы"...

« Последнее редактирование: Январь 15, 2014, 20:36 от useruser » Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #11 : Январь 15, 2014, 20:41 »

http://packages.debian.org/ru/sid/libusb-1.0-0-dev

И зачем ты подключаешь папку с документацией ?
« Последнее редактирование: Январь 15, 2014, 20:46 от alex312 » Записан
useruser
Гость
« Ответ #12 : Январь 15, 2014, 21:19 »

И зачем ты подключаешь папку с документацией ?
Это я уже понял.)
Удалил все пакеты, всё переустановил "вручную" (не из репозиториев). Вроде, начало работать.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #13 : Январь 15, 2014, 21:34 »

В .pro файле:

Код:
CONFIG += link_pkgconfig
PKGCONFIG += libusb-1.0
Записан
useruser_
Гость
« Ответ #14 : Январь 22, 2014, 11:37 »

Не могли бы вы подсказать немного по коду. А конкретно по функции libusb_interrupt_transfer. Вижу, что тут собрались люди "в теме"  Улыбающийся
В примере эта функция использована для чтения данных (хотя interrupt переводится как прерывание).

Мой код
Код:
unsigned char buf[64];

int returned = libusb_interrupt_transfer(handle, EP_IN, 64, 64, &ret, 1000);
       if (returned >= 0) {
int My_buf=(int)buf[0];
}

У меня посылка составляет 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?, автоповторение предыдущего значения?) и почему возникает ошибка.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 23.