![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 16.04.2013
Сообщений: 3
|
![]()
Здравствуйте. Пишу довольно необычную курсовую, у меня есть USB кнопка(при подключении отображается как HID устройство) и мне нужно сделать так, чтобы при нажатии на нее выполнялись определенные действия... То есть в моем понимании мне нужен event нажатия на эту кнопку, как например button в WinForms. Для этого я нашел 2 библиотеки на С# для работы с USB устройствами, это HID USB Libary, и ее более сокращенная версия: (http://microsin.net/programming/PC/h...et-csharp.html) . С первой у меня вообще ничего не вышло, я даже не смог загнать Vendor ID и Product ID, так библиотека просит их в виде int, а на моей кнопке помимо цифр в ID есть и буквы. Со второй библиотекой я смог написать лишь пару строк и дальше не представляю как писать event(по ссылке выше есть примеры кода лишь на VisualBasic и скопипастить event оттуда не удалось).
Вот та пара написанных мною строк: USBHIDDRIVER.USBInterface UsbButton = new USBInterface("vid_1D34", "pid_000D"); UsbButton.Connect(); Так же не совсем понимаю как должна вести себя программа при отсоединении кнопки и ее дальнейшем присоединении...В статье(ссылка выше) есть явный намек что она этого делать не умеет, либо я просто не понял этого момента) Привожу цитату: "В Интернете можно найти очень похожий аналог библиотеки, описанной в этой статье, только не в виде DLL, а в виде файлов исходного кода C# (модулей .cs) [3]. Библиотека имеет класс UsbLibrary.UsbHidPort, в котором сосредоточен весь интерфейс работы с устройством USB HID. Возможностей у этой библиотеки больше - например, есть очень удобные события подключения и отключения устройства USB, благодаря чему легко реализовать прозрачную работу с устройством USB HID и восстанавливать обмен данными с USB-устройством без необходимости перезапуска программы." Заранее благодарю за помощь. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
![]()
0x1D34
x0d
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
![]() |
![]() |
![]() |
#3 |
Регистрация: 16.04.2013
Сообщений: 3
|
![]()
Попробую немного упростить вопрос) Во второй библиотеке есть описание события, которе мне кажется нужно:
public void enableUsbBufferEvent(System.EventHa ndler eHandler) Член USBHIDDRIVER.USBInterface Как его правильно записать и куда?? |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
![]()
...попробую немного 'упростить' (расширить) ответ: вы жаловались, что у вас не получается загнать в микросиновскую либу идентификаторы вашего устройства, ибо она требует в int-формате, а ваши идентификаторы содержат и символы. Так вот - ваш идентификатор записан в hex-формате и записывать нужно без указания 'vid_' or 'pid_', а просто запись самих значений идентификаторов либо в hex в виде 0x (для СИ), $ для Delphi, так как я уже подсказал выше. Ферштеен?
Что касаемо работы с HID-устройствами, то с ними я вообще работаю через вызовы SetupAPI над системным драйвером hid, впрочем и проект JEDI или микросиновская или LUFA-либа тоже подойдут. Удачи. ====================== ...что касаемо отработки потери соединения-связи при физическом отсоединении устройства и дальнейшем его присоединении. Лично я использую скан ветки usb-устройств (опять же, SetupAPI), при отсутствии делается закрытие файла (с устройством работаем через CreateFile) и при появлении гаджета, делаем коннект.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation Последний раз редактировалось raxp; 16.04.2013 в 14:28. |
![]() |
![]() |
![]() |
#5 |
Регистрация: 16.04.2013
Сообщений: 3
|
![]()
В микросиновской либе есть пример:
USBHIDDRIVER.USBInterface usb = new USBInterface("vid_06ba", "pid_5346"); То есть насколько я понял им нужно давать VID и PID именно в виде string, а не в int и hex) Вот насчет первой либы ваш совет может оказаться ценным, благодарю. Также вы не могли бы привести ваш код (пусть даже на другом языке) для примера? |
![]() |
![]() |
![]() |
#6 | ||
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
![]() Цитата:
Цитата:
Чтение с HID через HID Library: Код:
Код:
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
||
![]() |
![]() |
![]() |
#7 |
Регистрация: 06.04.2014
Сообщений: 3
|
![]()
Здравствуйте! подскажите, с помощью библиотеки Lufa было реализовано стандартное устройство GenericHID. На программу пытаюсь написать с помощью библиотеки USBLibraryC#. На основе этой библ. еще написана программка Sniffer, в этой программе у меня получается передавать и принимать данные. Но вот меня смущает то, что при нажатии кнопки Ок начинается непрерывный прием данных, который длится все время пока устройство подключено к ПК. Такое может быть из-за того что конечные точки типа Interrupt? Если менять параметр конечной точки, кот именуется PollingIntervalMS, то сразу становится заметно изменение частоты вывода принятых данных в сниффере. Как думаете надо сделать другой тип конечной точки? Я попытался еще порыться в исходниках программы Sniffer чтоб найти методы передачи и отправки данных, но так ничего и не нашел. Полазив по форумам нашел как отправить данные микроконтроллеру
Код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Возможно ли соединить 2 компа кабелем USB-USB? | Ghost3 | Компьютерное железо | 21 | 06.08.2014 09:22 |
Кнопка | Vetaluy | Microsoft Office Excel | 2 | 17.05.2011 00:03 |
кнопка | prostac | Помощь студентам | 2 | 23.09.2010 20:31 |
mini USB на USB | viks1 | Компьютерное железо | 5 | 07.12.2009 23:31 |