Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 11.05.2015, 21:43  
JerryI
Временная регистрация
 
Регистрация: 05.05.2013
Сообщений: 75
Сказал спасибо: 20
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
JerryI на пути к лучшему
По умолчанию EZ-USB FX2LP в качестве HID клавиатуры

Добрый день, уважаемые.
Имеется контроллер USB от Cypress: CY7C68013A. В примерах нашел реализацию HID клавиатуры на нем:
Код:
      EZUSB_ReadI2C(BTN_ADDR,0x01,&buttons);	// Read button states
      buttons &= 0x0F;
      if ((oldbuttons - buttons) != 0)	//Change in button state
      {
         if (buttons & 1)	//Shift
            EP1INBUF[0] = 0;
         else
            EP1INBUF[0] = 2;

         if (buttons & 2)	//a
            EP1INBUF[2] = 0;
         else
            EP1INBUF[2] = 4;

         if (buttons & 4)	//b
            EP1INBUF[3] = 0;
         else
            EP1INBUF[3] = 5;

         if (buttons & 8)	//c
            EP1INBUF[4] = 0;
         else
            EP1INBUF[4] = 6;

			EP1INBUF[1] = 0;
			EP1INBC = 5;
      }
      oldbuttons = buttons;
   }
Код опрашивает кнопки и отправляет сообщение о нажатиях по USB. Все работает, но я никак не понимаю этот протокол общения клавиатуры с ПК.
Здесь он состоит из пяти байт:
1) Модификатор (shift, caps...)
2) Зарезервирован (всегда 0x00)
3) KeyCode 1
4) KeyCode 2
5) KeyCode 3
Тогда, к примеру, я хочу использовать 8 клавиш. Как мне в этом случае отправлять запрос? Как формируется код нажатия и отпускания клавиши?
Код:
	EP1INBUF[0] = 0x00;
	EP1INBUF[1] = 0x00;

		if (key) {
			EP1INBUF[2] = 0x1D;	//'z'
		} else {
			EP1INBUF[2] = 0x00;
			EP1INBUF[3] = 0x00;		
		}

    
	EP1INBC = 5;
В этом коде все замечательно работает с одной кнопкой. Причем, для кода отпускания мне приходится посылать нули в два байта (2,3), иначе она не отпускается.

Прошу вашей помощи, запутался. Возможно кто-то реализовывал протокол обмена HID устройства с ПК.
Реклама:
JerryI вне форума  
 

Закладки

Метки
hid, keyboard, usb, клавиатура, протокол
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
USB HID Keyboard Atmega8 snayperAlfa Proteus 12 24.02.2010 22:01
Питание USB устройств nml Делимся опытом 1 11.02.2010 14:06
AT90USB1287...Построение канала связи HID через USB AngelChik Микроконтроллеры, АЦП, память и т.д 1 25.07.2008 10:53
USB HID PIC18F4550 нужна помощь! tower2007 Микроконтроллеры, АЦП, память и т.д 0 17.04.2008 04:33


Часовой пояс GMT +4, время: 23:51.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot