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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Оператор while и дробные числа? http://www.cyberforum.ru/cpp-beginners/thread1779184.html
Учусь по специальности машиностроение. Работаю над программой для расчета асинхронного двигателя, но возникла проблема: я в циклах while обозначил условия, что переменная h должна быть не меньше 50 и...
C++ Вычислить и вывести коэффициенты многочлена Есть код, корректно выполняющий задачу, просьба прокомментировать, совсем путаюсь, не могу разобраться в программе. #include <iostream> #include <time.h> using namespace std; long int p(int x,... http://www.cyberforum.ru/cpp-beginners/thread1779150.html
C++ Разработать класс на основе string для обработки строк заданным образом
нужно описать класс СТРОКА на основе типа STRING со след.методами: 1. Нумеровать строку добавляя в начало строки текстовое представление номера, переданного как параметр. 2. Натуральное число...
Преобразование типов с использованием dynamic_cast C++
Создать иерархию классов Grandpa-> Daddy-> Son. o Класс Grandpa имеет виртуальную функцию Sleep(). o Класси Daddy та Son имеют виртуальные функции Walk(). o Клас Son имеет виртуальную функцию ...
C++ Найти с помощью Set и Multiset все такие цифры, которые не встречаются в двузначных числах http://www.cyberforum.ru/cpp-beginners/thread1779025.html
Найти все такие цифры, которые не встречаются в двузначных числах. #include <iostream> #include <fstream> #include <vector> #include <algorithm> #include <set> #include <iterator> using...
C++ Сдвиг двумерного массива на n элементов Друзья перепробовал все.. ответ близок.. делаю все for'ами, скидывать что я писал не буду потому что они выдают у меня дичь. Я пытался копировать заданный массив в новый массив, только уже с порядком... подробнее

Показать сообщение отдельно
Daemon2017
4 / 4 / 1
Регистрация: 07.01.2013
Сообщений: 101

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

11.07.2016, 18:58. Просмотров 289. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru