让Windows自动为你的设备安装串口鼠标驱动

偶然发现,如果你想自己做一些好玩的PC辅助设备,又不想写底层驱动,甚至不愿意用SendMessage控制鼠标,那么你还有一条路可以走,就是让Windows自动为你的设备安装串口鼠标驱动。

我做了个单片机系统,带USB转串口,今天,我在单片机运行着向串口发数据的程序时,将其USB插入PC上一个以前未曾安装过USB转串口驱动的USB口,有意思的事情发生了,Windows自动为我的单片机安装了串口鼠标驱动,我的鼠标开始满屏幕乱跑,还不时跳出右键菜单。经过重复试验,发现只要满足以下条件,Windows就会自动为你的设备安装串口鼠标驱动:

  • 单片机向串口发送的数据里带“M”
  • 将单片机的USB插入PC上一个以前未曾安装过USB转串口驱动的USB口
  • 插入时,单片机正不断发送数据,似乎所有的波特率都可以(这点还不明白,难道系统会自动识别波特率?不然怎样认出“M”)
  • 有了这些东西,只要再知道串口鼠标的命令方式,就完全可以DIY一个只受你想象力限制的PC辅助设备!下面附上鼠标信息发送格式:

  • 初始化报告: 4DH(’M') 1字节 声明初始化结束 加电时发送一次
  • 移动、按钮: P1、P2、P3 3字节 反映按钮状态、移动方向和距离 移动或按钮操作时发送
  • 上述P1、P2、P3三个参数说明:
    P1_D7D6固定值01;D1D0=11本次鼠标移动包含左右移动分量;D3D2=11本次鼠标移动包含上下移动分量;D4=1目前鼠标右键呈按下状态;D5=1目前鼠标左键呈按下状态(D4D5=00则键呈释放状态)。

    P2_D7D6固定值00;其余六位表示一个有符号二进制数,反映左右移动量,大于0为向右移动,小于0为向左移动。

    P3_D7D6固定值00;其余六位表示一个有符号二进制数,反映上下移动量,大于0为向下移动,小于0为向上移动。

    例如:[6CH 02H 3AH](P1=6CH,P2=02H,P3=3AH)反馈出鼠标向右移动了2个单位,向上移动了6个单位,目前左键按下。

    我现在正计划着来做个很好玩的东东 :twisted:


    About this entry