基于Android的远程实验客户端设计

  • 投稿阿喂
  • 更新时间2015-09-11
  • 阅读量359次
  • 评分4
  • 24
  • 0

黄广发,吴先球

(华南师范大学物理与电信工程学院,广东广州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—),男,广东平远人,教授,博士。研究方向为信息技术在物理实验中的应用、核磁共振技术及其应用。