关于三模键盘怎么改成2.4G鼠标

按官方技术回答后修改键盘端的为

image.png


然后Dongle端为

image.png

打印数据

image.png


但电脑鼠标光标没有动作



您好,鼠标的报表描述符是写好在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,电脑端没有出现鼠标光标和移动


image.pngimage.png


您好,看下usbdesc.c文件中HID_ReportDescriptor2这个报表描述符中往下翻找到图中这里,看下鼠标报表描述符这里0x85后面写的是0x05还是0x06,如果是0x06就改为0x05image.png


是的,昨晚找到了,弄好了,官方反应真快,02166B09.png


只有登录才能回复,可以选择微信账号登录