Программа Сервисный Центр
0

10-кнопочная USB HID клавиатура. Часть 2 - ПО


Часть 1 – Схема и конструкция Как отмечалось в первой части статьи, за основу конструкции были взяты примеры приложений, которые предназначены для использования с отладочным набором Low Pin Count Development Kit от компании Microchip. Этих примеров и демонстрационных приложений для разработки USB устройств очень много, для нашего устройства был выбран пример реализации USB HID клавиатуры. Для разработки программного обеспечения, а также для внесения корретив, переназначения сочетаний клавиш необходима интегрированная среда разработки MPLAB и компилятор С18, которые доступны для скачивания на официальном сайте компании. Программы микроконтроллера из примеров компании Microchip написаны таким образом, что ее можно использовать для различных PIC микроконтроллеров со встроенным USB интерфейсом. Единственное, что понадобится, – это скорректировать код функции Keyboard(). Данная функция вложенная и условно расположена так: ProcessIO() -> Keyboard() -> Check if IN endpoint is ready -> Check Switches ->Send Data -> ProcessIO() Основной момент в программе – это поверка состояния кнопок, заполнение буфера данных соответствующими данными и отправка их по USB в компьютер. Затем цикл повторяется. В буфер данных записываются 8 байт, которые имеют определенные значения. В программе эти 8 байт обозначены как hid_report_in[0] - hid_report_in[7]. Рассмотрим их назначение. hid_report_in[0]= – это байт модификатора, он содержит информацию о состоянии функциоанльных клавиш (Alt, Ctrl, Shift, Win). 8 битное значение, которое характеризует нажатие этих кнопок по отдельности, или одновременное нажатие нескольких (напрмер Ctrl+Shift). Назначение битов в байте hid_report_in[0]
Бит  Соответствующая
клавиша 
0 Левый Ctrl
1 Левый Shift
2 Левый Alt
3 Левая Win
4 Правый Ctrl
5 Правый Shift
6 Правый Alt
7 Правая Win
Например, запись: hid_report_in[0]=4 означает, что байт имеет значение 4 (десятичное число), и это соответствует нажатой кнопке Alt (бинарный код 100);
hid_report_in[0]=7 означает, что байт имеет значение 7, и это соответствует нажатым кнопкам Ctrl+Alt+Shift (бинарный код 111). Следующий байт hid_report_in[1]=0, всегда равный 0, зарезервирован. Байты hid_report_in[2] … hid_report_in[7] предназначены для записи и отправки по USB интерфейсу кодов клавиш. Т.е. одновременно может эмулироваться нажатие до 6 клавиш, и данные отправляются как единое целое. Коды клавиш для USB HID устройств можно взять в документе HID Usage Tables, который доступен для скачивания в разделе загрузок. Такая реализация позволяет эмулировать и посылать данные (коды) о нескольких одновременно нажатых кнопках. К примеру, Alt+Пробел+n. Также, иногда потребуется эмулировать нажатие комбо-клавиш, наприер Alt+Пробел и затем клавиша n. Для такой реализации в программном обеспечении нужно использовать байты данных NextModKey and NextKey и затем установить флаг AnotherFlag. В этом случае, после посылки первой команды, отправится следующая с кодом данной последней клавиши. Для прошивки микроконтроллера можно использовать внешний программатор или предусмотреть установку разъема для внутрисхемного программирования установленного микроконтроллера. Загрузки Документ HID Usage Tables – скачать
Принципиальная схема, рисунки печатной платы, исходные коды – скачать
HEX файл для прошивки микроконтроллера – скачать
Фалы проекта для MPLAB – скачатьНа английском языке: Quick Key Adapter, 10 Button HID Keyboard. Part 2 - Firmware

По материалам сайта www.rlocman.ru

 
 
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
 
Обратная связь

Наши партнеры

 

Опросы

Есть ли справедливость в жизни?
Конечно есть, уверен!
Вроде как должна быть, но...
Затрудняюсь ответить...
Какая справедливость? О чем Вы?
Эх.., нет правды на свете!

 

Облако тегов

Требуется для просмотраFlash Player 9 или выше.

Показать все теги
 

Календарь публикаций

«    Март 2017    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
 

Архив новостей

Март 2017 (51)
Февраль 2017 (50)
Январь 2017 (42)
Декабрь 2016 (45)
Ноябрь 2016 (42)
Октябрь 2016 (34)
 
Наверх Сервисные мануалы Даташиты Ремонт LCD, ЖК телевизоров LG Samsung Скрипт программы "Сервисный центр"