用GDK3开发神奇的幽灵鼠标

目标

把GDK3开发成一个特殊的鼠标设备,自动发送鼠标事件,这时从用户的角度看:电脑的鼠标像幽灵一样在屏幕上自己移动,非常之有趣。

思路

修改GDK3中运行的程序,让GDK3自动发送移动鼠标的命令,并使用其他主机测试GDK3的发送行为。

开发过程

  • 修改代码包

    1.建立本项目的项目文件夹,并把项目需要用到的源码复制过来。

    建立项目工作目录

    2.编写此项目的Makefile文件。

    编写注意事项:

    一般来说每个.h文件都对应着与其同名的.c文件,当某个源文件引入.h文件时,在Makefile中也要引入对应的.c文件。

    但是某些文件之间可能存在依赖关系,这时一定要注意引入文件的先后顺序。

    编写完Makefile之后,开始正式编译程序(注意:输入路径时要根据自己文件的位置,下面是示例操作)
  • 编译操作

    1.双击打开MSYS2

    2.设置工具链的路径

    export PATH=/d/gedu_work/GNU/bin/:$PATH

    3.切换到gemice3项目所在的目录(因为要编译gemice3文件夹下的代码,因此要切换到gemice3文件夹下的代码)

    cd /d/gedu_work/gdk3/sdk/src/gemice3/

    4.输入make命令进行构建

    make

    出现以下结果就算编译成功

    编译成功后,用Nanocode和挥码枪将程序烧录到GDK3上。(烧录操作详情可以参考 GDK上手系列之三)
  • 烧录操作

    1.输入下面的命令将程序烧录到GDK3上(注意:文件的路径要根据自己文件实际放置的位置,下面是示例操作)

    !program D:\\gedu_work\\gdk3\\sdk\\src\\gemice3\\gemice.hex

    2.输入 reset 重启 GDK3

    !reset

    注意:GDK3的USB2要连接电脑主机 (此项目使用USBD控制器设备,也就是GDK3上的USB2口)
  • 测试操作

    1.测试GDK3运行该程序时,是否可作为USB设备被主机识别。

    打开usbview软件,观察主机接入GDK3的USB端口。(usbview 是一个usb设备查看器,能够对系统中全部的USB设备进行枚举,可以查看每个设备的详细信息)。

    2.确定识别成功后,修改程序的鼠标发送行为。


    3.修改完成后 -> 重新编译 -> 重新烧录 -> 重新运行

    4.观察结果,点击下面链接,观看幽灵鼠标测试成功视频。

http://c.nxw.so/83wR3

此时并没有移动鼠标,但鼠标自己在移动,这说明GDK3在自动发送鼠标移动的命令,并且当前电脑主机可以接收并识别GDK3的命令。至此,项目测试成功!
我们也可以在这个鼠标自行移动的基础上,开发其他有趣好玩的项目,例如让鼠标画一个爱心❤,或者让键盘自己打字,从而让GDK3成为真正的幽灵。是不是很棒呢?

总结:

编译阶段遇到了许多错误,包括:文件缺失、变量未定义、变量重定义……突然从IDE的一键编译到自己开始编写编译命令,突然出现那么多报错。突然想放弃了,然后请教了老师和师兄。

看到师兄的回答,我顿似醍醐灌顶。是的,使用IDE时遇到变量未定义的错误,解决办法是引入变量所在的文件,而使用gcc和make时,这个错误依然是这样解决,更何况编译器的报错都是简单直接的英文,自己好好分析下是可以理解的。有错误就有解决办法,按照师兄的指点,我开始一条一条的解决,果然,成功编译!
编译成功之后,我一直测试也没有成功。后来是张老师帮我找到了问题,原来:最开始引入源码的时候,我以为是完整健全的代码,可实际上引入的是已经被我修改过的代码(源码中好多功能和逻辑都不通了),我应该反思:不可以随处乱加代码。而且如果要修改某段源码时,最好是留有备份,以便事后的恢复和还原。

根据自己的错误,我写了一篇关于makefile详情的博客,大家如果有需要的话,可以点击下面的链接去参考。

http://t.csdn.cn/AZqT7

最后:纸上得来终觉浅,绝知此事要躬行。干等解决不了问题,要有明确的目标和计划并对此付出行动!

作者:zuoyingying  创建时间:2022-12-19 09:24
最后编辑:李宜桐  更新时间:2024-05-24 18:52