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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Оператор while и дробные числа? http://www.cyberforum.ru/cpp-beginners/thread1779184.html
Учусь по специальности машиностроение. Работаю над программой для расчета асинхронного двигателя, но возникла проблема: я в циклах while обозначил условия, что переменная h должна быть не меньше 50 и не больше 250, иначе её ввод повторяется до тех пор пока не будет удовлетворять условиям. Циклы работают, до тех пор пока я не в вожу дробные числа, например 49.9, тогда они замыкается в...
C++ Вычислить и вывести коэффициенты многочлена Есть код, корректно выполняющий задачу, просьба прокомментировать, совсем путаюсь, не могу разобраться в программе. #include <iostream> #include <time.h> using namespace std; long int p(int x, int* V, int N, int mul = 1, int current = 0) { if (current < N - 1) return (x + mul*V)*p(x, V, N, mul*V, current + 1); http://www.cyberforum.ru/cpp-beginners/thread1779150.html
C++ Разработать класс на основе string для обработки строк заданным образом
нужно описать класс СТРОКА на основе типа STRING со след.методами: 1. Нумеровать строку добавляя в начало строки текстовое представление номера, переданного как параметр. 2. Натуральное число (n<100) означающие некоторую цену в копейках, например 317,2002, 100 и пр. Формировать текстовую строку, выраженную в рублях и копейках. (3 руб.17 коп.)
Преобразование типов с использованием dynamic_cast C++
Создать иерархию классов Grandpa-> Daddy-> Son. o Класс Grandpa имеет виртуальную функцию Sleep(). o Класси Daddy та Son имеют виртуальные функции Walk(). o Клас Son имеет виртуальную функцию Play(). Создать массив указателей на базовий класс. Написать глобальную функцию, которая получает массив указателей на объекты и для каждого объекта вызываетправильний набор виртуальных методов. ...
C++ Найти с помощью Set и Multiset все такие цифры, которые не встречаются в двузначных числах http://www.cyberforum.ru/cpp-beginners/thread1779025.html
Найти все такие цифры, которые не встречаются в двузначных числах. #include <iostream> #include <fstream> #include <vector> #include <algorithm> #include <set> #include <iterator> using namespace std; ifstream in ("input.txt");
C++ Сдвиг двумерного массива на n элементов Друзья перепробовал все.. ответ близок.. делаю все for'ами, скидывать что я писал не буду потому что они выдают у меня дичь. Я пытался копировать заданный массив в новый массив, только уже с порядком нужным учитывая сдвиг.. короче если кто поможет то условие задачи таково. Задача Создайте двухмерный массив. Заполните его случайными числами и покажите на экран. Пользователь выбирает... подробнее

Показать сообщение отдельно
Daemon2017
 Аватар для Daemon2017
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 99
11.07.2016, 18:58     Отправка команда на HID
Здравствуйте!

Столкнулся с проблемой: нужно работать с устройством через 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?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru