Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: libusb-1.0 извлечение Serial Number  (Прочитано 8921 раз)
0 Пользователей и 1 Гость смотрят эту тему.
dionis20
Новенький

ru
Offline Offline

« : 27-10-2011 19:38 » 

Здравствуйте уважаемые!

мне нужно извлечь при помощи этой библиотеки серийный номер usb  устройства. подскажите пожалуйста как пользоваться структурой:

Код: (C)
static inline int libusb_get_string_descriptor(libusb_device_handle *dev,
        uint8_t desc_index, uint16_t langid, unsigned char *data, int length)
{
        return libusb_control_transfer(dev, LIBUSB_ENDPOINT_IN,
                LIBUSB_REQUEST_GET_DESCRIPTOR, (LIBUSB_DT_STRING << 8) | desc_index,
                langid, data, length, 1000);
}

либо:

Код: (C)
int libusb_get_string_descriptor_ascii(libusb_device_handle *dev,
        uint8_t index, unsigned char *data, int length);

нижеследующий код компилируется, но при запуске выдает Segmentation fault:


Код: (C)
static void print_devs(libusb_device **devs)
{
        libusb_device *dev;
        libusb_device_handle *DevHandle;
        unsigned char *data;
        int i = 0;

        while ((dev = devs[i++]) != NULL) {
                struct libusb_device_descriptor desc;
                int r = libusb_get_device_descriptor(dev, &desc);
                if (r < 0) {
                        fprintf(stderr, "failed to get device descriptor");
                        return;
                }

                libusb_get_string_descriptor_ascii(DevHandle,desc.iSerialNumber,data,20);
                printf("VID:%04x PID:%04x SN:%04x\n",
                        desc.idVendor, desc.idProduct,  data);
        }
}
« Последнее редактирование: 27-10-2011 19:55 от RXL » Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 27-10-2011 20:00 » new

Запускай отладчик и смотри точку, где произойдет исключение. После чего смотри стек вызовов. На основе этой информации уже можно что-то искать. Пока же говорить не о чем.
« Последнее редактирование: 27-10-2011 20:16 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines