操作系统中控制硬件设备的方法和模块与流程

文档序号:11828821阅读:383来源:国知局
操作系统中控制硬件设备的方法和模块与流程

本申请涉及电子设备操作系统的开发,具体涉及一种操作系统中控制硬件设备的方法和模块。



背景技术:

目前,众多的电子设备上都安装有闪光灯,在很多情况下,用户具有使用闪光灯的需求,因此,如何在电子设备上实现闪光灯的控制,是本领域技术人员正在研究的问题。以安卓系统为例,当需要控制闪光灯的开关时,通常是先调用camera driver,利用camera自带的接口,通过设置camera的参数,来实现闪光灯的开关。而这种对闪光灯的控制方式,属于间接控制,其对闪光灯的调用具有一定的时间延迟。并且,这种控制方式在不同手机上表现不同,有的打开关闭闪光灯动作耗时比较小,闪烁速度比较快,时间短,效率高。而有的打开关闭闪光灯动作耗时比较长或长短不一,闪烁速度相对较慢,效率也较低。

随着光通信的发展,例如可见光通信,需要使用电子设备上的闪光灯,通过控制闪光灯闪烁来实现信息的传输。而光通信的过程中,要求闪光灯闪烁的频率较快,目前的闪光灯控制速度难以达到光通信的要求。



技术实现要素:

本申请提供了一种操作系统中控制硬件设备的方法和模块,解决了操作系统中对硬件设备控制效率低的问题。

根据本申请的第一方面,本申请提供了一种操作系统中控制硬件设备的方法,包括:

查找获取用于控制硬件设备动作的系统文件;

获取用于修改所述系统文件的进程输出码流,所述进程输出码流包括用于控制硬件设备动作的编码序列;

执行所述进程输出码流以控制硬件设备根据所述编码序列进行动作。

根据本申请的第二方面,本申请提供了一种操作系统中控制硬件设备的模块,包括:

查找单元,用于查找获取用于控制硬件设备动作的系统文件

码流获取单元,用于获取用于修改所述系统文件的进程输出码流,所述进程输出码流包括用于控制硬件设备动作的编码序列;

执行单元,用于执行所述进程输出码流以控制硬件设备根据所述编码序列进行动作。

本申请提供的操作系统中控制硬件设备的方法和模块,查找单元查找获取用于控制硬件设备动作的系统文件;码流获取单元获取用于修改系统文件的进程输出码流,进程输出码流包括用于控制硬件设备动作的编码序列;执行单元执行进程输出码流以控制硬件设备根据编码序列进行动作。本申请提供的操作系统中控制硬件设备的方法和模块通过修改用于控制硬件设备动作的系统文件,来对硬件设备进行控制,从而提高硬件设备的控制效率。

附图说明

图1为本申请一种实施例中安卓系统中控制手机闪光灯的方法流程图;

图2为本申请一种实施例中安卓系统中控制手机闪光灯的模块示意图。

具体实施方式

本申请实施例提供了一种操作系统中控制硬件设备的方法和模块,该操作系统可以是电子设备,例如手机、平板电脑等设备内的系统,硬件设备可以是闪光灯,或其他发光器件,或震动器、摄像头、传感器、麦克风等。

为了便于对本申请进行说明,本申请实施例以硬件设备为手机闪光灯进行说明,相应的,硬件设备动作为闪光灯的开启或关闭。

下面通过具体实施方式结合附图对本申请作进一步详细说明。

实施例一

请参考图1,本实施例提供了一种安卓系统中控制手机闪光灯的方法,包括下面步骤:

步骤1.1:查找获取用于控制手机闪光灯开启或关闭的系统文件,通常,该系统文件为brightness系统文件,且其在手机内的存储路径通常为下面三种:

sys/class/leds/torch/brightness;

sys/class/leds/torch-light/brightness;

sys/class/leds/flashlight/brightness。

因此,本步骤中,可以直接查询上述三个路径,以查找到brightness系统文 件,在其他实施例中,也可以采用其他查找方法,例如,直接搜索整个手机存储;或者在查询上述三个路径后,依然没有查找到brightness系统文件,再搜索整个手机存储。

步骤1.2:判断当前用户是否有修改brightness系统文件的权限,如果有,直接转到步骤1.4,如果没有,转到步骤1.3。

步骤1.3:获取修改brightness系统文件的权限,通常,可以直接获取手机ROOT权限(超级用户权限),例如,采用手机刷机工具ROOT手机,以得到修改brightness系统文件的权限。

步骤1.4:获取用于修改brightness系统文件的进程输出码流,进程输出码流包括用于控制闪光灯动作的编码序列。本实施例中,为提高闪光灯的控制效率,编码序列采用NRZI编码。

步骤1.5:进入DOS命令模式。

步骤1.6:执行进程输出码流以控制闪光灯根据编码序列进行动作,实现循环控制闪光灯的开和关。进程输出码流中采用ECHO命令来修改brightness系统文件,在其他实施例中,亦可以根据操作系统的不同,选择不同的修改命令。

在编码序列中修改brightness系统文件,实现打开和关闭闪光灯的方式如下:

Process p=Runtime.getRuntime().exec(“su”);//获得最高权限并进入dos命令模式

DataOutputStream dos=new DataOutputStream(p.getOutputStream());//获得进程输出流

//把1写入brightness文件打开闪光灯

dos.writeByte(“echo 1>/sys/class/leds/torch/brightness”+”\n”);

dos.flush();

//把0写入brightness文件关闭闪光灯

dos.writeByte(“echo 0>/sys/class/leds/torch/brightness”+”\n”);

dos.flush();

//退出dos命令模式

dos.writeByte(“exit\n”);

dos.flush();

在完成对闪光灯的控制后,操作系统退出DOS命令模式。

步骤1.5中,可以是系统执行预先设置的指令,以进入DOS命令模式;也可以是,进程输出码流包括进入DOS命令模式的指令,系统执行进程输出码流时,进入DOS命令模式。

需要说明的是,在某些实施例中,如果手机已设定为当前用户具有修改brightness系统文件的权限,则可以省略步骤1.2和步骤1.3,不对权限进行判断。

实施例二

请参考图2,本实施例提供了一种安卓系统中控制手机闪光灯的模块,包括查找单元201、权限获取单元202、码流获取单元203和执行单元204。

查找单元201用于查找获取用于控制手机闪光灯开启或关闭的系统文件,通常,该系统文件为brightness系统文件,且其在手机内的存储路径通常为下面三种:

sys/class/leds/torch/brightness;

sys/class/leds/torch-light/brightness;

sys/class/leds/flashlight/brightness。

因此,查找单元201可以直接查询上述三个路径,以查找到brightness系统文件,在其他实施例中,也可以采用其他查找方法,例如,查找单元201直接搜索整个手机存储;或者在查询上述三个路径后,依然没有查找到brightness系统文件,再搜索整个手机存储。

权限获取单元202判断当前用户是否有修改brightness系统文件的权限,如果没有,则获取修改brightness系统文件的权限,通常,可以直接获取手机ROOT权限(超级用户权限),例如,权限获取单元202执行手机刷机工具ROOT手机,以得到修改brightness系统文件的权限。

码流获取单元203用于获取用于修改brightness系统文件的进程输出码流,进程输出码流包括用于控制闪光灯动作的编码序列。本实施例中,为提高闪光灯的控制效率,编码序列采用NRZI编码。

执行单元204用于执行进程输出码流以控制闪光灯根据编码序列进行动作,实现循环控制闪光灯的开和关。进程输出码流中采用ECHO命令来修改brightness系统文件,在其他实施例中,亦可以根据操作系统的不同,选择不同的修改命令。

在编码序列中修改brightness系统文件,实现打开和关闭闪光灯的方式如下:

Process p=Runtime.getRuntime().exec(“su”);//获得最高权限并进入dos命令模式

DataOutputStream dos=new DataOutputStream(p.getOutputStream());//获得进程输出流

//把1写入brightness文件打开闪光灯

dos.writeByte(“echo 1>/sys/class/leds/torch/brightness”+”\n”);

dos.flush();

//把0写入brightness文件关闭闪光灯

dos.writeByte(“echo 0>/sys/class/leds/torch/brightness”+”\n”);

dos.flush();

//退出dos命令模式

dos.writeByte(“exit\n”);

dos.flush();

执行单元204还用于控制操作系统先进入DOS命令模式,再执行进程输出码流以控制硬件设备动作;在完成对闪光灯的控制后,退出DOS命令模式。

执行单元204可以是执行预先设置的指令,以进入DOS命令模式;也可以是,进程输出码流包括进入DOS命令模式的指令,执行进程输出码流时,进入DOS命令模式。

需要说明的是,在某些实施例中,如果手机已设定为当前用户具有修改brightness系统文件的权限,则可以省略权限获取单元202,不对权限进行判断。

下面为使用本申请实施例提供的方法和模块对型号分别为htc x515d和Nx505j的手机的闪光灯进行控制,与使用现有技术对其闪光灯进行控制的对比数据。

(1)htc x515d手机:

通过修改brightness系统文件来控制闪光灯开关,设置同一组编码序列内开和关的时间为8ms,实际的延时是7~10ms;设置两组编码序列间开和关的时间为25ms,实际的延时是22~25ms。

通过camera来控制闪光灯开关,设置同一组编码序列内开和关的时间为1ms,实际的延时是14~34ms;设置两组编码序列间开和关的时间为25ms,实际的延时是36~72ms。

(2)Nx505j手机:

通过修改brightness文件来控制闪光灯开关,设置同一组编码序列内开和关的时间为8ms,实际的延时是7~9ms;设置两组编码序列间开和关的时间为25ms,实际的延时是24~26ms,总的发光时间是1.25s。

通过camera来控制闪光灯开关,设置同一组编码序列内开和关的时间为1ms,实际的延时是14~45ms;设置两组编码序列间开和关的时间为25ms,实际的延时是36~72ms,总的发光时间是3.2s。

本申请实施例中,通过修改用于控制手机闪光灯开关的brightness系统文件来实现对手机闪光灯开关的准确控制,解决了手机闪光灯闪光速度过慢和闪光总时间过长的问题,即打开和关闭闪光灯动作所耗的时间比较短,可以减少到两三毫秒。而使用camera打开关闭的动作一般需要消耗十几毫秒,有的甚至三四十毫秒。

在使用手机闪光灯进行光通信时,要求能够精准地控制闪光灯的发光时间,以发光时间长短代表对应的数字信号,从而实现数据的正确传输和正确解码。通过本实施例提供的闪光灯控制方法和模块,能够较好地满足光通信对闪光灯闪烁频率和发光时间的要求。

本领域技术人员可以理解,上述实施方式中各种方法的全部或部分步骤可以通过程序来指令相关硬件完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存取存储器、磁盘或光盘等。

以上内容是结合具体的实施方式对本申请所作的进一步详细说明,不能认定本申请的具体实施只局限于这些说明。对于本申请所属技术领域的普通技术人员来说,在不脱离本申请发明构思的前提下,还可以做出若干简单推演或替换。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1