国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android的遠(yuǎn)程實(shí)驗(yàn)客戶端設(shè)計(jì)

2015-07-22 22:32:48黃廣發(fā)吳先球
現(xiàn)代電子技術(shù) 2015年14期
關(guān)鍵詞:客戶端

黃廣發(fā)+吳先球

摘 要: 為了讓實(shí)驗(yàn)者在移動(dòng)終端上完成遠(yuǎn)程實(shí)驗(yàn)的異地操作,設(shè)計(jì)一種基于Android平臺(tái)的遠(yuǎn)程實(shí)驗(yàn)客戶端。通過對(duì)開源播放器VLC進(jìn)行二次開發(fā),使用Socket通信傳輸跨平臺(tái)控制指令,利用HTML5中的canvas標(biāo)簽繪畫波形圖,實(shí)現(xiàn)客戶端進(jìn)行遠(yuǎn)程實(shí)驗(yàn)的視頻監(jiān)控、遠(yuǎn)程控制實(shí)驗(yàn)儀器和數(shù)據(jù)處理等功能。以單擺法測(cè)重力加速度實(shí)驗(yàn)進(jìn)行效果驗(yàn)證,實(shí)測(cè)結(jié)果表明,客戶端具有穩(wěn)定可靠、實(shí)驗(yàn)數(shù)據(jù)處理精度高、人機(jī)交互性好等優(yōu)點(diǎn)。

關(guān)鍵詞: 遠(yuǎn)程實(shí)驗(yàn); Android; 客戶端; HTML5

中圖分類號(hào): TN911.2?34; TP311.52 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2015)14?0089?03

0 引 言

在當(dāng)今信息技術(shù)高速發(fā)展的時(shí)代,學(xué)習(xí)的自主化、智能化和終身化使得遠(yuǎn)程教育必須要與時(shí)俱進(jìn),就是要運(yùn)用信息技術(shù)改善遠(yuǎn)程教學(xué)系統(tǒng)以滿足人們的迫切需求。遠(yuǎn)程實(shí)驗(yàn)[1]是通過互聯(lián)網(wǎng)遠(yuǎn)程操作實(shí)驗(yàn)儀器,在異地完成真實(shí)的實(shí)驗(yàn)過程。遠(yuǎn)程實(shí)驗(yàn)不受時(shí)空限制,特別是隨著平板電腦、智能手機(jī)等移動(dòng)終端的普及,Android系統(tǒng)占據(jù)了主流,只要連接了Internet,就可以根據(jù)實(shí)驗(yàn)者的水平和需要,隨時(shí)隨地使用客戶端去選做各種實(shí)驗(yàn),這種移動(dòng)學(xué)習(xí)環(huán)境下的實(shí)驗(yàn)教學(xué)模式增加了教學(xué)的靈活性,具有廣泛的應(yīng)用前景。

為了滿足移動(dòng)學(xué)習(xí)的需求,本文結(jié)合遠(yuǎn)程控制實(shí)驗(yàn)的系統(tǒng)特點(diǎn),設(shè)計(jì)了一種基于Android的客戶端,實(shí)現(xiàn)了遠(yuǎn)程控制實(shí)驗(yàn)的移動(dòng)性操作。

1 系統(tǒng)硬件及其工作原理

遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)的硬件結(jié)構(gòu)如圖1所示,服務(wù)器通過串口連接控制模塊,控制模塊連接實(shí)驗(yàn)儀器,通過執(zhí)行服務(wù)器傳送過來的指令控制實(shí)驗(yàn)儀器,并采集實(shí)驗(yàn)數(shù)據(jù)。攝像機(jī)捕獲現(xiàn)場(chǎng)儀器的運(yùn)行情況通過USB接口反饋給服務(wù)器,服務(wù)器再通過網(wǎng)絡(luò)及時(shí)反饋給遠(yuǎn)程的操作者。

控制模塊主要由主控單片機(jī)和相關(guān)外設(shè)組成,服務(wù)器上使用LabVIEW軟件與控制模塊進(jìn)行通信,使用VLC media player進(jìn)行流媒體數(shù)據(jù)的編碼和傳輸,使用Tomcat進(jìn)行搭建Web應(yīng)用服務(wù)器,響應(yīng)HTML頁面的請(qǐng)求訪問,提供了實(shí)驗(yàn)數(shù)據(jù)處理功能。

2 客戶端設(shè)計(jì)

客戶端是遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)的一部分,實(shí)驗(yàn)者直接在客戶端上進(jìn)行遠(yuǎn)程實(shí)驗(yàn)的操作,具有實(shí)時(shí)觀察實(shí)驗(yàn)現(xiàn)象、實(shí)時(shí)遠(yuǎn)程控制實(shí)驗(yàn)儀器、實(shí)驗(yàn)數(shù)據(jù)接收與處理等功能。

圖1 系統(tǒng)硬件結(jié)構(gòu)圖

2.1 Android應(yīng)用程序開發(fā)環(huán)境

開發(fā)環(huán)境[2]由JDK(Java開發(fā)工具包)、Eclipse(開發(fā)Java程序的軟件工具)、Android SDK(Android專屬的軟件開發(fā)工具包)、ADT(開發(fā)Android應(yīng)用程序的插件)、NDK(原生開發(fā)工具包)5部分組成,通過安裝和進(jìn)行相應(yīng)的配置即可完成開發(fā)環(huán)境的搭建。

2.2 功能流程

遠(yuǎn)程實(shí)驗(yàn)的實(shí)驗(yàn)儀器是實(shí)際設(shè)備,遠(yuǎn)程用戶使用客戶端通過網(wǎng)絡(luò)對(duì)其進(jìn)行操作,控制實(shí)驗(yàn)設(shè)備的運(yùn)行??蛻舳说恼w功能如圖2所示,其中觀察實(shí)驗(yàn)現(xiàn)象部分是先要接入流媒體服務(wù)器,再把通過HTTP協(xié)議傳輸過來的H.264視頻流進(jìn)行解碼[3],最后通過控件SurfaceView播放出來;控制實(shí)驗(yàn)儀器部分主要是Socket通信,在主線程下申請(qǐng)子線程進(jìn)行處理,具體采用Handler消息傳遞機(jī)制;數(shù)據(jù)處理部分是下載服務(wù)器端采集為txt格式的數(shù)據(jù)文件,讀取后在HTML5上使用canvas繪制波形圖,這種可視化的數(shù)據(jù)分析可以讓實(shí)驗(yàn)者讀取數(shù)據(jù)進(jìn)行公式運(yùn)算。

圖2 功能流程圖

2.3 關(guān)鍵技術(shù)

2.3.1 JNI接口

將開源播放器VLC[4]應(yīng)用到Android上,需要通過將VLC的源代碼編譯成庫文件,再通過Android提供的JNI接口調(diào)用,因?yàn)閂LC的代碼完全由C/C++編寫,在需要調(diào)用第三方C/C++庫文件時(shí),使用JNI接口的應(yīng)用[5]可以讓開發(fā)者實(shí)現(xiàn)一些用Java語言難以實(shí)現(xiàn)的功能。

在上層通過以下代碼載入已經(jīng)編譯好的libvlcjni.so庫文件:

{

System.loadLibrary(“vlcjni”);

}

LibVLC類通過聲明庫中的本地函數(shù)就可以在上層應(yīng)用程序調(diào)用。

在主類MainActivity中,調(diào)用VLC接收服務(wù)器端發(fā)送的視頻流,經(jīng)過程序處理后進(jìn)行播放,關(guān)鍵代碼如下:

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 多線程應(yīng)用

采用多線程技術(shù)可以避免UI線程的阻塞,其中Handler Message[6]方法最為常用。具體操作是在新啟動(dòng)的線程中發(fā)送消息,在主線程中獲取、處理消息,通過回調(diào)的方式,主線程能夠處理先啟動(dòng)線程所發(fā)送的消息。

在觀察實(shí)驗(yàn)現(xiàn)象的同時(shí),要對(duì)實(shí)驗(yàn)儀器進(jìn)行控制,這就需要使用多線程來實(shí)現(xiàn),主線程是視頻播放,實(shí)驗(yàn)儀器控制就會(huì)開啟新的子線程來執(zhí)行,簡(jiǎn)單的代碼實(shí)現(xiàn)如下:

在主線程中定義handler:

private Handler handler = new Handler()

{

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

switch(msg.what){

case 1:

……

break;

} } }

在另一線程中執(zhí)行任務(wù):

Message message = new Message();

message.what = 1;

handler.sendMessage(message);

控制實(shí)驗(yàn)儀器通過Socket通信[7]實(shí)現(xiàn),包括3個(gè)步驟:建立連接、發(fā)送數(shù)據(jù)、關(guān)閉套接字。核心代碼如下:

private Socket client = null;

client = new Socket("222.200.152.122",8888);

PrintWriter out = new

PrintWriter(client.getOutputStream());

out.println("#");

out.flush();

client.close();

整個(gè)Socket通信過程需要采用try…catch機(jī)制。

2.3.3 HTML5 標(biāo)簽

標(biāo)簽是HTML5中的新標(biāo)簽[8?9],只是一種圖形容器,必須使用腳本來繪制圖形,有一個(gè)基于JavaScript的繪圖API,所以在繪圖方面非常方便。其基本的使用步驟如下:

在Android WebView控件中使用JavaScript,必須在WebView中使能JavaScript,還要解決亂碼問題,代碼如下:

webView.getSettings().setDefaultTextEncodingName("gbk");

webView.getSettings().setJavaScriptEnabled(true);

3 應(yīng)用實(shí)例

使用該客戶端進(jìn)行操作遠(yuǎn)程控制實(shí)驗(yàn),選用單擺法測(cè)重力加速度實(shí)驗(yàn)[10],因?yàn)榇藢?shí)驗(yàn)需要實(shí)時(shí)觀察實(shí)驗(yàn)現(xiàn)象、遠(yuǎn)程控制電機(jī)的開關(guān)、采集傳感器數(shù)據(jù)進(jìn)行運(yùn)算等內(nèi)容,最后通過實(shí)驗(yàn)的完成進(jìn)而算出重力加速度。通過讀圖,輸入t1=2.79 s,t2=0.83 s,然后客戶端會(huì)自動(dòng)計(jì)算出重力加速度,計(jì)算原理是由周期T=t2-t1,T=2π[Lg],得到重力加速度g=[4π2LT2],客戶端的數(shù)據(jù)處理界面如圖3所示。

4 結(jié) 語

本文設(shè)計(jì)的客戶端,結(jié)合基于C/S模式的遠(yuǎn)程控制實(shí)驗(yàn)系統(tǒng),實(shí)現(xiàn)了在客戶端上通過互聯(lián)網(wǎng)完成遠(yuǎn)程實(shí)驗(yàn)的操作過程。實(shí)時(shí)觀察實(shí)驗(yàn)現(xiàn)象、低延時(shí)控制實(shí)驗(yàn)設(shè)備、準(zhǔn)確處理實(shí)驗(yàn)數(shù)據(jù)等功能增強(qiáng)了遠(yuǎn)程實(shí)驗(yàn)的真實(shí)感,有助于更好地掌握實(shí)驗(yàn)原理。本客戶端除了應(yīng)用到以上實(shí)驗(yàn)外,還可以應(yīng)用到其他物理實(shí)驗(yàn)的教學(xué)當(dāng)中?;贏ndroid平臺(tái)的遠(yuǎn)程實(shí)驗(yàn)客戶端突破了傳統(tǒng)實(shí)驗(yàn)的時(shí)空限制,提高了實(shí)驗(yàn)設(shè)備的利用率,最大限度地共享實(shí)驗(yàn)教學(xué)資源。

圖3 數(shù)據(jù)處理界面圖

參考文獻(xiàn)

[1] 吳先球,劉朝輝,葉穗紅,等.網(wǎng)絡(luò)環(huán)境下遠(yuǎn)程實(shí)驗(yàn)的技術(shù)探討[J].實(shí)驗(yàn)技術(shù)與管理,2008,25(6):30?33.

[2] 公磊,周聰.基于Android的移動(dòng)終端應(yīng)用程序開發(fā)與研究[J].計(jì)算機(jī)與現(xiàn)代化,2008(8):85?89.

[3] 劉龍飛,章堅(jiān)武.基于H.264的Web視頻監(jiān)控客戶端設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2011,34(19):27?30.

[4] 李宗辰,朱秀昌.基于VLC的Android多路視頻監(jiān)控系統(tǒng)[J].現(xiàn)代電子技術(shù),2013,36(24):63?66.

[5] 楊豐盛.Android應(yīng)用開發(fā)揭秘[M].北京:機(jī)械出版社,2010.

[6] 閆偉,葉建栲.多線程技術(shù)在Android手機(jī)開發(fā)中的應(yīng)用[J].信息通信,2012(1):46?47.

[7] 孫劍,董超,夏繼媛,等.基于Android的Socket(TCP/IP)在LED燈光控制系統(tǒng)中的應(yīng)用[J].深圳職業(yè)技術(shù)學(xué)院學(xué)報(bào),2012(5):19?23.

[8] 龐程,崔宣,粟潘,等.基于Android平臺(tái)HTML5的研究與實(shí)現(xiàn)[J].機(jī)械管理開發(fā),2012(6):136?137.

[9] 佚名.HTML 標(biāo)簽的具體使用方法[EB/OL]. [2013?05?07]. http://www.w3school.com.cn/tags/tag_canvas.asp.

[10] 張冠芬.單擺智能化測(cè)量重力加速度實(shí)驗(yàn)的研究[J].菏澤學(xué)院學(xué)報(bào),2012,34(2):50?55.

猜你喜歡
客戶端
縣級(jí)臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
孵化垂直頻道:新聞客戶端新策略
基于Vanconnect的智能家居瘦客戶端的設(shè)計(jì)與實(shí)現(xiàn)
客戶端空間數(shù)據(jù)緩存策略
古交市| 凤城市| 新巴尔虎右旗| 依兰县| 策勒县| 湟源县| 泾源县| 红原县| 秭归县| 台南市| 惠来县| 军事| 清远市| 拜城县| 扶余县| 建水县| 莫力| 丰都县| 柞水县| 兴义市| 曲麻莱县| 科技| 城步| 电白县| 民县| 苏尼特右旗| 望奎县| 渝中区| 菏泽市| 毕节市| 阳高县| 庆云县| 凤翔县| 石景山区| 筠连县| 舟曲县| 寿光市| 永川市| 华容县| 增城市| 永安市|