Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Daemon2017
4 / 4 / 1
Регистрация: 07.01.2013
Сообщений: 101
#1

Отправка команда на HID - C++

11.07.2016, 18:58. Просмотров 300. Ответов 4
Метки нет (Все метки)

Здравствуйте!

Столкнулся с проблемой: нужно работать с устройством через HID репорты.

В документации сказано:
Описание HID репортов.

- Vendor ID 8352 (= 0x20A0 hex).
- Product ID 16738 (= 0x4162 hex).

Все репорты длиной 2 байта.
За исключением репорта 22 используется битовая адресация портов: LowByte – порты с 1 по 8, HighByte – порты с 9 по 16.

Тип ReportID 1 байт 2 байт Описание
Чтение 11 LowByte HighByte Состояние выходов
Чтение 15 LowByte HighByte Состояние входов
Запись 22 0/1 Port № Установка одного выхода (первый байт 0–выключить, 1 –включить)
Сперва пытался написать на C#, но дело не сдвинулось с мертвой точки.

В итоге, используя библиотеку HIDAPI отсюда (https://github.com/signal11/hidapi), мне удалось выполнить задачу - установить порт #1 во включенное состояние, отправив "22 1 1" вот таким образом -

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <wchar.h>
#include <string.h>
#include <stdlib.h>
#include "hidapi.h"
 
int main(int argc, char* argv[])
{
    int res;
    unsigned char buf[256];
    hid_device *handle;
 
    handle = hid_open(0x20A0, 0x4162, NULL); //PID, VID. серийный номер
 
    buf[0] = 0x15; //Номер репорта
    buf[1] = 0x01; //Младший байт
    buf[2] = 0x01; //Старший байт
    res = hid_write(handle, buf, 2); //Куда шлем, что шлем и сколько байт шлем
 
    hid_close(handle);
    hid_exit();
    return 0;
}
Но эта библиотека х32, а мой проект, ввиду зависимости от других х64 библиотек, может быть только х64.

Пожалуйста, подскажите, какими еще путями можно послать эту команду?
Быть может, можно обойтись без библиотеки, или эту библиотеку под х64 собрать, ну или есть другие библиотеки, но под х64?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2016, 18:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отправка команда на HID (C++):

Где найти hid.lib? - C++
есть прога, там подключается #include &lt;hidsdi.h&gt; но он его не находит пишет fatal error C1083: Не удается открыть файл включение:...

C++ /C# .Net для работы с USB HID - C++
Добрый вечер уважаемые форумчане! Очень нужна ваша помощь, подскажите кто знает/работал с различными библиотеками для получения и...

Отправка данных в STM32F407VG Discovery используя HID USB в C# - КИП, датчики
Здравствуйте киберфорумчане ) Недавно задался вопросом как управлять контроллером STM32F407VG Discovery через HID USB используя своё ПО...

Отправка на ftp средствами Windows команда put - Windows Server
Windows server 2012 standart 64x Здравствуйте, пытаюсь отправить файлик на ftp средствами windows Делаю это через cmd.exe Файлик...

Добрый день. Вероятность того что команда а и команда б забьет 2,3,4,5 голов - Теория вероятностей
Команда а, сыграла дома 12 матчей забила 17 мячей и пропустила 7 Команда б, сыграла в гостях 12 матчей забила 11 мячей и пропустила 16 ...

HID клава и т.д - C++ Linux
Привет мастодонты...! Смысл такой, запарился я... И не могу найти покоя. Надо же было Васе попытаться установить сканер наших...

4
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
11.07.2016, 21:35 #2
Так ты пробовал собрать x64 вариант? Не получается или что?
1
Daemon2017
4 / 4 / 1
Регистрация: 07.01.2013
Сообщений: 101
12.07.2016, 14:46  [ТС] #3
Пробовал, но ошибок становится неприлично много

Добавлено через 15 часов 57 минут
Проблема решена - использовал библиотеку usbHidCommunication.h
0
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
12.07.2016, 20:28 #4
Попробовал у себя. Сборка отдельно hidapi проходит без ошибок- хоть 32, хоть 64. Только предупреждения. dll создаётся.
1
Daemon2017
4 / 4 / 1
Регистрация: 07.01.2013
Сообщений: 101
13.07.2016, 01:52  [ТС] #5
Хм, а ведь правда - под х64 эта dll создается.

А когда переключаю исполняемый проект на hidtest - пишет, что
Ошибка LNK1104 не удается открыть файл "hidapi.lib"

Заглянул в Ссылки - там hidapi указан по адресу:
C:\Users\Daemon\Downloads\hidapi-master\windows\x64\Debug\hidapi.dll

И он действительно там находится. В чем может быть дело?

Добавлено через 10 минут
Нашел, в чем дело: раньше, для х32, он искал библиотеки в ..\windows\Debug;%(AdditionalLibraryDirectories), а теперь надо искать их в ..\windows\x64\Debug;%(AdditionalLibraryDirectories)

Завтра опробую
Сейчас пишет
Необработанное исключение по адресу 0x00007FFD39E120C8 (hidapi.dll) в hidtest.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x000000000000000C.
Но это вызвано, я так полагаю, отсутствием устройства, VID и PID которого я указал.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2016, 01:52
Привет! Вот еще темы с ответами:

USB HID - C++ Builder
Есть книга Агурова по работе с USB. Но в ней все примеры сос тороны хоста на дельфи. А как вызывать HID функции из hid.dll из билдера?

Устройства HID - Windows 10
Доброго времени суток,ребята. Такая проблема у меня.. Я случайно отключил Устройства HID а именно USB-устройство ввода.. Теперь не...

HID Устройства - FreeBSD
это USB термометр :) Как теперь с него прочитать температуру? Дайте плиз направления!

HID-мышь не работает - Мыши
Помогите пожалуйста! приобрел НОУНЕЙМ мышь http://www.trait-tech.com/product/T-Mouse-325/ - точно такую но не на этом сайте. Производитель...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
13.07.2016, 01:52
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru