按官方技术回答后修改键盘端的为
然后Dongle端为
打印数据
但电脑鼠标光标没有动作
按官方技术回答后修改键盘端的为
然后Dongle端为
打印数据
但电脑鼠标光标没有动作
您好,鼠标的报表描述符是写好在2.4GDongle中的,因此demo中的程序是以键盘作为USB接口0的一个HID键鼠复合设备。
其中,键盘端往接收器端发送数据的步骤如下:
1、找到send_buf这个结构体,send_buf.report_id=0x05(程序中定义的Mouse数据包头ID号),例程的报表中鼠标是4字节数据,分别定义为button、x、y、wheel四个字节,将对应的四字节数据填入send_buf.data中,此时的send_buf包填充完毕。
2、调用int ret = rf_port_load_data(RF_TYPE_CMD_KEY, (uint8_t *)&send_buf,sizeof(rf_data_t) - sizeof(send_buf.data) + key_len);将数据通过tmos_memcpy(rf_buf_send.user_data, data, len);将data填充到rf_buf_send.user_data里面。
3、紧接着,搜索rf_port_rcv_cb这个回调函数,往下翻有一个rf_send((uint8_t *)&rf_buf_send, sizeof(struct rf_trans_buf) -sizeof(rf_buf_send.user_data) + rf_buf_send.user_len);此时调用了这句后数据会被发送到dongle端。(发送失败会重传,程序中有做处理,您自己看下)
4、视角来到Dongle端程序,搜索RF_2G4StatusCallBack回调函数,键盘端发来的数据会进入到Dongle的RX_MODE_RX_DATA的case中,进入rf_trans_rcv_cb所对应的回调函数rf_port_send_request_cb中,此时进入RF_TYPE_CMD_KEY的case中再进入get_data_cb所对应的回调函数get_data_deal中,通过OnBoard_SendMsg写入USBID给tmos发送消息通知,再搜索USB_ProcessTMOSMsg,对应KEY_MESSAGE的case中tmos_set_event(USBTaskID, USB_IN_EVT)启动USB上报事件,最终进入DevEPn_IN_Deal函数执行USB中断端点上传鼠标数据,由第一点中传来的Mouse的report_id=5,进入else if (report_id == MOUSE_ID)中完成上传。
这是一个发送数据和接收数据处理的整体流程,仅供参考。
Dongle端能打印收到的数据,但4位数据格式首位是report_id,电脑端没有出现鼠标光标和移动
您好,看下usbdesc.c文件中HID_ReportDescriptor2这个报表描述符中往下翻找到图中这里,看下鼠标报表描述符这里0x85后面写的是0x05还是0x06,如果是0x06就改为0x05
是的,昨晚找到了,弄好了,官方反应真快,