微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 消费类电子 > 用于Android平台的鼠标设计与实现

用于Android平台的鼠标设计与实现

时间:03-22 来源:互联网 点击:
2. 2. 1 Overlay 驱动实现
  Overlay 驱动的核心结构体是platform_driver 和miscdevice,他们定义如下:
  

  其中sep6200_overlay_fops 的定义如下:
  

  结构体sep6200 _overlay_misc_device 用于为Overlay 创建一个字符设备节点以便与用户空间通信,而sep6200_overlay_fops 是对该设备节点的操作函数,我们要对这个结构体进行填充并编写所有与Overlay 相关的功能函数,以使Overlay 层能够正常工作。
  对于鼠标层来说最主要的是在sep6200_overlay_probe 中调用dma_alloc_writecombine( )为鼠标层分配内存以及在sep6200_overlay_ioctl 中实现两个ioctl 操作:
  OVERLAY_SHOW_CURSOR显示鼠标,即画鼠标图形并复制到上面分配的内存中。
  OVERLAY_SETPOS_CURSOR设置鼠标位置。
  2. 2. 2硬鼠标上层实现
  鼠标驱动实现后,用户空间就可以调用相应的接口操作实现鼠标功能。由于硬件鼠标的坐标值只需要传给底层Overlay 驱动即可,所以主要是在上面已经实现好的MouseInputMapper 类的构造函数里调用OVERLAY_SHOW_CURSOR 显示鼠标,在其成员函数sync ( nsecs _ t when) 处理数据之后调用OVERLAY_SETPOS_CURSOR 把鼠标坐标值传给Overlay 驱动的鼠标层,配置相应的寄存器设置鼠标的位置,就可以实现硬鼠标的精确移动。
  2. 3 软鼠标和硬鼠标的对比
  由上面实现可知,软鼠标和硬鼠标的实现机制是一样的:绘制鼠标和设置鼠标位置。但是软鼠标由软件来绘制,性能比较差,且消耗CPU 资源;而硬鼠标完全由硬件控制,性能高。通过实验验证,当玩大型游戏或者播放视频时,软鼠标反应迟钝,有时几乎不动,而硬鼠标则反应灵敏,移动位置精确。
  3 总结
  本文面向当前Android 手持终端市场,充分考虑到了实际产品的需要,有针对性地提出了实现鼠标的两种不同方案:软鼠标和硬鼠标,并指出了其优缺点。这两种方案根据不同的硬件平台有不同的应用。本文基于实际产品研发,项目中的芯片支持硬鼠标功能,采用了硬鼠标方案,产品具有一定的市场竞争力。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top