|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.04.2013, 02:26 | #1 |
Регистрация: 16.04.2013
Сообщений: 3
|
c# USB кнопка
Здравствуйте. Пишу довольно необычную курсовую, у меня есть 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-устройством без необходимости перезапуска программы." Заранее благодарю за помощь. |
16.04.2013, 07:52 | #2 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
0x1D34
x0d
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
16.04.2013, 13:44 | #3 |
Регистрация: 16.04.2013
Сообщений: 3
|
Попробую немного упростить вопрос) Во второй библиотеке есть описание события, которе мне кажется нужно:
public void enableUsbBufferEvent(System.EventHa ndler eHandler) Член USBHIDDRIVER.USBInterface Как его правильно записать и куда?? |
16.04.2013, 14:21 | #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. |
16.04.2013, 14:37 | #5 |
Регистрация: 16.04.2013
Сообщений: 3
|
В микросиновской либе есть пример:
USBHIDDRIVER.USBInterface usb = new USBInterface("vid_06ba", "pid_5346"); То есть насколько я понял им нужно давать VID и PID именно в виде string, а не в int и hex) Вот насчет первой либы ваш совет может оказаться ценным, благодарю. Также вы не могли бы привести ваш код (пусть даже на другом языке) для примера? |
16.04.2013, 22:14 | #6 | ||
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
Цитата:
Цитата:
Чтение с HID через HID Library: Код:
Код:
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
||
05.11.2014, 20:15 | #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 |