黄广发,吴先球
(华南师范大学物理与电信工程学院,广东广州510006)
摘要:为了让实验者在移动终端上完成远程实验的异地操作,设计一种基于Android平台的远程实验客户端。通过对开源播放器VLC进行二次开发,使用Socket通信传输跨平台控制指令,利用HTML5中的canvas标签绘画波形图,实现客户端进行远程实验的视频监控、远程控制实验仪器和数据处理等功能。以单摆法测重力加速度实验进行效果验证,实测结果表明,客户端具有稳定可靠、实验数据处理精度高、人机交互性好等优点。
教育期刊网 http://www.jyqkw.com
关键词 :远程实验;Android;客户端;HTML5
中图分类号:TN911.2?34;TP311.52 文献标识码:A 文章编号:1004?373X(2015)14?0089?03
收稿日期:2014?12?25
基金项目:广州市科技和信息化局科普计划资助项目(2014KP000043)
0 引言
在当今信息技术高速发展的时代,学习的自主化、智能化和终身化使得远程教育必须要与时俱进,就是要运用信息技术改善远程教学系统以满足人们的迫切需求。远程实验[1]是通过互联网远程操作实验仪器,在异地完成真实的实验过程。远程实验不受时空限制,特别是随着平板电脑、智能手机等移动终端的普及,Android系统占据了主流,只要连接了Internet,就可以根据实验者的水平和需要,随时随地使用客户端去选做各种实验,这种移动学习环境下的实验教学模式增加了教学的灵活性,具有广泛的应用前景。
为了满足移动学习的需求,本文结合远程控制实验的系统特点,设计了一种基于Android的客户端,实现了远程控制实验的移动性操作。
1 系统硬件及其工作原理
远程实验系统的硬件结构如图1所示,服务器通过串口连接控制模块,控制模块连接实验仪器,通过执行服务器传送过来的指令控制实验仪器,并采集实验数据。
摄像机捕获现场仪器的运行情况通过USB接口反馈给服务器,服务器再通过网络及时反馈给远程的操作者。
控制模块主要由主控单片机和相关外设组成,服务器上使用LabVIEW 软件与控制模块进行通信,使用VLC media player进行流媒体数据的编码和传输,使用Tomcat进行搭建Web应用服务器,响应HTML页面的请求访问,提供了实验数据处理功能。
2 客户端设计
客户端是远程实验系统的一部分,实验者直接在客户端上进行远程实验的操作,具有实时观察实验现象、实时远程控制实验仪器、实验数据接收与处理等功能。
2.1 Android应用程序开发环境
开发环境[2]由JDK(Java开发工具包)、Eclipse(开发Java程序的软件工具)、Android SDK(Android专属的软件开发工具包)、ADT(开发Android应用程序的插件)、NDK(原生开发工具包)5部分组成,通过安装和进行相应的配置即可完成开发环境的搭建。
2.2 功能流程
远程实验的实验仪器是实际设备,远程用户使用客户端通过网络对其进行操作,控制实验设备的运行。客户端的整体功能如图2所示,其中观察实验现象部分是先要接入流媒体服务器,再把通过HTTP协议传输过来的H.264 视频流进行解码[3],最后通过控件SurfaceView播放出来;控制实验仪器部分主要是Socket通信,在主线程下申请子线程进行处理,具体采用Handler消息传递机制;数据处理部分是下载服务器端采集为txt格式的数据文件,读取后在HTML5 上使用canvas 绘制波形图,这种可视化的数据分析可以让实验者读取数据进行公式运算。
2.3 关键技术
2.3.1 JNI接口
将开源播放器VLC[4]应用到Android上,需要通过将VLC的源代码编译成库文件,再通过Android提供的JNI接口调用,因为VLC 的代码完全由C/C++编写,在需要调用第三方C/C++库文件时,使用JNI接口的应用[5]可以让开发者实现一些用Java语言难以实现的功能。
在上层通过以下代码载入已经编译好的libvlcjni.so
库文件:
{
System.loadLibrary(“vlcjni”);
}
LibVLC类通过声明库中的本地函数就可以在上层应用程序调用。
在主类MainActivity中,调用VLC 接收服务器端发送的视频流,经过程序处理后进行播放,关键代码如下:
private LibVLC mLibVLC = null;
mLibVLC = Util.getLibVlcInstance();
if(mLibVLC ! = null)
{
String pathUri = "http://222.200.152.122:8080/x";
mLibVLC.playMyMRL(pathUri);
}
2.3.2 多线程应用
采用多线程技术可以避免UI 线程的阻塞,其中Handler Message[6]方法最为常用。具体操作是在新启动的线程中发送消息,在主线程中获取、处理消息,通过回调的方式,主线程能够处理先启动线程所发送的消息。
在观察实验现象的同时,要对实验仪器进行控制,这就需要使用多线程来实现,主线程是视频播放,实验仪器控制就会开启新的子线程来执行,简单的代码实现如下:
在主线程中定义handler:
private Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg){
super.handleMessage(msg);
switch(msg.what){
case 1:
……
break;
} } }
在另一线程中执行任务:
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
控制实验仪器通过Socket 通信[7]实现,包括3 个步骤:建立连接、发送数据、关闭套接字。核心代码如下:
private Socket client = null;
client = new Socke(t "222.200.152.122",8888);
PrintWriter out = new
PrintWriter(client.getOutputStream());
out.println("#");
out.flush();
client.close();
整个Socket通信过程需要采用try…catch机制。
2.3.3 HTML5 <canvas> 标签
<canvas>标签是HTML5 中的新标签[8?9],只是一种图形容器,必须使用脚本来绘制图形,<canvas>有一个基于JavaScript的绘图API,所以在绘图方面非常方便。
其基本的使用步骤如下:
<canvas id = "myCanvas"></canvas>
<script>
var c = document.getElementById("myCanvas");
//获取要操作的canvas的ID
//操作canvas的代码…
</script>
在Android WebView控件中使用JavaScript,必须在WebView 中使能JavaScript,还要解决乱码问题,代码如下:
webView.getSettings().setDefaultTextEncodingName("gbk");
webView.getSettings().setJavaScriptEnabled(true);
3 应用实例
使用该客户端进行操作远程控制实验,选用单摆法测重力加速度实验[10],因为此实验需要实时观察实验现象、远程控制电机的开关、采集传感器数据进行运算等内容,最后通过实验的完成进而算出重力加速度。通过读图,输入t1=2.79 s,t2=0.83 s,然后客户端会自动计算出重力加速度,计算原理是由周期T=t2-t1,T=2π L g ,得到重力加速度g= 4π2 L T 2 ,客户端的数据处理界面如图3所示。
4 结语
本文设计的客户端,结合基于C/S模式的远程控制实验系统,实现了在客户端上通过互联网完成远程实验的操作过程。实时观察实验现象、低延时控制实验设备、准确处理实验数据等功能增强了远程实验的真实感,有助于更好地掌握实验原理。本客户端除了应用到以上实验外,还可以应用到其他物理实验的教学当中。基于Android平台的远程实验客户端突破了传统实验的时空限制,提高了实验设备的利用率,最大限度地共享实验教学资源。
教育期刊网 http://www.jyqkw.com
参考文献
[1] 吴先球,刘朝辉,叶穗红,等.网络环境下远程实验的技术探讨[J].实验技术与管理,2008,25(6):30?33.
[2] 公磊,周聪.基于Android的移动终端应用程序开发与研究[J].计算机与现代化,2008(8):85?89.
[3] 刘龙飞,章坚武.基于H.264的Web视频监控客户端设计与实现[J].现代电子技术,2011,34(19):27?30.
[4] 李宗辰,朱秀昌.基于VLC的Android多路视频监控系统[J].现代电子技术,2013,36(24):63?66.
[5] 杨丰盛.Android应用开发揭秘[M].北京:机械出版社,2010.
[6] 闫伟,叶建栲.多线程技术在Android手机开发中的应用[J].信息通信,2012(1):46?47.
[7] 孙剑,董超,夏继媛,等.基于Android的Socket(TCP/IP)在LED灯光控制系统中的应用[J].深圳职业技术学院学报,2012(5):19?23.
[8] 庞程,崔宣,粟潘,等.基于Android平台HTML5的研究与实现[J].机械管理开发,2012(6):136?137.
[9] 佚名.HTML <canvas>标签的具体使用方法[EB/OL]. [2013?05?07]. http://www.w3school.com.cn/tags/tag_canvas.asp.
[10] 张冠芬.单摆智能化测量重力加速度实验的研究[J].菏泽学院学报,2012,34(2):50?55.
作者简介:黄广发(1988—),男,广东阳江人,硕士研究生。研究方向为物联网技术与应用。
吴先球(1968—),男,广东平远人,教授,博士。研究方向为信息技术在物理实验中的应用、核磁共振技术及其应用。