APP下载

实验水箱水位移动在线监测APP研制

2017-11-23郭一楠

电气电子教学学报 2017年5期
关键词:水箱水位终端

程 健, 郭一楠, 林 伟

(中国矿业大学 信息与控制工程学院, 江苏 徐州 221116)

实验水箱水位移动在线监测APP研制

程 健, 郭一楠, 林 伟

(中国矿业大学 信息与控制工程学院, 江苏 徐州 221116)

考虑到过程控制实验装置和实验时间的局限性,为提高学生的实验参与度和操作效果,构建了基于Android的水箱水位移动在线监测APP系统。它采用客户/服务器模式,实现水箱水位在任意移动终端的实时数据获取及其趋势显示。该APP系统能够提供多人同时访问接口,符合实验过程中学生和教师的多移动终端访问和监测要求;其多线程调用方式还可以提高实验效率,方便实验者及时观察实现现象,从而提升学生的实践创新能力。

水位;在线监测; Android;移动终端

0 引言

“过程控制”是一门典型的理论与实践紧密结合的专业方向课程,该课程要求学生掌握工业生产过程中液位、压力、温度量等被控量的控制方法和实现技术。在该课程教学中,能够满足相关过程控制理论实现方法的配套实验设施,对于增强学生的理论掌握和创新实践能力至关重要。目前,已采用的过程控制实验设备主要以三阶水箱为被控对象,实现单容或多容液位控制,支持PLC、单片机和计算机实施控制功能,从而支持“过程控制”课程的学生综合实训和“微机原理”等相关课程的创新实验。但是,有限的实验装置和实验时间迫使多名学生集合完成一次实验过程,实验参与度和实验效果显著降低,不利于学生深入观察实验现象,不能充分发挥实验实践对课堂教学的辅助推动作用。

近几年,智能手机等移动终端已经逐渐成为人们日常学习工作中不可或缺的一部分。在众多的智能手机操作系统中,具有免费、开放、网络接入自由、硬件支持丰富等优点的Android操作系统,占据了智能手机操作系统市场的很大份额[1-4]。然而,智能手机目前主要用于社交平台和各类商务娱乐活动,如果能将过程控制实验教学环节与智能手机终端应用相结合,把实验过程中的实验现象和实验结果展现和分享给每一位实验参与者,就可以提高学生的实验交互程度,改善现有实验实践的不足,弥补实验室有限条件,为实验研究增添便利。

我们基于智能手机的Android操作系统和已有的水箱过程控制实验设备,研制出一款水箱水位在线监测APP。该APP具备服务器连接、数据在线传输、水位实时趋势显示、参数计算等功能,能够满足教学研究多方面的要求,给学生提供一个高参与度的实验环境。此外,该系统具有友好的用户界面,能在不同品牌的智能手机上稳定运行。学生和教师都可以通过该APP系统观察实验过程中水箱液位的实时变化情况,监测控制效果,提高实验数据的共享性和实时性。

1 功能需求分析

水箱水位在线监测APP系统的核心功能是能够实现对响应过程实时数据的监测和显示。一方面,移动终端实时获取和显示监测数据;另一方面,PC端作为服务器,实现与移动终端的可靠数据链接。因此,该系统包含移动终端和服务器端两大部分。

1.1移动终端功能需求

如图1所示,参与过程控制实验的学生和教师的移动终端应具有实时数据显示、用户连接登录、实时曲线生成和其他辅助功能。

实时数据显示采用趋势图形式,显示来自服务器的水位实时数据,便于学生直观观察水箱水位的实时和历史变化趋势,监测控制效果和实验过程。为方便多尺度观察和查询数据,使用者可以任意改变图形大小、横纵坐标显示范围和位置。该显示功能还可以实时刷新数据,并保留预设时间段内的曲线,直到与服务器的连接断开或者停止监测。

图1 移动终端功能需求

在移动终端打开该APP系统后,需要登录用户信息,以获得访问服务器的操作权限。只有登录成功的用户,才能连接服务器,得到实时监测数据,从而保障实验操作的安全性、保密性和独立性。连接界面要求用户输入与所用实验仪器相对应的数据发送服务器,确保观测数据的正确性。

其他辅助功能包括曲线刷新复位、软件更新和退出等。

曲线刷新复位采用两种方式实现:其一,通过点击“刷新”按钮,删除图表中的历史水位数据,并复位图表配置,初始化绘图引擎;其二,通过软件自动刷新,在保留的历史数据基础上逐步刷新。

软件更新功能可以自动推送软件更新通知。通过下载最新APK安装包文件,覆盖移动终端上原有的旧版软件。

退出功能是实现软件自动退出,关闭所有Activity,并清除所有缓存。

1.2服务器功能需求

如图2所示,服务器通过“实时数据获取功能”获得水位检测模块上传的数据采集终端信息,并将水位信息传送到服务器主机的数据库保存。水位信息由固定的特殊区分符分隔。根据该分隔符区分和判断正确数据。

图2 服务器端功能需求

“实时数据发送功能”用于实现服务器与移动终端之间的实时通讯,将实时数据获取模块发送过来的信息流转发到移动终端。数据发送过程中,需要监听数据获取模块是否已刷新,并实时更新数据输出流。当数据获取模块接收到数据为空时,数据发送模块仍要向移动终端发送数据,默认发送数据为0。

服务器通过“移动终端连接监听功能”监听是否有移动终端连接了本服务器。服务器程序初始化后,连接监听模块立即打开,并处于监听状态。一旦有移动终端要求连接服务器,则启动数据发送线程。由于连接监听在服务器运行过程中一直打开,会造成主线程阻塞,所以需要在新线程中启用该功能。

“其他辅助功能”包含多用户连接和关闭功能。多用户连接功能单独为连接服务器的客户端开启一个线程,实现数据传输。关闭功能可以断开其与客户端的连接,关闭所有线程,停止数据获取。

2 在线监测APP系统功能设计与实现

系统功能设计遵循稳定性、易用性、可扩展性,以及功能需求和运行环境。首先,通过对比目前市场上主流的Android、iOS等智能手机操作平台,选取采用Java技术,以易于初学者上手,并以在非苹果电脑平台上也可以操作的Android研发该APP系统[5]。这符合学生群体使用Android手机的高占有率的需求。

2.1用户界面的设计与实现

用户界面由主界面、登录界面、欢迎界面、数据接收界面,以及图表绘制界面组成。

水箱水位在线监测APP系统的移动终端部分采用Tabhost格式实现所有界面之间的交互切换,如图3所示。TabHost是面向用户的接口,通过添加Tab实现界面切换。将Intent作为一个Tab。当把一个Activity作为内容嵌入View中时,Tab标签下方的动画图片会自动跳到加载,从而实现切换动画。相应的核心代码如下:

在打开该APP系统软件后,采用异步线程的方式显示3秒图4所示的欢迎界面动画,随后进入主界面。

图3 界面框架 图4欢迎界面

下列的核心代码中的SPLASH_DISPLAY_LENGTH表示延时时间,设置为3000表示3秒延时。Handle对象用于根据匹配ID确定需要跳转的界面。

用户在图5所示主界面上实现用户登录,以及实验选择的操作。在图6所示用户登录界面,登录按钮始终处于监听状态。一旦动作发出,则调用相应的信息判断程序。仅当账户密码与预设匹配时,才给用户分配操作权限。相应的核心代码如下:

图5主界面 图6登录界面

在图7所示数据接收界面中,用户需要输入对应的服务器主机IP和端口号(默认设置为12345)来实现服务器连接,并在发送数据请求后,不断刷新从服务器中接收到的信息。数据接收界面有EditText、Button和TextView三个组件。EditText用于输入服务器主机IP地址,并通过input.getText()封装发送给连接线程。根据主线程传递过来的服务器IP和端口号,调用connect构造Socket。通过调用br,获取并封装Socket数据输入流。当读取到来自服务器的数据后,线程就会通过handler.sendMessage(msg)发送消息通知,Show.append则在TextView中刷新显示从服务器端接收到的信息[6-7]。

msg.obj=input.getText().toString();connect.revHandler.sendMessage(msg);input.setText(“”);handler=newHandler(){publicvoidhandleMessage(Messagemsg){if(msg.what==0x123){senddata=msg.obj.toString();try{addY=Integer.parseInt(senddata);catch(NumberFormatExceptione){e.printStackTrace();}show.append(“ ”+“客户端已在“+Pic.addX+”接收数据:”+senddata);}s=newSocket();s.connect(newInetSocketAddress(“192.168.253.1”,12345),12345);br=newBufferedReader(newInputStreamReader(s.getInputStream()));os=s.getOutputStream();newThread().start;

图7 数据接收界面

数据接收界面获得的水位数据,采用谷歌的AchartEngine绘图引擎,绘制生成水位实时趋势曲线。系统时间利用语句Date().getTime()获取;水位信息则利用Intent,从数据获取界面传送到曲线生成界面的纵轴数据缓存数组(int[] ycache = new int[600])中;再在循环体中将坐标变换后的一系列点重新加入到点集中;根据setPanEnabled设定的显示范围、横纵坐标范围,以及曲线大小等关键格式显示实时曲线。

2.3服务器功能的设计与实现

服务器主要是从数据库文件读取水位数据,并向客户端发送水位数据。

采用BufferedReader从Socket中循环读取数据库的数据,遍历socketList中的每个Socket,将读取到的内容向Socket发送一次。成功读取数据库文件后,服务器还需将读取到的数据分类和发送。在数据读取过程中,根据空格符号“ ”,将读取到的数据分开,再逐个添加到数据传送缓存区中。此时,服务器会输出“服务器已发送数据+内容”进行反馈。当服务器没有从数据库文件读取到数据时,系统默认向客户端发送数据“0”。当有客户连接到服务器时,服务器会启用一个新getOutputStream线程,用于处理Socket所对应的输入输出流。

服务器与移动终端的稳定有效数据传输采用基于TCP链接的Socket建立。服务器通过ServerSocket对Socket配置端口号,随后开始监听。一旦接收到客户端的connect连接请求,便开启新线程实现握手[7]。如果创建的ServerSocket没有指定IP地址,则绑定本机默认IP地址;端口号通常使用大于10000的非固定端口号。当服务器的ServerSocket创建成功后,系统会输出“等待连接”。一旦接收到客户端的连接请求,服务器就会返回对应的Socket,输出“有客户端连接”;若没有监听到客户端连接,则会一直处于监听等待状态,这可能会导致进程阻塞。因此,服务器要为每个Socket单独启用一个线程new Thread(new serverThread(s)).start(),实现数据获取、写入数据输出流和刷新页面等功能[8-9]。

3 结语

本文针对“过程控制”课程实验中,实验装置和实验时间的局限性,构建了基于Android的水箱水位移动在线监测APP系统,用于实现水箱水位在任意移动终端的实时数据获取及其趋势显示。通过分析服务器和移动终端的功能需求,详细阐述了基于Socket通信的数据连接、监测数据获取与传输和基于AChartEngine绘图引擎的实时趋势曲线生成方法。系统的多线程调用方式和多终端访问接口可以提高实验效率,方便实验者及时观察实现现象,提高学生的实验参与度和实践创新能力。

[1] 孙光宇,张玲玲.Android物联网开发从入门到实战.北京:清华大学出版社,2015l.

[2] 高彩丽,许黎民,袁海.Android应用开发范例精解.北京:清华大学出版社,2012.

[3] 赵旭.基于安卓的石油防盗系统数据监测APP设计.北京:通讯世界.2015,(2):55-60.

[4] 李霞.基于智能手机的血压监测系统实现.山东:鲁东大学学报,2015,31(3):221-225.

[5] 陈甫.Android Studio应用.北京:电脑知识与技术.2014,24:5659-5661.

[6] 刘爽,史国友,张远强.基于TCP/IP协议和多线程的通信软件的设计与实现.安徽:计算机工程与设计.2010,7:1417-1420.

[7] 栾丽丽.基于Android的视频数据采集与处理.山东:青岛科技大学.2014.

[8] 刘畅.基于Android系统的移动监测平台的设计与实现.西安:西安石油大学.2015.

[9] 皮成.基于Android平台的即时通信中间件的研究与实现. 西安:西安电子科技大学.2014.

TheDevelopmentofAppSysteminMobileTerminalsforLabWaterLevel′sOnlineMonitoring

CHENGJian,GUOYi-nan,LINWei

(SchoolofInformationandControlEngineering,ChinaUniversityofMining&Technology,Xuzhou221116,China)

The equipments and time in process control experiment are limit. In order to improve the experimental effect and make more students participated in the experiments, the water level′s online monitoring APP system based on Android is constructed. The real-time monitoring data of water tank are acqusited to the serve and transferred to mobile terminals so as to display their changing trends. This monitoring APP system can provide access interface to many students at the same time, which accords with the monitoring requirements from many mobile terminals in the experiments. The multi-threading process method can improve the efficiency of experiments and conveniently observe the experimental phenomenon in time, which promotes the students′ practical innovation ability.

water level; online monitoring; Android; mobile terminals

2016-10-22;

2017-01-12

中国矿业大学研究生教育教学改革研究与实践项目(20150518083703496,YJSJG2016Y01-2)

程 健(1974-),男,博士,副教授,主要从事先进控制方法相关的科研教学工作,E-mail:chengjian@cumt.edu.cn 郭一楠(1975-),女,博士,教授,主要从事过程控制的教学科研工作。

TP29

A

1008-0686(2017)05-0066-05

猜你喜欢

水箱水位终端
X美术馆首届三年展:“终端〉_How Do We Begin?”
通信控制服务器(CCS)维护终端的设计与实现
一种太阳能热水器水箱的控制系统
多功能北斗船载终端的开发应用
PLC组态控制在水箱控制系统的应用
基于MFAC-PID的核电站蒸汽发生器水位控制
水箱出水
ABB Elastimold 10kV电缆终端及中间接头
基于PLC的水位控制系统的设计与研究