Search the Community

Showing results for tags 'USB HID Термометр'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
  • Радиоэлектроника для профессионалов
    • Световые эффекты и LED
    • Роботы и модели на ДУ-управлении
    • Автоматика
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Автомобильная электроника
    • Системы охраны и наблюдения. Личная безопасность
    • Питание
    • Электрика
    • Промышленная электроника
    • Ремонт
    • Металлоискатели
    • Измерительная техника
    • Мастерская радиолюбителя
    • Сотовая связь
    • Спутниковое ТВ
    • КВ и УКВ радиосвязь
    • Жучки
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
    • МК для начинающих
    • AVR
    • PIC
    • STM32
    • Arduino и Raspberry Pi
    • ПЛИС
    • Другие микроконтроллеры и семейства
    • Алгоритмы
    • Программаторы и отладочные модули
    • Периферия и внешние устройства
    • Разное
  • Товары и услуги
    • Коммерческие предложения
    • Продам-Отдам, Услуги
    • Куплю
    • Уголок потребителя
    • Вакансии и разовая работа
    • Наши обзоры и тесты
  • Разное
    • Конкурсы сайта с призами
    • Сайт Паяльник и форум
    • Курилка
    • Технический английский (English)
    • Наши проекты для Android и Web
    • FAQ (Архив)
    • Личные блоги
    • Корзина
    • Вопросы с VK
  • Переделки's ATX->ЛБП
  • Киловольты юмора's Юмор в youtube
  • Радиолюбительская доска объявлений exDIY's Надежность и группы продавцов
  • Переделки's разные темы

Blogs

There are no results to display.

There are no results to display.

Marker Groups

  • Пользователи форума

Город


Сфера радиоэлектроники


Оборудование

Found 1 result

  1. Возникла проблема с написанием программы (host) USB HID Термометр на языке С для Linux, с использованием библиотеки libusb. Прошивку взял пока готовую с сайта, по аналогии идущей в комплекте программы host'a начал делать сам на С. Оборудование находится по VID:PID. Cчитываю 8 байт, конвертирую и получаю непонятный результат который не меняеться (+32,0 С). При просмотре содержимого буфера - оно меняется при каждом опросе. Не могу понять что делаю не так. Может кто в курсе. Код программы: #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <math.h> #include <libusb-1.0/libusb.h> #include <iostream> using namespace std; #define DEV_VID 0xaaaa #define DEV_PID 0xef04 #define DATA_SIZE 8 //#define DEV_CONFIG 1 #define DEV_INTF 0 #define EP_IN 0x81 #define EP_OUT 0x01 int main(int argc, char * argv[]) { libusb_device_handle * handle; int ret; unsigned char buf[DATA_SIZE]; libusb_init(NULL); libusb_set_debug(NULL, 3); //получим handle устройства handle = libusb_open_device_with_vid_pid(NULL, DEV_VID, DEV_PID); if (handle == NULL) { printf("Не удалось найти устройство\n"); libusb_exit(NULL); return 0; } if (libusb_kernel_driver_active(handle,DEV_INTF)) libusb_detach_kernel_driver(handle, DEV_INTF); //захватываем интерфейс if (libusb_claim_interface(handle, DEV_INTF) < 0) { printf("Ошибка интерфейса\n"); libusb_close(handle); libusb_exit(NULL); return 0; } //считываем данные в буфер int returned = libusb_interrupt_transfer(handle, EP_IN, buf, DATA_SIZE, &ret, 5000); if (returned >= 0) { std::cout << "buf[0] = " << (int)buf[0] << std::endl; std::cout << "buf[1] = " << (int)buf[1] << std::endl; std::cout << "buf[2] = " << (int)buf[2] << std::endl; std::cout << "buf[3] = " << (int)buf[3] << std::endl; std::cout << "buf[4] = " << (int)buf[4] << std::endl; std::cout << "buf[5] = " << (int)buf[5] << std::endl; std::cout << "buf[6] = " << (int)buf[6] << std::endl; std::cout << "buf[7] = " << (int)buf[7] << std::endl; } //вывод содержимого буфера на экран for (int i = 0; i < DATA_SIZE; i++) std::cout << buf << std::endl; //переводим данные в hex { printf("Buf: "); for(unsigned i = 0; i<sizeof(buf); i++){ printf("0x%02x ", buf[i] & 0xff); } printf("\n"); } //конвертируем данные uint8_t temp_lo = buf[1] & 0xff; uint8_t temp_hi = buf[0] & 0xff; int16_t temp = (temp_hi << 8) | (temp_lo); float temp_f = temp / 16.0; // low 4 bits of temp are fractional part { temp_f *= 10; temp_f = round(temp_f); temp_f /= 10; printf("%+.1f\n", temp_f); } // отдаем интерфейс и закрыаем библиотеку libusb_attach_kernel_driver(handle, DEV_INTF); libusb_close(handle); libusb_exit(NULL); return 0; } компилирую: g++ -o usb main.c -lusb-1.0