之前的 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