这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 课程三:虚拟键盘枚举+手势翻页!

共2条 1/1 1 跳转至

课程三:虚拟键盘枚举+手势翻页!

菜鸟
2024-07-05 12:03:18     打赏

 

首先,感谢EEPW提供的这次学习机会!

 

课程二中,我们已经实现了利用PAJ7620U2模块,实现9种手势的识别,并将识别结果打印到串口COM3。

要实现翻页笔功能,我们只要识别出手势后输出串口打印的同时,向模拟不通的按键就可以了。这就需要本节课的USBHIDKeyboard虚拟键盘枚举功能。

控制PPT我们知道,一般用到的快捷键如下几个,我们映射到不同的手势:

(1)   上一页(PgUp)      -->  向上手势

(2)   下一页(PgDown) -->  向下手势

(3)   全屏播放(F5)   -->  顺时针

(4)   退出全屏(ESC) -->  逆时针

 

  先复习下第二课:https://forum.eepw.com.cn/thread/383138/1

 

一.硬件准备工作

    在第二节硬件的基础上,本节课需要添加虚拟usb键盘,所以需要额外的一根usb typec数据线,连接开发板的另一个usb口到电脑上。

    也就是说,之前的usb口用于debug和com3串口打印,新连接的usb口来模拟一个插入到电脑的虚拟键盘。整个结构如下图:

图片0.硬件接线图.jpg


二. 软件配置

    在课程2的基础上,本节任务是增加USBHIDKeyboard功能。

    打开课程2的CubeMX配置文件,需要利用ThreadX操作系统的功能实现USB HID 虚拟键盘功能。对于ThreadX操作系统本人并不熟悉,主要参考了各位大佬的配置方法,链接如下:https://forum.eepw.com.cn/thread/382689/1

 

1.    设置系统的时基Timebase

因为要引入RTOS,它使用了SysTick作为时基,因此HAL库就不推荐共用SysTick共用时基。更改HAL时基为TIM6定时器:

2.    打开USB外设,并在NVIC中设置中断优先级

3.    启用ThreadX操作系统:

 

4.    配置ThreadX的usb库USBX:

5.    确认系统时钟

6.    配置并导出代码

三、代码部分

    这部分主要是修改自动生成的USB虚拟键盘代码,实现根据识别出的手势值,发送对应的按键值给电脑端。生成的USBKeyBoard代码,主要在ux_device_keyboard.c/.h 和 app_usbx_device.c/.h这两对文件中。下面我们来一个个看。

只列出主要的修改的地方,完整的工程代码,打包放在文末,可直接下载。

1.    修改ux_device_keyboard.c代码

在对应的头文件中,需要导出hid_keyboard变量的声明给后续使用:

 

2.    修改app_usbx_device.c代码:

在UINT MX_USBX_Device_Init(VOID *memory_ptr)和static VOID app_ux_device_thread_entry(ULONG thread_input)函数中增加代码:

编写自定义函数:static VOID usbx_hidkeyboard_thread_entry(ULONG thread_input), 具体代码请文末下载:

编写自定义函数:VOID USBX_APP_Device_Init(VOID), 具体代码文末可下载:

这样整个虚拟键盘的枚举,以及检测到手势后的输出按键值,功能都完成了。 编译下载,我们开始测试!

 

四 测试结果

可以看到手势的输出到COM3口,同时检测到手势输出按键值控制ppt

 

翻页笔效果.png

看下测试结果(b站视频), 效果还是非常不错的!

https://www.bilibili.com/video/BV1SH4y1F7Cf?p=4

 

附完整工程源代码:  KeyboardDemo.zip

-----------------------------------

项目完结,撒花~~#



专家
2024-07-12 07:47:02     打赏
2楼

谢谢分享


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]