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

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

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

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

11.07.2016, 18:58. Просмотров 241. Ответов 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?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2016, 18:58     Отправка команда на HID
Посмотрите здесь:

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

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

Не работает команда - C++
Вроде бы всё правильно сделал, но не работает команда &quot;Получение матрицы&quot; Вот код Файл: Spisok.h #pragma once class Spisok { ...

команда switch() - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;vector&gt; #include &lt;conio.h&gt; #include &quot;windows.h&quot; using...

Команда Make - C++
Какой путь указать для этой команды?

Консольная команда и С++ - C++
Добрый вечер. Что использовать в С++ чтобы запустить Java приложение таким кодом( какую функцию ): Код: #!/bin/bash cd...

Команда выбора - C++
Ввести номер месяца. Вывести количество дней в нем.

Команда выбора - C++
Заданы три действительных числа. Выберите из них те, которые принадлежат промежутке (-4,8).

Команда всем stream-ам - C++
Допустим у меня есть такое : std::ofstream foutOne(fileOne); std::ofstream foutTwo(fileTwo); // и std::cout ...

Команда выхода из программы - C++
Вот обясните мне какие команды выхода из программы С++ существуют,чтобы прям если не правильно программу вышибало,а то запутался уже с...

команда моей программы - C++
у мен возникла мысль,как можно делать так,что бы а) в run-е ввели какую то команду-появилась моя программа б) некоторая функцию проги...

компилятор и команда g++ под ubuntu - C++
Здравствуйте, у меня возникла проблема компиляции под g++, мне необходимо создать кучу объектных файлов, но проблема - в некоторых файлах...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
5116 / 4436 / 1476
Регистрация: 14.04.2014
Сообщений: 17,577
11.07.2016, 21:35     Отправка команда на HID #2
Так ты пробовал собрать x64 вариант? Не получается или что?
Daemon2017
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 100
12.07.2016, 14:46  [ТС]     Отправка команда на HID #3
Пробовал, но ошибок становится неприлично много

Добавлено через 15 часов 57 минут
Проблема решена - использовал библиотеку usbHidCommunication.h
nmcf
5116 / 4436 / 1476
Регистрация: 14.04.2014
Сообщений: 17,577
12.07.2016, 20:28     Отправка команда на HID #4
Попробовал у себя. Сборка отдельно hidapi проходит без ошибок- хоть 32, хоть 64. Только предупреждения. dll создаётся.
Daemon2017
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 100
13.07.2016, 01:52  [ТС]     Отправка команда на HID #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 которого я указал.
Yandex
Объявления
13.07.2016, 01:52     Отправка команда на HID
Ответ Создать тему
Опции темы

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