亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Android的LTWin軟件的移植

        2022-11-25 04:38:50張日旺鄺美琪李幸梓崔港仔
        現(xiàn)代計(jì)算機(jī) 2022年17期
        關(guān)鍵詞:頁面功能方法

        張日旺,鄺美琪,李幸梓,崔港仔

        (廣州新華學(xué)院信息科學(xué)學(xué)院,東莞 523133)

        0 引言

        Android是一個(gè)專門為移動(dòng)終端設(shè)備設(shè)計(jì)的操作系統(tǒng)平臺(tái),憑借自身良好的穩(wěn)定性、可移植性和開放性,迅速占據(jù)了大部分的移動(dòng)電子設(shè)備市場(chǎng)[1]。合作企業(yè)方給出的LTWin軟件是為指定儀器(本文中的應(yīng)用主要適配電池包氣密測(cè)試設(shè)備S30)提供豐富功能的工具,在移植前LTWin軟件已可運(yùn)行在Windows XP、Windows 7、Windows 10操作系統(tǒng)的電腦上,而將該LTWin軟件從Windows端移植到Android端,不但讓測(cè)試者在不攜帶較重的電腦的情況下可以使用該軟件對(duì)產(chǎn)品進(jìn)行參數(shù)測(cè)試,且可實(shí)時(shí)觀察到產(chǎn)品在儀器中的情況和檢測(cè)返回的數(shù)據(jù)變化情況。

        將LTWin軟件移植至Android端,系統(tǒng)采用C/S架構(gòu),服務(wù)端與客戶端基于Android開發(fā),通信主要在TCP/IP網(wǎng)絡(luò)通信協(xié)議的基礎(chǔ)上進(jìn)行,使用socket進(jìn)行實(shí)現(xiàn)。根據(jù)已有的PC端的LTWin軟件功能進(jìn)行需求分析,逐步地將功能移植至Android端。

        1 系統(tǒng)總體架構(gòu)設(shè)計(jì)

        1.1 需求分析

        對(duì)已給出的PC端LTWin軟件測(cè)試功能后,得知移植到Android端的應(yīng)用軟件具有以下功能需求:

        (1)實(shí)現(xiàn)客戶端到服務(wù)端的連接,從客戶端發(fā)送包含指令的數(shù)據(jù)包到服務(wù)端,服務(wù)端可以正常接收。同時(shí)客戶端也能接收到服務(wù)端返回來的數(shù)據(jù),以實(shí)現(xiàn)設(shè)置儀器參數(shù)的功能,以及能控制儀器進(jìn)行測(cè)試并查看測(cè)試結(jié)果的功能;

        (2)軟件在接收到結(jié)果數(shù)據(jù)時(shí),能在本地存儲(chǔ)數(shù)據(jù)的存儲(chǔ)需求,當(dāng)數(shù)據(jù)達(dá)到一定量時(shí)刪除舊數(shù)據(jù),確保不會(huì)占用大量的存儲(chǔ)空間。此外,能查看、查詢本地?cái)?shù)據(jù),能實(shí)現(xiàn)根據(jù)條件搜索數(shù)據(jù)的查詢需求;

        (3)能選定某些數(shù)據(jù),而后生成折線圖,實(shí)現(xiàn)數(shù)據(jù)可視化需求。

        對(duì)于非功能需求而言,界面設(shè)計(jì)應(yīng)簡(jiǎn)潔友好。

        1.2 系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)

        根據(jù)1.1中對(duì)軟件功能的需求分析,可以得到該應(yīng)用系統(tǒng)需要完成的功能子模塊主要有三個(gè):通信模塊、數(shù)據(jù)庫模塊和數(shù)據(jù)可視化模塊。系統(tǒng)功能模塊圖如圖1所示。

        本系統(tǒng)的整體架構(gòu)是以服務(wù)器作為橋梁,硬件設(shè)備由支持TCP/IP通信協(xié)議的通信模塊組成;S30儀器通過Socket與服務(wù)器連接。Android端與氣密性檢測(cè)設(shè)備同時(shí)連接服務(wù)器,從而實(shí)現(xiàn)遠(yuǎn)程通信和數(shù)據(jù)傳輸。系統(tǒng)總體架構(gòu)如圖2所示。

        S30儀器的遠(yuǎn)程控制系統(tǒng)主要包括三個(gè)部分,分別是手機(jī)終端、公司網(wǎng)關(guān)服務(wù)器和S30儀器。用戶使用智能手機(jī)通過網(wǎng)絡(luò)連接到公司網(wǎng)關(guān)服務(wù)器,然后公司網(wǎng)關(guān)服務(wù)器連接到S30儀器,用戶發(fā)送帶有指令的數(shù)據(jù)包給公司網(wǎng)關(guān)服務(wù)器,然后公司網(wǎng)關(guān)服務(wù)器將數(shù)據(jù)包發(fā)送給S30儀器,S30儀器執(zhí)行相關(guān)的操作,將執(zhí)行結(jié)果返回到公司網(wǎng)關(guān)服務(wù)器,公司網(wǎng)關(guān)服務(wù)器再將結(jié)果通過網(wǎng)絡(luò)返回到手機(jī)終端,以此實(shí)現(xiàn)對(duì)S30儀器的控制與管理[2]。本文主要實(shí)現(xiàn)手機(jī)終端的設(shè)計(jì)。

        2 軟件設(shè)計(jì)與實(shí)現(xiàn)

        2.1 客戶端UI設(shè)計(jì)與實(shí)現(xiàn)

        由于已有PC端的軟件,因此本項(xiàng)目的UI界面設(shè)計(jì)主要仿照PC端的軟件操作界面進(jìn)行類似功能的分類設(shè)計(jì),即將類似的功能放在一個(gè)頁面中進(jìn)行管理,這樣測(cè)試者可以依據(jù)需要的功能來尋找相應(yīng)的頁面即可找到相應(yīng)的功能,方便用戶進(jìn)行操作,提高工作效率。這就涉及到頁面間的跳轉(zhuǎn)以及各頁面的控件布局設(shè)計(jì)。

        2.1.1 頁面跳轉(zhuǎn)的設(shè)計(jì)與實(shí)現(xiàn)

        本app主要有四大主頁面,分別是設(shè)置查詢、單機(jī)測(cè)試、聯(lián)機(jī)測(cè)試以及數(shù)據(jù)查詢。要實(shí)現(xiàn)在這四個(gè)頁面中進(jìn)行跳轉(zhuǎn),本項(xiàng)目采用了Android Jetpack程序庫中的Navigation組件進(jìn)行實(shí)現(xiàn),在完成Navigation的基本配置之后,由于在Navigation里頁面跳轉(zhuǎn)是交給NavController處理的,因此需要獲取NavController,獲取到之后通過navigate方法傳入Action的id,實(shí)現(xiàn)跳轉(zhuǎn)。四大頁面依次如圖3的(a)、(b)、(c)、(d)所示。

        2.1.2用戶主控界面的設(shè)計(jì)與實(shí)現(xiàn)

        用戶的主控界面含有大量的操作,其中在設(shè)置查詢中包含了八分頁,分別是首頁、時(shí)間/單位、壓力參數(shù)、測(cè)試參數(shù)、通訊設(shè)置、綜合設(shè)置、儀器信息和S20C配置,另外三個(gè)頁面無分頁。本研究使用ViewPager來設(shè)置查詢頁面的分頁,利用Android Jetpack程序庫中的Animation組件實(shí)現(xiàn)分頁間切換的頁面滑動(dòng)動(dòng)畫效果,頁面中的布局文件均采用LinerLayout作為整體布局,采用RelativeLayout作為內(nèi)部各組件的布局,利用ScrollView實(shí)現(xiàn)頁面的上下滾動(dòng),利用EditText實(shí)現(xiàn)測(cè)試參數(shù)的輸入,利用Text顯示測(cè)試的結(jié)果,采用Button來觸發(fā)各功能的具體操作。部分分頁界面如圖4的(a)、(b)、(c)、(d)所示。

        2.2 通信模塊設(shè)計(jì)與實(shí)現(xiàn)

        2.2.1 控制功能設(shè)計(jì)

        當(dāng)用戶打開功能界面時(shí),設(shè)置好參數(shù),點(diǎn)擊相應(yīng)的功能進(jìn)行測(cè)試,然后系統(tǒng)會(huì)查詢是否連接到了公司網(wǎng)關(guān)服務(wù)器,若已連接,則將帶有指令和數(shù)據(jù)的數(shù)據(jù)包發(fā)送給服務(wù)器端,服務(wù)端接收到數(shù)據(jù)包,解析之后發(fā)送給S30儀器進(jìn)行檢測(cè);如果系統(tǒng)檢測(cè)未連接公司網(wǎng)關(guān)服務(wù)器,則會(huì)提示用戶需要連接公司網(wǎng)關(guān)服務(wù)器,要求用戶輸入網(wǎng)關(guān)的IP地址和要控制的儀器的端口號(hào),然后進(jìn)行連接,連接成功,再進(jìn)行已連接公司網(wǎng)關(guān)服務(wù)器時(shí)的相應(yīng)操作。

        2.2.2 手機(jī)終端與公司網(wǎng)關(guān)服務(wù)器建立連接

        實(shí)現(xiàn)手機(jī)終端和公司網(wǎng)關(guān)服務(wù)器之間連接涉及到了Socket通信[3]。Socket又被稱為“套接字”,是一種抽象層,被用來實(shí)現(xiàn)網(wǎng)絡(luò)上兩個(gè)設(shè)備之間的收發(fā)數(shù)據(jù),每一個(gè)Socket由一個(gè)IP地址和一個(gè)端口號(hào)唯一確定,通常被用來實(shí)現(xiàn)服務(wù)端和客戶端的連接[3]。

        服務(wù)端實(shí)現(xiàn)步驟如下:

        (1)服務(wù)端創(chuàng)建服務(wù)端的Socket服務(wù),即ServerSocket,開始監(jiān)聽來自客戶端的連接請(qǐng)求;

        (2)當(dāng)接收到連接請(qǐng)求時(shí),調(diào)用accept方法進(jìn)行連接,客戶端Socket連接到服務(wù)端的ServerSocket;

        (3)創(chuàng)建OutputStream和InputStream的對(duì)象實(shí)例,利用write方法和read方法與客戶端進(jìn)行通信[4];

        (4)當(dāng)結(jié)束通信時(shí),調(diào)用Socket的close方法關(guān)閉連接。

        客戶端實(shí)現(xiàn)步驟如下:

        (1)建立客戶端的Socket服務(wù);

        (2)客戶端調(diào)用connect方法與服務(wù)端進(jìn)行Socket連接;

        (3)創(chuàng)建OutputStream和InputStream的對(duì)象實(shí)例,利用write方法和read方法與服務(wù)端端進(jìn)行通信;

        (4)當(dāng)結(jié)束通信時(shí),調(diào)用Socket中的close方法關(guān)閉連接。

        客戶端(或服務(wù)端)獲取Socket中的輸出流,將數(shù)據(jù)寫入到輸出流,通過網(wǎng)絡(luò)發(fā)送到服務(wù)端(或客戶端)。獲取Socket中的輸入流,讀取里面的數(shù)據(jù),即完成一次通信。

        服務(wù)端和客戶端的連接通信過程如圖5所示。

        客戶端與服務(wù)器連接效果展示如圖6、圖7和圖8所示。

        2.3 數(shù)據(jù)庫模塊設(shè)計(jì)與實(shí)現(xiàn)

        針對(duì)測(cè)試過程中存在數(shù)據(jù)查詢麻煩、接收的數(shù)據(jù)難以存儲(chǔ)等問題,該本地存儲(chǔ)數(shù)據(jù)模塊以Android為基礎(chǔ),利用SQLite數(shù)據(jù)庫技術(shù)設(shè)計(jì),實(shí)現(xiàn)測(cè)試結(jié)果信息的快速獲取和顯示,提高查詢效率,并實(shí)現(xiàn)當(dāng)數(shù)據(jù)達(dá)到一定量時(shí)刪除舊數(shù)據(jù),來確保不會(huì)占用大量存儲(chǔ)空間。

        該模塊采用數(shù)據(jù)層、邏輯層和應(yīng)用層三層體系結(jié)構(gòu),其中數(shù)據(jù)層是此部分的基礎(chǔ),主要負(fù)責(zé)測(cè)試結(jié)構(gòu)數(shù)據(jù)的存儲(chǔ)檢索;邏輯層負(fù)責(zé)鏈接數(shù)據(jù)層和應(yīng)用層;應(yīng)用層是應(yīng)用界面,將邏輯層獲取的請(qǐng)求信息展示給用戶。

        在此我們需要使用到基本的操作——增刪改查,因此需要重寫這些操作,將其封裝到繼承了SQLiteOpenHelper的dbHelper類里。

        操作步驟如下:

        (1)創(chuàng)建一個(gè)數(shù)據(jù)庫:先創(chuàng)建一個(gè)DatabaseHelper對(duì)象,使用這個(gè)對(duì)象調(diào)用getWritableDatabase方法創(chuàng)建一個(gè)可讀寫的數(shù)據(jù)庫;

        (2)創(chuàng)建表格:自定義一個(gè)數(shù)據(jù)庫子類db-Helper繼承SQLiteOpenHelper,重寫里面的onCreate和onUprade方法,在onCreate方法中寫好sql語句,并且采用execSQL(sql)方法運(yùn)行sql語句,實(shí)現(xiàn)創(chuàng)建表格的操作;

        (3)插入數(shù)據(jù)庫:創(chuàng)建ContentValues對(duì)象,取名叫values,使用put方法向該對(duì)象中插入鍵值對(duì),最后調(diào)用sqliteDatabase的insert方法插入數(shù)據(jù)庫;

        (4)修改數(shù)據(jù)庫:創(chuàng)建ContentValues對(duì)象,取名叫values,使用put方法向該對(duì)象中插入鍵值對(duì),最后調(diào)用sqliteDatabase的update方法插入數(shù)據(jù)庫;

        (5)刪除數(shù)據(jù):調(diào)用sqliteDatabase的delete方法刪除數(shù)據(jù);

        (6)查詢數(shù)據(jù):調(diào)用sqliteDatabase的query方法遍歷查詢數(shù)據(jù)。

        實(shí)現(xiàn)了基本操作之后,還要根據(jù)本系統(tǒng)的需求再定義一些操作。

        當(dāng)數(shù)據(jù)達(dá)到2000條時(shí),我們需要?jiǎng)h除舊數(shù)據(jù),然后才能繼續(xù)添加新數(shù)據(jù),SQL語句如下所示:

        //刪除testinfo表里的數(shù)據(jù)

        DELETE FROM testinfo

        //當(dāng)數(shù)據(jù)條數(shù)大于2000行時(shí)

        WHERE id>=2000 IN

        //選擇其中的前100條進(jìn)行刪除

        (SELECT id FROM testinfo ORDER BY id LIMIT 100);

        處理流程如圖9所示。

        表1為檢測(cè)結(jié)果表,Id字段為主鍵,用其存儲(chǔ)檢測(cè)結(jié)果數(shù)據(jù)信息。

        表1 檢測(cè)結(jié)果表

        2.4 數(shù)據(jù)可視化模塊設(shè)計(jì)與實(shí)現(xiàn)

        該模塊將根據(jù)得到的數(shù)據(jù)進(jìn)行可視化,數(shù)據(jù)可視化是將數(shù)據(jù)用圖形化的方式來表示,可以幫助企業(yè)迅速明白某些數(shù)據(jù)的重要性,理解數(shù)據(jù)的背后含義。數(shù)據(jù)可視化通常是理解和交流分析的第一步,因?yàn)楫?dāng)數(shù)據(jù)以圖形方式而非數(shù)字方式呈現(xiàn)時(shí),更利于人們理解數(shù)據(jù),而且還可以實(shí)現(xiàn)多維度的數(shù)據(jù)比較。

        本研究中使用折線圖來進(jìn)行數(shù)據(jù)可視化。折線圖可以顯示隨時(shí)間(根據(jù)常用比例設(shè)置)而變化的連續(xù)數(shù)據(jù),因此非常適用于顯示在相等時(shí)間間隔下的數(shù)據(jù)變化趨勢(shì)。在折線圖中,類別數(shù)據(jù)沿水平軸均勻分布,所有值數(shù)據(jù)沿垂直軸均勻分布,可以使用戶更直觀地看到隨時(shí)間推移的檢測(cè)情況,能直接知道在多長時(shí)間、什么條件下氣密性達(dá)到了一個(gè)閾值,以便進(jìn)行改進(jìn)。

        接收到輸入的數(shù)據(jù)之后,首先調(diào)用JFreeChart類的createLineChar(t)和setBackgroud-Pain(t)以及getTitle()方法,來設(shè)置折線圖的名稱、字體和顏色;其次則是CategoryPlot類的setDomainGridlinesVisible()、setRangeGridlines-Visible()、setDomainGridlinePaint()、setRange GridlinePain(t)方法實(shí)現(xiàn)x軸、y軸是否可見,以及網(wǎng)格橫豎線的顏色,setNoDataMessage()方法則表示當(dāng)沒有數(shù)據(jù)顯示時(shí)的文字說明。

        隨后即是NumberAxis類的setStandardTick-Units()、setUpperMargin()、setAutoRangeIncludesZero()、setLabelAngle()方法來設(shè)置數(shù)據(jù)軸顯示的格式,數(shù)據(jù)范圍,是否包含0。然后到CategoryAxis類的setTickLabelFont()、setLabel-Font()、setCategoryLabelPositions()、setLower-Margin()、setUpperMargin()方法設(shè)置x軸坐標(biāo)和標(biāo)題的文字,左右邊距和橫軸傾斜角度;最后由LineAndShapeRenderer類的setBaseShapes-Visible()、setBaseLinesVisible()來決定最終折線圖是否顯示折點(diǎn)和折線。

        主要的類及類與類之間的關(guān)系如圖10所示,選擇數(shù)據(jù)庫中的泄露率作為縱軸、壓強(qiáng)作為橫軸進(jìn)行數(shù)據(jù)可視化的效果如圖11所示。

        3 結(jié)語

        本文將主要運(yùn)行于Windows版本的操作系統(tǒng)下的LTWin軟件功能移植至Android端。界面簡(jiǎn)潔友好,布局符合邏輯,操作簡(jiǎn)便,可以滿足針對(duì)測(cè)試電池包氣密性的工作人員的基本需求,使測(cè)試過程更加輕便,提高測(cè)試效率。但目前軟件可適配的氣密性檢測(cè)設(shè)備只有儀器S30,即可檢測(cè)氣密性的產(chǎn)品種類不多,故未來將會(huì)進(jìn)一步適配其它儀器,以完善移植后的軟件。

        猜你喜歡
        頁面功能方法
        大狗熊在睡覺
        也談詩的“功能”
        中華詩詞(2022年6期)2022-12-31 06:41:24
        刷新生活的頁面
        關(guān)于非首都功能疏解的幾點(diǎn)思考
        可能是方法不對(duì)
        用對(duì)方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        捕魚
        中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
        辨證施護(hù)在輕度認(rèn)知功能損害中的應(yīng)用
        亚洲日韩AV无码美腿丝袜| 国产操逼视频| 精品国产v无码大片在线观看| 亚洲国产香蕉视频欧美| 亚洲中文字幕乱码免费看| 成人影院在线视频免费观看| 国产精品成人久久电影| 亚洲综合国产精品一区二区99| 精品国产乱码久久免费看| 色熟妇人妻久久中文字幕| 爆乳熟妇一区二区三区霸乳| 欧美精品区| 青青草伊人视频在线观看| 中文字幕一区二区三区的| 久久久精品国产sm调教网站| 久久精品国产丝袜| 狼人综合干伊人网在线观看 | 丰满少妇高潮惨叫久久久| 午夜成人精品福利网站在线观看 | 二区免费在线视频观看| 国产网红主播无码精品| 成人免费xxxxx在线视频| 黑丝国产精品一区二区| 国产成人久久精品一区二区三区| 99久久人妻精品免费二区| 亚洲最大无码AV网站观看| 久久精品视频日本免费| 国产播放隔着超薄丝袜进入| 国产精品亚洲综合一区在线观看| 人妻少妇精品一区二区三区| 日韩精品人妻系列中文字幕| 男女后进式猛烈xx00动态图片| 亚洲AV秘 无码二区在线| 久久国产精品精品国产色| 男女性爽大片视频| 亚洲中文字幕第一页在线| 亚洲人成伊人成综合网中文| 国产一区二区三区色哟哟| 成 人免费va视频| 成人午夜无人区一区二区| 亚洲成在人线天堂网站|