zl程序教程

您现在的位置是:首页 >  系统

当前栏目

为Linux应用添加按键控制

Linux控制应用 添加 按键
2023-09-11 14:15:46 时间

关于Tina和AI-Demo的开发,可以先参考下面两篇博客:

Tina方案开发一探_tugouxp的专栏-CSDN博客1.编译,打包2.烧录:选择量产卡:烧录成功:3.将卡插入平台,BROM卡启动程序将加载SD卡中的固件,至于最终是卡量产,开始卡启动,则取决于固件本身的定义。4.结束!https://blog.csdn.net/tugouxp/article/details/119413357?spm=1001.2014.3001.5502V833/V831目标检测demo方案开发_tugouxp的专栏-CSDN博客项目需要在V833平台上开发一个人形检测的功能用例, 大概框架如下:一路sensor图像经过四路VIPP缩放操作后,送给四个不同应用,分别是H265编码存盘,LCD预览以及以及NPU人形检测,还有一路照片抓拍。NPU人形检测原理如下:NPU线程抓取352*198(VIPP支持的输出大小)像素,格式为NV21的YUV原始帧数据,喂给人形检测算法网络,得到类别和坐标数据后,反馈给VIPP1 预览通道画框。这样的设计方案包含一个问题,NPU这边获得帧并进行网络推理得到坐标结果并反馈给VI.https://blog.csdn.net/tugouxp/article/details/120328633?spm=1001.2014.3001.5502

之前的 ai-demo 输入输出控制做的比较粗糙,demo的启动和退出是通过控制台输入启动命令以及ctrl+c的方式进行的.体验比较差,比较好的一种方式是通过demo板的按键进行事件捕获和处理。接下来就介绍tina上是如何实现的。

对于Linux上的输入输出,内核是有一套厚厚的框架的,但是暴露给用户态的非常简单,只有/dev/input/目录下的几个设备节点而已。

比如,在ubuntu上,mount,keyboard, joystick等外设对用户程序来讲就是/dev/input/下的这几个设备节点而已:

Tina也是Linux,所以这方面没有区别:

经过测试,在tina上./dev/input/event1节点是对应keyboard gpadc按键的设备节点,在ai-demo中创建一个独立的keyboard线程,轮询keyboard获取按键信息:

keyboard线程处理

根据消息源的不同,按键事件分成很多种,在linux内核中的分类如下,上面kb线程的处理也完全按照这几个事件分门别类的处理:

测试验证

运行ai demo,过程中不断按小键盘,输出如下,达到预期,接下来就可以定义应用的行为了~!

UBUNTU系统下的按键输入

UBUNTU上的输入设备有很多,我们用TREE命令找到具体的设备和设备节点之间的联系。

/dev/input/event4是键盘设备,我们验证一下:

鼠标设备是/dev/input/event3


结束~!