Arduino USB HID ацп

Тема в разделе "Микроконтроллеры AVR", создана пользователем rewan871, 27 окт 2017.

  1. rewan871

    rewan871 Нерд

    Нужно скопировать сигналы от HID USB ацп.
    Считал сигналы с устройства программой "Device Monitoring Studio", вот что выдает:
    Код (Text):
    154329: Report Arrived (UP), 2017-10-24 17:42:09,6648141 +0,0009869
    Report Name:Unknown
    Unknown[0..255]: 77
    Unknown[0..255]: 0
    154330: Report Arrived (DOWN), 2017-10-24 17:42:09,6648265 +0,0000124
    Report Name:Unknown
    Unknown

    154331: Report Arrived (UP), 2017-10-24 17:42:09,6657568 +0,0009303
    Report Name:Unknown
    Unknown[0..255]: 77
    Unknown[0..255]: 0
    154332: Report Arrived (DOWN), 2017-10-24 17:42:09,6657686 +0,0000118
    Report Name:Unknown
    Unknown

    154333: Report Arrived (UP), 2017-10-24 17:42:09,6668150 +0,0010464
    Report Name:Unknown
    Unknown[0..255]: 78
    Unknown[0..255]: 0
    154334: Report Arrived (DOWN), 2017-10-24 17:42:09,6668274 +0,0000124
    Report Name:Unknown
    Unknown

    154335: Report Arrived (UP), 2017-10-24 17:42:09,6678198 +0,0009924
    Report Name:Unknown
    Unknown[0..255]: 78
    Unknown[0..255]: 0
    154336: Report Arrived (DOWN), 2017-10-24 17:42:09,6678414 +0,0000216
    Report Name:Unknown
    Unknown
    Как я понял работает так:
    1) открывается передача данных
    2) передается только 2 байта (название переменных и название устройства не передается)
    3) закрывается передача данных


    Состояние АЦП передается каждую миллисекунду.
    Передача длится 20 микросекунд.

    На arduino это можно повторить на arduino nano atmega32u4 (заказал, пока идет).

    Нашел в интернете описание того как сделать из arduino клавиатуру и мышку, но это не совсем то, нужно передавать данные точно в таком же виде.
    Вот что передает программа если считывать данные с мышки:
    Код (Text):
    000179: Report Arrived (UP), 2017-10-27 11:40:30,4929296 +0,0079617
    Report Name:Mouse
    BUTTON1 pressed: 0
    BUTTON2 pressed: 0
    BUTTON3 pressed: 0
    BUTTON4 pressed: 0
    BUTTON5 pressed: 0
    X[0xf801..0x7ff]: 0xfd
    Y[0xf801..0x7ff]: 0x0
    Wheel[-127..127]: 0
    AC Pan[-127..127]: 0
    000181: Report Arrived (UP), 2017-10-27 11:40:30,5009308 +0,0079666
    Report Name:Mouse
    BUTTON1 pressed: 0
    BUTTON2 pressed: 0
    BUTTON3 pressed: 0
    BUTTON4 pressed: 0
    BUTTON5 pressed: 0
    X[0xf801..0x7ff]: 0xfc
    Y[0xf801..0x7ff]: 0x0
    Wheel[-127..127]: 0
    AC Pan[-127..127]: 0
     
     
  2. rkit

    rkit Гуру

    Ну так возьмите код для клавиатуры-мышки, и адаптируйте, чтобы он вам передавал данные в точно таком же виде.
     
  3. rewan871

    rewan871 Нерд

    Очень полезный ответ...
     
  4. rkit

    rkit Гуру

    А что вы хотите? Чтобы кто-то сделал все за вас? Чтобы кто-то научил вас программировать на форуме за пять минут?
     
  5. rkit

    rkit Гуру

    Вы ничего не просили. У вас все сообщение - утверждение.
     
  6. rewan871

    rewan871 Нерд

    Как думаешь, то что написано в дампе, а именно Unknown, это программа не смогла определить название устройства или это так задали имя?
     
  7. rkit

    rkit Гуру

    Это не название, а дескриптор протокола. И программа не смогла определить. да.
     
  8. rewan871

    rewan871 Нерд

    посоветуйте пожалуйста программу которая сможет определить
     
  9. rkit

    rkit Гуру

    Все коды ваша программа показывает. А текстовое представление, сопоставленное с этими кодами, вам совершенно ни к чему. Можете для себя называть хоть табуретом свой прибор, это ничего не изменит.
     
  10. rewan871

    rewan871 Нерд

    Данные от устройства идут в программу, программа их обрабатывает. Думаете программе все равно будет?
     
  11. rewan871

    rewan871 Нерд

    Я просто не совсем понимаю. То, что я находил в интернете, это описание как из ардуины сделать клавиатуру или мышку. Они передают название устройства перед передачей информации типа mouse или keyboard. Как изменить эти названия
     
  12. rkit

    rkit Гуру

    Читаете документацию по USB HID, открываете исходники библиотеки HID, пишете свой вариант, на основе keyboard.h. Это если вы умеете программировать. Если не умеете, то вам лучше обратиться к профессионалам. Это не что-то, чему можно научиться за вечер-другой. Чтобы работать с такого рода вещами нужен не один год опыта.
     
    Последнее редактирование: 27 окт 2017
  13. b707

    b707 Гуру

    rewan871, попробуйте четче сформулировать, что вы хотите.

    rkit прав - вместо Unknown можно написать что угодно, но в принципе это абсолютно не важно. Содержания передаваемых данных это никак не изменит. Если та программа, куда вы собираетесь засовывать данные, умеет работать с этим форматом - она примет и "Unknown", если нет - вы хоть что напишите, у вас ничего не выйдет.
    Образно говоря, если вы хотите заправлять жигуль солярой - вам надо менять движок, прилепить на капот слово "Камаз" - недостаточно :) Вы же сейчас хлопочете о шильдике и сути проблемы вообще не видите.
     
  14. rewan871

    rewan871 Нерд

    Получается, что этот код будет работать?
    Код (C++):
    #include <Keyboard.h>

    void setup() {

      Keyboard.begin();
    }

    void loop() {
        Keyboard.write(0x00);
        Keyboard.write(0x00);
        delay(1);
    }
     
  15. rkit

    rkit Гуру

    Скорее всего нет