Android系统的智能无线控制系统的设计

Android系统的智能无线控制系统的设计

摘要:为智能无线控制系统的设计和实现提供合理参考,在Android系统的基础上进行设计,实现智能无线控制系统的相关工作,定义客户端与服务器端之间的通信协议,设计客户端需要提供的接口,实现连接模块、数据传输模块、断开模块。

关键词:Android系统;智能控制;无线控制系统

1Android无线控制系统相关研究

1.1Android输入子系统。从操作系统空间分析,Android输入系统可以分为两个部分:一部分是Linux的内核空间中存在的输入子系统,属于内核机制。另一部分是在驱动的基础上进行的Android封装,处于用户空间。该系统整体分为三个组成部分,即Event驱动、EventHub和JAVA框架,即当键盘上按下一个按键或在触摸屏上滑动一下,机械动作就会被内核捕捉到,同时用event的形式体现出来,相关事件被记录下来后,用户空间就会获取时间并进行分发。

1.2Android按键研究。Android按键事件是最基本的输入时间,在Linux当中,按键是通过是“输入事件”的结构体实现的。按键机械动作到达软件层次以后,能够通过该结构体中的成员表现按键事件特性。

1.3Android模拟按键。Android系统中的输入和响应过程是用户按下按键后,系统中的Event将此种行为记录下来,WindowManagerService就会调动Android系统中的输入中枢轮询输入事件,当检测到有时间产生,就会将捕获到的时间分发给应用层。这时数据包的发送和传输只需要通过soket就能够实现在Linux中输入驱动程序,该设备驱动程序可以在用户空间对输入事件进行模拟,并将事件写在驱动中,最终由InputCore完成[1]。输入是指Linux的内核模块,该模块能够在用户空间进行操作,使输入子系统的可能性更高,且输入可以从应用程序中创建并操作输入设备。在实际工作的过程中,输入模块会创建字符设备,Android系统正是使用该字符设备在用户空间创建Linux输入设备。需要注意的是,Android默认使用的Linux内核中并没有输入模块,所以需要对config文件进行修改,即在文件中加入CONFIGINPUTUINPUT=y,同时将An-droid系统的Linux内核进行重新翻译。当Android系统中已经安装了输入模块,则系统会生成字符设备文件,即/dev/uinput,该设备代表的是应用程序和kernel输入子系统接口。

2基于Android系统的智能无线控制系统设计与实现

2.1定义客户端与服务器端之间的通信协议。以某基于Android系统的智能无线控制系统设计为例,该系统一方面需要控制建立的实际过程,要在连接已经建立的前提下使客户端向服务器发送控制请求87包,即DATATYPECONTROLREQUEST。在服务器接收控制请求后,检查是否能够允许控制,若能够允许,则会为客户端进行初始化输入设备的操作,再向客户端发送DATATYPECONTROLACKALLOW。若不允许,则服务器会直接向客户端发送DATATYPECON-TROLACKDISALLOW。一旦控制客户端的数量达到最大,服务器也会向客户端发送DATATYPECON-TROLREACHMAX。Android系统客户端接受服务器对控制请求的应答后,会根据服务器是否允许控制进行不同的操作。若收到的反馈为允许控制,则Android系统会设置好输入文件描述符,保障后续工作进行的流畅度,若接受到服务器不同意控制的应答或控制数量已经饱和,则Android系统会做好清理工作并及时退出。另一方面的工作是需要注意数据传输和服务器解析的工作过程,即在控制已经建立的基础上,An-droid系统会向服务器端发送DATATYPEKEYKEYEVENT的控制信息包,当服务器收到该控制信息包,则会根据信息包中的实际指令类型作出处理。

2.2设计客户端需要提供的接口。在明确系统设计要求的前提下,还要明确接口界面。界面等级的高低会直接影响客户程序的实际使用感,也会对程序功能实现的难易程度产生影响[2]。如:某基于Android系统设计的智能无线控制系统中,WirelessController属于客户端核心,能够向系统中全部对服务器提出的请求和控制信息进行处理并完成,在该系统设计时,WirelessController被设计成了单列模式。系统工作过程中获得WirelessController实例后,就能够实现对startConnection的调动,当向服务器发送连接请求后,startConnection会产生两个参数。一个是InetAddress,是java.net标准中的一个类别,代表了IP地址,设一个String对象为Stringstr=10.0.2.2,当中存储的是服务器的IP地址,此时即可轻易调动InctAddressgetByName(str),最终变为InetAddress。另一个参数是ConnectHandler,该参数是自定义接口之一,能够在回调工作中使用,一旦显示连接成功,则系统智能无线控制系统会调用onConnect,若检测到连接失败,则系统会调动onDisconnect。在连接出错后,系统也会产生调用操作,调用的内容是onError,同时接收到显示连接错误的信息。由此可见,在该系统调用startConnection函数前,客户端需要自定义一个类别,实现ConnectHandler,最终用于该系统连接过程中产生的回调。连接成功以后,该系统能够任意选择调用的函数向服务器发送控制信息,如:sendKeyEvent能够自行向newKeyEvent传输函数,也能够自主对键盘事件进行捕获,当控制完成以后,该系统也可以自行调动disconnect断开控制连接。

2.3连接模块的实现。连接建立,以某智能自动化控制系统为例,该系统的连接建立过程有两个关键环节,一是connectToSocket函数。该函数会调用newSocket,此层次的函数会向服务器发起连接请求,当服务器接收连接请求后,会及时将客户端的相关信息储存到云端。二是DataReader函数。该函数连接建立成功后会随即建立好socket,并对socket进行初始化读写。发送控制请求,该智能自动化控制系统中掌管控制请求发送的函数是sendControlRequest,该函数在发送控制请求的过程中会向服务器发送控制信息包,并等待服务器回应。在系统服务器接到控制信息包以后,会查看自身的配置是否允许控制工作展开,同时向客户端发送反馈信息包。若允许建立连接,在发送反馈信息包的同时,服务器还需要进行初始化,并在DATATYPECONTROLACKDISALLOW中将初始化之后的输入device发送至客户端,方便后续智能自动控制系统的使用。根据服务器的反馈处理相应问题,即客户端会读取服务器的ACK包,并根据信息包内容选择不同的处理方式,无论信息包类型如何,都需要使用ConectHandler相关方式展开工作,达到显示系统控制建立状态的目的。

2.4数据传输模块的实现。数据传输模块的主要工作内容是根据以往定义的协议在客户端及服务器之间传递数据。其中客户端负责的是实现各接口定义中的send函数,同时使用相关自定义类向服务器控制信息人发送信息。

2.5断开模块的实现。断开模块的设计和实现比解析模块的设计和实现难度更低,掌管的是资源释放相关的工作。在智能无线控制系统完成控制之后,会向服务器发送及控制信息包,服务器接收信息包后会释放在初始化过程中,为socket分配资源内容。

3结语

该项目的最终设计和实现的结果是能够在客户端生成clientLib库,在使用过程中Android系统会与客户端建立控制关系,受到客户端控制形成智能无线控制系统。

参考文献:

[1]孙浩文.基于Android的无线智能窗帘控制系统设计[J].微型电脑应用,2018,34(09):76-78,82.

[2]华颖.基于Web和Android的智能家居控制系统的设计与实现[D].南宁:广西大学,2018.

作者:贺志朋 许戈 单位:苏州健雄职业技术学院