SEP4O2O在Linux下实现动作控制MP3
作的切换必然带有前后动作的变化,记忆之前的动作就可以判断出有无动作切换。这样的动作识别方法比较简单且容易实现,如果要实现更为精确的识别,则需要对算法进一步优化。图2为右摇时AD转换器所得到的结果。图3为前后左右摆动数据。
在判别动作后,通过串口通信协议,发送双办约定的动作ID,具体见表l
通过串口协议,核心板也可以对传感器和单片机进行一定的控制,包括传感器灵敏度调节,锁定休眠功能,使得后期的测试开发更加的方便。
2.3MP3控制
Linux操作系统作为平台,其良好的系统可定制、可移植性使得其在嵌入式领域占有重要的地位。Linux有很多好的进程通信机制,如内存共享、管道、多线程、信号等,这里选择信号作为控制通信的桥梁。利用Linux内部完整的串口驱动程序可以很轻松地通过在串口的软中断接收程序中发射信号给指定的程序,也就是播放器程序,然后播放器程序接收并判断信号类型,给相应控制全局变量赋与相应的控制值,使得介入控制变得可能。控制使用的是播放器自带的机制,使得更加地稳定可靠。使用Madplay作为MP3播放软件,其默认的控制是通过终端键盘来实现的。在设计时为了达到用动作产生的信号量来控制播放,同时不去大量修改Madplay的程序源码,可以通过截断播放器与键盘的联系,与串口连接上,这样就可以基本不用修改上层的机制就能够控制整个播放器的动作。
2.4MP3播放
MC9S08QG8与SEP4020之间通过串口来进行通信。
基本的串口操作原则是先保存串口原始的参数,然后再设置程序所需要的参数,程序结束后恢复现场。串口一般操作如下:
串口操作需要的头文件
串口软中断设置,填充SIGIO结构体,分配相应中断函数:
在操作系统中加入自动播放脚本,使得系统在开机时完成搜索MP3文件,建立播放列表,启动Madplay播放器等操作。脚本代码如下:
动作发生时MC9S08QG8向SEP4020发送一个动作信号,然后SEP4020中的Linux内核就会发送一个SIGIO(串口信号)给各个用户进程。Madplay生程捕捉该信号,并且读取串口上的消息,用以判断动作的形式。在Madplay程序中需要加入两个模块。第一个模块用于读取串口上的消息,具体实现方法是打开并读取串口设备文件/dev/ttySl来获取消息,然后按照设定会从设备上读到4种串口信号,对应4个ASCII字符“L,R,U,D”分别对应四种不同的动作;第二个模块是响应信号的处理函数,一旦Linux内核接收到SIGIO串口信号,Madplay进程就进入软中断读取/dev/ttySl上的串口消息。甫一判断出动作,Madplay就用kill函数向本进程发送相应的信号来控制播放。
3总结
以下是一些改进的建议:作为手持式设备,动作控制MP3对于能耗的要求比较高,所以设计时必须考虑多使用一些低功耗的器件替代高功耗的器件。动作控制的MP3在运动中是受限制的,MP3的判断会受到比较大的干扰。所以如果动作采样方法和动作判断算法难以有很大的改进,为方便继续使用应当考虑给MP3加上其他的控制方式,暂时取代动作控制。
控制 MP3 动作 实现 Linux SEP4O2O 相关文章:
- μC/OS-II下通用驱动框架的设计与实现(07-23)
- DSP和PBL3717A构成的步进电机的控制系统(04-01)
- 基于DSP的新型弹载控制计算机(04-05)
- 基于DSP的谐波控制器的研制(04-09)
- 数字信号控制器在变频家电中的应用(05-15)
- 基于DSP的磁流变阻尼器的控制方法(04-14)