本文主要是介绍Ehome:智能家居之手持终端计步器功能实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
8、计步器的功能实现
使用g-sensor实现
// 注意client的添加需要修改编译内核源码。
内核中自带了g-sensor的驱动程序,可以将内核中自带的驱动程序裁剪掉:
$:' make menuconfig
Device Drivers --->
<*> Hardware Monitoring support --->
< > Freescale MMA865X 3-Axis Accelerometer // 去掉 *
$:' make uImage -j4
然后让开发板使用新的内核:
$:' cp arch/arm/boot/uImage /tftpboot/
#:' tftp 48000000 uImage
#:' mmc write 48000000 800 3000
如何算一步:
只要xyz任意一轴和上个周期比有了一个比较大的变化
8.1 g-sensor的驱动程序
8.2 应用程序 C/S架构
c/s: client/server : qq
b/s browser/server : 网页版游戏
client: qt gui
周期性(博尔特)的给服务器发送命令
让服务器不断的读取g-sensor的数据
客户端如果收到1,步数+1 ,并显示
可以使用Qtimer
server:
收到相应的命令,读取g-sensor的数据
上次读到的结果进行比较
如果变化比较大(人为定义),
给客户端返回1,否则返回0
数据的比较可以放在服务器上完成
其实也可以放在客户端完成
步骤:
source /home/etc/profile
insmod /home/drivers/beep_drv.ko
insmod /home/drivers/btn_dev.ko
insmod /home/drivers/btn_drv.ko
insmod /home/drivers/leds_drv.ko
insmod /home/drivers/mma8653_drv.ko
/home/bin/start.sh &
/home/bin/server &
【遇到的问题】
总是调不通,最后使用排除法,验证出来是内核的问题,使用了另一个版本编译的内核就可以了。后续还需验证是内核的哪个配置导致event设备数量不同且计步器的数据无法发送和读取的问题。
这篇关于Ehome:智能家居之手持终端计步器功能实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!