专利名称:一种在移动终端中模拟硬件设备的模拟器及其实现方法
技术领域:
本发明涉及移动终端领域,尤其涉及一种在移动终端中模拟硬件设备的模拟器及其实现方法。
背景技术:
随着手机等移动终端的更新换代速度加快,移动终端的开发效率越来越重要,移动终端开发及上市的越早,就意味着其在市场上的成功几率就越高。每一款移动终端的初期开发阶段,在硬件部分尚未完全准备好,软件部分,特别是上层应用程序就不能进行开发和调试。一旦硬件部分准备妥当,大量软件需要进行调试,软件滞后的开发调试造成整个移动终端开发效率大大降低,从而影响项目的开发进度。 有鉴于此,现有技术还有待于改进和发展。
发明内容
鉴于上述现有技术的不足,本发明的目的在于提供一种在移动终端中模拟硬件设备的模拟器及其实现方法,旨在解决现有移动终端开发过程中硬件准备叫慢、开发效率低的问题。本发明的技术方案如下
一种在移动终端中模拟硬件设备的模拟器,其中,包括模拟驱动及模拟UI,所述模拟驱动用于提供给应用程序及所述模拟Π接口,由应用程序将动作指令通过接口写入到模拟驱动中,所述模拟Π用于通过该接口从所述模拟驱动中读取到动作指令,并对所述动作指令进行模拟,实现模拟硬件设备的功能。所述在移动终端中模拟硬件设备的模拟器,其中,所述模拟器模拟的硬件设备为振动器。所述在移动终端中模拟硬件设备的模拟器,其中,所述模拟驱动的接口定义了用于表示振动器振动动作的数据结构。所述在移动终端中模拟硬件设备的模拟器,其中,所述数据结构包括振动器的编号、名称、周期、占空比及周期数变量。所述在移动终端中模拟硬件设备的模拟器,其中,所述模拟驱动的接口包括用于打开振动器、关闭振动器及控制振动器振动状态的接口。所述在移动终端中模拟硬件设备的模拟器,其中,所述用于控制振动器振动状态的接口包括用于提供给应用程序设置振动器振动信息的接口以及用于提供给模拟Π获取振动器振动信息的接口。所述在移动终端中模拟硬件设备的模拟器,其中,所述模拟UI的实现文件包括 振动器对象创建文件,用于创建一个振动器的对象,并用来处理当振动器状态改变时
显示在模拟UI上。所述在移动终端中模拟硬件设备的模拟器,其中,所述模拟UI的实现文件还包括
振动器振动动作存储文件,用于存储当前振动器的动作。所述在移动终端中模拟硬件设备的模拟器,其中,所述模拟UI的实现文件还包括
振动器动作指令读取文件,用于通过模拟驱动的接口读取动作指令,并控制振动器对所述动作指令进行模拟。一种所述模拟器的实现方法,其中,包括步骤
设置一模拟器包括模拟驱动及模拟UI,所述模拟驱动提供给应用程序及模拟Π接口,应用程序将动作指令通过接口写入到模拟驱动中,所述模拟UI通过该接口从所述模拟驱动中读取到动作指令,并对所述动作指令进行模拟,实现模拟硬件设备的功能。
有益效果本发明在移动终端中模拟硬件设备的模拟器及其实现方法,通过提供给应用程序及模拟Π接口,然后通过该接口来写入及读取动作指令,对该动作指令进行模拟,实现模拟硬件设备的功能,本发明中,虽然感受不到硬件实际的振动,但对于开发者而言,这种在Π上模拟振动的效果是显而易见的,因此,应用程序的开发人员可通过该模拟器及实现方法独立于硬件进行软件的开发,大大提高了应用程序及终端设备的开发效率。
图I为本发明在移动终端中模拟硬件设备的模拟器较佳实施例的结构原理框图。图2为本发明的模拟器的模拟UI中振动器关闭状态的模拟示意图。图3为本发明的模拟器的模拟UI中振动器打开状态的模拟示意图。
具体实施例方式本发明提供一种在移动终端中模拟硬件设备的模拟器及其实现方法,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。请参阅图1,图I为本发明在移动终端中模拟硬件设备的模拟器的结构框图,如图所示,所述模拟器100包括
模拟驱动120及模拟Π110,所述模拟驱动120用于提供给应用程序130及模拟Π110接口,由应用程序将动作指令通过该接口写入到模拟驱动120中,所述模拟Π110用于通过该接口从所述模拟驱动120中读取到动作指令,并对所述动作指令进行模拟。下面以移动终端中模拟振动器的模拟器为例,对本发明进行详细说明。振动器属于通知类的设备,从整体上来说,振动器提供给应用程序标准的接口,振动器的振动状态可通过设置振动周期、占空比等信息来控制,对于应用程序来说,需要提供振动器的编号和振动控制方式等信息给振动器的驱动。针对振动器的设备特点,本发明中的模拟驱动定义了一数据结构,用于表示振动器振动动作
struct vibrator _info {unsigned int number;unsigned int name;unsigned int period;unsigned int percent;unsigned int cycles;
};
其中的number表不振动器的编号,一般从O开始编号,值为O至31之间,但一般移动终端中只会设置一个振动器;其中的name则表示对应的振动器名称,由模拟驱动在初始化时预先设置好;period表示振动器振动的周期,单位为毫秒;percent表示振动器的占空比,其指的范围为O至100,O表示不振动,100表示一直振动,而占空比不为O或100时,在每个振动周期内振动器均为先振动然后再停止;cycles表示振动器振动的周期数,如果为0,则表不按一定的占空比一直进行,而不停止。模拟驱动的接口包括用于打开振动器的接口,如open (),还包括用于关闭振动器的接口,如close (),以及用于控制振动器振动状态的接口,如ioctl (),所述用于控制振动状态的接口又包括用于提供给应用程序设置振动器振动信息的接口以及用于提供给模·拟UI获取振动器振动信息的接口,下面对此进行详细的说明。用于提供给应用程序设置振动器振动信息的接口命令为VIB_I0C_0P,其值为0,该命令中,ioctl的第3个参数是struct vib_info*,通过该参数可以设置第number个振动器的振动状态,若对应的振动器不存在则返回-EPERM,须说明的是,一般移动终端中,只存在编号为O的振动器,另外,在进行多次设置时,后续的设置会取消前一次设置的结果,即该命令总是以最新设置的参数进行振动。用于提供给模拟UI获取振动器振动信息的接口命令为VIB_I0C_GETINF0,其值为1,模拟驱动可通过该接口来获取一个振动器的振动信息,包括振动器的名称以及与振动相关的各个参数的具体值等,其中,ioctl的第3个参数是struct vib_info*,只需设置LED编号即number字段即可,振动器的振动信息会在同一结构中返回,若对应的LED不存在则返回-EPERM。所述用于控制振动状态的接口还包括用于获取支持的振动器总数的接口,其中,ioctl的第3个参数是unsigned int*,整型的值为振动器的总数。如图2所示,其表示振动器关的状态,即在模拟UI上显示Vibrator Off;如图3所示,其表示振动器开的状态,即在模拟Π上显示Vibrator On。在没有动作指令时,振动器的模拟Π显示如图2所示,而一旦有动作指令时,振动器的模拟Π则按照动作指令在图2和图3之间进行切换,实现振动器的振动模拟功能。在所述模拟UI中,其实现文件主要包括simphone. cpp、vibrator, h、vibrator,cpp、simphone. cpp,其中,simphone. cpp表示振动器对象创建文件,vibrator, h表示振动器振动动作存储文件,vibrator, cpp振动器动作指令读取文件,下面分别进行说明。simphone. cpp主要用于创建一个振动器的对象,并用来处理当振动器状态改变时及时显示在模拟UI上
m_vib = new TVibrator (this) ; // 创建 Vibrator 对象
vibrator, h主要用于存储当前振动器的动作,该文件也定义了和模拟驱动中的vib_info相同的数据结构。vibrator, cpp主要用于通过模拟驱动的接口读取动作指令,并控制振动器对所述动作指令进行模拟,其实现过程是先打开振动器的设备文件,然后监听振动器的设备文件,一旦有数据可读即有新的动作指令,则执行读取命令readVibData (int),该命令首先指定vib_info中的number为O,用来确定要获取第O个振动器的振动信息,然后用ioctl系统调用读会相应的振动信息数据,其具体代码如下
vibState. number = O; // 指定第 O 个 vibrator, vibState 的类型就是 structVib_info
::ioctl (m_vibFd, I0C_GETINF0, &vibState) // 读取的数据保存在 vibState
中
根据读回的数据即可使模拟Π上的代表振动的图标进行动作,即设置振动器的状态从开到关或从关到开,或者设置该图标的不同颜色来模拟振动。
基于上述模拟器,本发明还提供一种模拟器的实现方法,所述实现方法包括步骤
设置一模拟器包括模拟驱动及模拟UI,所述模拟驱动提供给应用程序及模拟Π接口,应用程序将动作指令通过接口写入到模拟驱动中,所述模拟UI通过该接口从所述模拟驱动中读取到动作指令,并对所述动作指令进行模拟,实现模拟硬件设备的功能。综上所述,本发明在移动终端中模拟硬件设备的模拟器及其实现方法,通过提供给应用程序及模拟Π接口,然后通过该接口来写入及读取动作指令,对该动作指令进行模拟,实现模拟硬件设备的功能,本发明中,虽然感受不到硬件实际的振动,但对于开发者而言,这种在Π上模拟振动的效果是显而易见的,因此,应用程序的开发人员可通过该模拟器及实现方法独立于硬件进行软件的开发,大大提高了应用程序及终端设备的开发效率。应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
权利要求
1.一种在移动终端中模拟硬件设备的模拟器,其特征在于,包括模拟驱动及模拟UI,所述模拟驱动用于提供给应用程序及所述模拟Π接口,由应用程序将动作指令通过接口写入到模拟驱动中,所述模拟Π用于通过该接口从所述模拟驱动中读取到动作指令,并对所述动作指令进行模拟,实现模拟硬件设备的功能。
2.根据权利要求I所述在移动终端中模拟硬件设备的模拟器,其特征在于,所述模拟器模拟的硬件设备为振动器。
3.根据权利要求2所述在移动终端中模拟硬件设备的模拟器,其特征在于,所述模拟驱动的接口定义了用于表示振动器振动动作的数据结构。
4.根据权利要求3所述在移动终端中模拟硬件设备的模拟器,其特征在于,所述数据结构包括振动器的编号、名称、周期、占空比及周期数变量。
5.根据权利要求2所述在移动终端中模拟硬件设备的模拟器,其特征在于,所述模拟驱动的接口包括用于打开振动器、关闭振动器及控制振动器振动状态的接口。
6.根据权利要求5所述在移动终端中模拟硬件设备的模拟器,其特征在于,所述用于控制振动器振动状态的接口包括用于提供给应用程序设置振动器振动信息的接口以及用于提供给模拟UI获取振动器振动信息的接口。
7.根据权利要求2所述在移动终端中模拟硬件设备的模拟器,其特征在于,所述模拟UI的实现文件包括 振动器对象创建文件,用于创建一个振动器的对象,并用来处理当振动器状态改变时显示在模拟UI上。
8.根据权利要求7所述在移动终端中模拟硬件设备的模拟器,其特征在于,所述模拟UI的实现文件还包括 振动器振动动作存储文件,用于存储当前振动器的动作。
9.根据权利要求8所述在移动终端中模拟硬件设备的模拟器,其特征在于,所述模拟UI的实现文件还包括 振动器动作指令读取文件,用于通过模拟驱动的接口读取动作指令,并控制振动器对所述动作指令进行模拟。
10.一种如权利要求I至9任一项所述模拟器的实现方法,其特征在于,包括步骤 设置一模拟器包括模拟驱动及模拟UI,所述模拟驱动提供给应用程序及模拟Π接口,应用程序将动作指令通过接口写入到模拟驱动中,所述模拟UI通过该接口从所述模拟驱动中读取到动作指令,并对所述动作指令进行模拟,实现模拟硬件设备的功能。
全文摘要
本发明公开一种在移动终端中模拟硬件设备的模拟器及其实现方法,所述模拟器包括模拟驱动及模拟UI,所述模拟驱动用于提供给应用程序及所述模拟UI接口,由应用程序将动作指令通过接口写入到模拟驱动中,所述模拟UI用于通过该接口从所述模拟驱动中读取到动作指令,并对所述动作指令进行模拟,实现模拟硬件设备的功能。本发明中,虽然感受不到硬件实际的振动,但对于开发者而言,这种在UI上模拟振动的效果是显而易见的,因此,应用程序的开发人员可通过该模拟器及实现方法独立于硬件进行软件的开发,大大提高了应用程序及终端设备的开发效率。
文档编号G06F9/455GK102819450SQ20121029752
公开日2012年12月12日 申请日期2012年8月21日 优先权日2012年8月21日
发明者吴奇峰 申请人:惠州Tcl移动通信有限公司