串口指令操作键鼠方案(绝对鼠标)

芯片名称:CH9329

(丝印同上)

65593f076baf43e8b2dbce9894c325f0.png

通过串口发送指令数据,芯片将指令数据转化为键盘或鼠标操作行为的指令数据,并通过USB发送给被控制设备完成操作。


绝对鼠标操作串口数据帧:

a82e8de631e749fca960cd4041e34752.png

【1】:鼠标按键(左键 / 中键 / 右键)

b3169d0e31e543e8a7cd6f1b6bc45db3.png

例如:

按下左键是0000 0001,即0x01

 

【2】和【3】:鼠标X坐标值

假设屏幕横向分辨率为SX,要移动到X位置处:由X * 4096 / SX得到后,依次为低位、高位

例如:

在横向分辨率为1280的屏幕中,移动鼠标到100的位置是100 * 4096 / 1280 = 320 = 0x0140,则【2】是0x40、【3】是0x01

 

【4】和【5】:鼠标Y坐标值

假设屏幕纵向分辨率为SY,要移动到Y位置处:由Y * 4096 / SY得到后,依次为低位、高位

例如:

在纵向分辨率为1280的屏幕中,移动鼠标到200的位置是200 * 4096 / 1280 = 640 = 0x0280,则【4】是0x80、【5】是0x02

 

【6】:滚轮滚动齿数

0x00表示无滚动

0x01 - 0x7f 为向上滚动

0x81 - 0xff 为向下滚动

例如:

向上滚动1齿为0x01(越大齿数越多)

向下滚动1齿为0xff(越小齿数越多)

 

【7】:前面数据的累加和

由0x0f +【1】+【2】+【3】+【4】+【5】+【6】得到数据,建议用单片机程序计算补全。

例如:在分辨率为1280*1280的屏幕中,

鼠标移动到(1 , 1)处并按下左键的完整指令数据为:0x57、0xab、0x00、0x04、0x07、0x02、0x01、0x03、0x00、0x03、0x00、0x00、0x12,此处0x12 = 0x0f + 0x01 + 0x03 + 0x00 + 0x03 + 0x00 + 0x00

鼠标移动到(1280 , 1280)处的完整指令数据为:0x57、0xab、0x00、0x04、0x07、0x02、0x00、0x00、0x10、0x00、0x10、0x00、0x0c,此处0x0c = 0x0f + 0x00 + 0x00 + 0x10 + 0x00 + 0x10 + 0x00

注意:如果不发送按键的0x00指令数据,芯片会模拟一直按着上一份指令数据发来的按键


2024/10/24最后编辑;

如有帮助求点个赞!打赏什么的也不是不行、哼……