第一部分为模块(从机端);主要是模块连接并发送数据到 USB Dongle。
第二部分为 USB Dongle( PC)端;主要是 HID 设备的实现及根据接收到模块
的数据告诉 PC 对键盘或鼠标进行操作。
USB-HID 介绍:
HID 是 Human Interface Device 的缩写,由其名称可以了解 HID 设备是直
接与人交互的设备,例如键盘、鼠标与游戏杆等。
交换的数据存储在称为报表(report)的结构内,设备的固件必须支持 HID 报
表的格式。主机在控制与中断传输中传送与要求报表,来传送与接收数据。报
表的格式非常有弹性,可以处理任何类别的数据。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
、1. buf[0] = buttons; // 鼠标左右键
2. buf[1] = 0; // X 轴偏移量
3. buf[2] = 0; // Y 轴偏移量
4. buf[3] = 0; // Wheel 滑轮变化量
5. buf[4] = 0; // AC Pan 不符合 HIDAdvRemoteDongle 注释掉
if ( events & START_DEVICE_EVT )
2. {
3. //5s 启动 XY 轴周期报告发送
4. osal_start_timerEx( hidEmuKbdTaskId, MOUSE_X_EVT, 5000 );
5. osal_start_timerEx( hidEmuKbdTaskId, MOUSE_Y_EVT, 5000 );
6.
7. return ( events ^ START_DEVICE_EVT );
8. }
1. if ( events & MOUSE_X_EVT ) //鼠标 X 轴周期检测事件
2. {
3. uint8 buf[2];
4. int x;
5. int8 mouse_y;
6.
7. //X
8. buf[0] = HalI2CReadReg(0x01);
9. buf[1] = HalI2CReadReg(0x02);
10. x=(buf[0]<<8)|buf[1];
11. x>>=4;
12. if(x>600)mouse_y = 10;
13. else if(x<-600)mouse_y = -10;
14. else mouse_y = 0;
15.
16. if(mouse_y!=0)hidEmuKbdSendMouseReport(Mousebutton,0,mouse_y);
17.
18. if(Mousetime)osal_start_timerEx( hidEmuKbdTaskId, MOUSE_X_EVT,
Mousetime );
19. return ( events ^ MOUSE_X_EVT );
20. }
一周热门 更多>