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

?

基于Android平臺串口驅(qū)動的多傳感器數(shù)據(jù)傳輸?shù)膶崿F(xiàn)

2017-05-17 09:18崔世鋼代鳳輝梁帆
江蘇農(nóng)業(yè)科學(xué) 2016年1期
關(guān)鍵詞:Android系統(tǒng)智能控制

崔世鋼 代鳳輝 梁帆

摘要:為了實現(xiàn)將植物生長柜傳感器節(jié)點的信息傳輸?shù)紸ndroid系統(tǒng)下,同時在該系統(tǒng)下實現(xiàn)對各傳感器節(jié)點的數(shù)據(jù)顯示和控制。本研究在對Android平臺串口驅(qū)動進行重點分析的基礎(chǔ)上,設(shè)計并實現(xiàn)多傳感器(包括2個溫度傳感器、1個濕度傳感器、1個光照傳感器、1個二氧化碳濃度傳感器)的數(shù)據(jù)傳輸和實時顯示。Android平臺具有強大的功能,將多傳感器數(shù)據(jù)傳輸?shù)皆撈脚_下,為后續(xù)開發(fā)提供廣闊空間。

關(guān)鍵詞:智能植物生長柜;Android系統(tǒng);智能控制;串口驅(qū)動;多傳感器;

中圖分類號:TP274;S126 文獻標(biāo)志碼:A 文章編號:1002—1302(2016)01—0403—03

當(dāng)前,世界人口不斷增長、物質(zhì)需求不斷增加,而資源卻不斷減少,環(huán)境不斷惡化,為解決全球資源與環(huán)境問題,設(shè)施農(nóng)業(yè)越來越受到人們的推崇,得到了前所未有的發(fā)展與應(yīng)用。智能植物生長柜作為設(shè)施農(nóng)業(yè)的一部分,以節(jié)省資源、環(huán)境保護、安全、放心、健康為出發(fā)點,得到社會的廣泛關(guān)注與認(rèn)可。隨著城市的現(xiàn)代化建設(shè)步伐和環(huán)境污染速度越來越快,可利用農(nóng)業(yè)耕地面積越來越少,同時人們生活水平的提高,對生活質(zhì)量也提出了更高的要求。作為一種保護環(huán)境、節(jié)約資源和能生產(chǎn)出安全健康的新型植物生產(chǎn)系統(tǒng),智能植物生長柜有很強的應(yīng)用性。在我國,對于農(nóng)業(yè)生產(chǎn)環(huán)境的監(jiān)控基本處于人工采樣、化學(xué)分析的人工監(jiān)測階段,實時性不好,少數(shù)便攜式儀表還存在使用維護困難等問題,此外生長柜對環(huán)境具有非常高的要求。Android系統(tǒng)作為開源的操作系統(tǒng)、操作簡單、功能強大,基于該平臺下的各類控制系統(tǒng)很多大學(xué)與公司的研究方向。Android設(shè)備驅(qū)動程序是Android操作系統(tǒng)的重要組成部分,是軟件與硬件連接的“橋梁”,分析該系統(tǒng)下的設(shè)備驅(qū)動運行機理,對于Android系統(tǒng)上層應(yīng)用程序的設(shè)計開發(fā)有重大的指導(dǎo)意義。

1材料與方法

1.1系統(tǒng)方案

系統(tǒng)主要分為執(zhí)行模塊、生長柜監(jiān)控模塊、Android測控端等部分。本研究對Android系統(tǒng)內(nèi)核中的串口驅(qū)動程序進行了詳細的分析,并在此基礎(chǔ)上編寫了應(yīng)用程序,實現(xiàn)多傳感器的數(shù)據(jù)傳輸。試驗利用FS_V210開發(fā)板(運行Android系統(tǒng))為終端,由下位機STM32實現(xiàn)對5個傳感器數(shù)據(jù)的采集,通過其串口與運行Android系統(tǒng)的上位機進行通信,在開發(fā)板顯示屏上實時顯示5個傳感器數(shù)據(jù)。FS_V210開發(fā)板具有攝像頭、LCD觸摸屏、網(wǎng)口等豐富硬件資源,便于攜帶、交互性強、易于開發(fā),為智能植物生長柜提供優(yōu)秀的控制系統(tǒng)平臺。Android系統(tǒng)結(jié)構(gòu)框圖如圖1所示。

1.2實現(xiàn)方法

1.2.1 Android串口驅(qū)動開發(fā) 串口驅(qū)動的實現(xiàn)過程就是Android系統(tǒng)下的通信數(shù)據(jù)流和功能調(diào)用的過程。Android串口終端驅(qū)動結(jié)構(gòu)如圖2所示,串口驅(qū)動結(jié)構(gòu)共分為4個層次,即驅(qū)動層、HAL層(1ibhardware)、JNI層(java native inter-face)、Framework層和應(yīng)用層。

1.2.1.1串口驅(qū)動層 Android內(nèi)核是由標(biāo)準(zhǔn)的Linux內(nèi)核修改而來的,最底層的Android硬件驅(qū)動層就是Linux設(shè)備驅(qū)動層,二者內(nèi)核驅(qū)動程序的編寫方法是一樣的,都是以Linux模塊的方法實現(xiàn)的。驅(qū)動層是與硬件設(shè)備直接聯(lián)系的一層,通過訪問相應(yīng)驅(qū)動程序直接對硬件進行操作,在該層中定義串口設(shè)備文件的訪問方法,主要定義串口的Open、Read和Write。此外,還執(zhí)行了串口設(shè)備的注冊和初始化操作。

1.2.1.2 HAL層 硬件驅(qū)動程序一方面分布在Linux內(nèi)核中,另一方面分布在用戶空間的硬件抽象層中,在該層中增加串口的硬件抽象層模塊訪問Linux內(nèi)核驅(qū)動程序。按照An-droid硬件抽象層規(guī)范的要求,分別定義模塊ID(UART_HARDWARE_MODULE_ID)、模塊結(jié)構(gòu)體(struct uart_module_t)以及硬件接口結(jié)構(gòu)體(struct uart_control_device_t)。在硬件接口結(jié)構(gòu)體中,fd表示設(shè)備文件描述符,HAL層結(jié)構(gòu)如圖3所示。

1.2.1.3 JNI層 Android系統(tǒng)的應(yīng)用程序是用Java語言編寫的,而硬件驅(qū)動程序是用c語言來實現(xiàn)的,應(yīng)用程序要調(diào)用串口驅(qū)動程序操作硬件必須通過Java本地調(diào)用JNI來調(diào)用硬件抽象層接口。JNI層主要實現(xiàn)Java與C/C++之間的過渡,不涉及復(fù)雜的邏輯,只根據(jù)規(guī)則為上層函數(shù)調(diào)用串口的下層接口。該層定義HAL的模塊ID和2個全局變量sUartDe-vice和sUartModule,在Uart_init函數(shù)中,通過Android硬件抽象層提供的hw_get_module方法來加載模塊ID為UART_HARDWARE_MODULE_ID的硬件抽象層模塊,其中HELLO_HARDWARE_MODULE_ID是在中定義的。Android硬件抽象層會根據(jù)UART_HARDWARE_MOD-ULE_ID的值在Android系統(tǒng)的/system/lib/hw目錄中找到相應(yīng)的模塊,然后加載起來,并且返回hw_module_t接口給調(diào)用者使用。

1.2.1.4 Framework層 為硬件抽象層模塊編寫完串口的JNI方法后,須要為Android系統(tǒng)的Application Frameworks層增加硬件訪問服務(wù)MyUartService,通過該層提供的硬件服務(wù)來調(diào)用JNI方法,進而調(diào)用底層的硬件抽象層接口去訪問硬件。在Application Frameworks層中包含自定義的硬件服務(wù)MyUartService,在Android系統(tǒng)啟動時自動加載MyUartSer-vice。這時應(yīng)用程序就可以通過Java接口來訪問uart硬件服務(wù)了。

1.2.2串口應(yīng)用程序的開發(fā) 本研究中實現(xiàn)的功能是由單片機STM32實現(xiàn)對2個溫度傳感器(為區(qū)分2個溫度傳感器的值,顯示分別命名為根部溫度、溫度)、1個濕度傳感器、1個光照強度傳感器、1個CO2濃度傳感器數(shù)據(jù)的采集,通過其串口將接收到的5個傳感器數(shù)據(jù)在開發(fā)板上實時顯示。底層編寫的串口驅(qū)動程序,實現(xiàn)的功能是1個字節(jié)的讀和字符串的寫,在應(yīng)用程序?qū)诱{(diào)用字符型函數(shù)GpsDataUpdate()實現(xiàn)1個字節(jié)的讀取,整型函數(shù)GpsDataUpdate_write(string s)實現(xiàn)字符串的寫。為實現(xiàn)各個傳感器數(shù)據(jù)的正確顯示,須要在上層對串口應(yīng)用程序進行開發(fā)。程序設(shè)計流程圖如圖4所示。

開發(fā)的關(guān)鍵技術(shù)和部分代碼如下:(1)在Android系統(tǒng)應(yīng)用程序開發(fā)軟件eclipse中新建工程,然后在該工程新建Uart類,這個類主要用來加載SO文件(uart_runtime.so),通過JNI的方式打開關(guān)閉串口。

(2)為實現(xiàn)通過串口接收到的所有數(shù)據(jù)的顯示,定義1個字符串s1,用于存放通過GpsDataUpdate()讀取到的1個字節(jié)(以下代碼是把該字節(jié)先讀取到sbuffer,再由sbuffer存放于s1辛),在這里有1個while循環(huán)用于判斷是否數(shù)據(jù)接收完,未接收完就繼續(xù)接收,并把接收到的值放到s1,接收完就跳出。在區(qū)里加1個線程將接收到的數(shù)據(jù)實時顯示,睡眠時間為1 s。

(3)實現(xiàn)以上代碼的功能,可以讀到5個傳感器的數(shù)據(jù),但是須要將5個傳感器的數(shù)據(jù)分開,分別顯示在5個EditText中。利用split根據(jù)給定的參數(shù)把原來的分割為幾個子字符串。核心代碼如下:

在本例中,下位機STM32串口發(fā)送的1串?dāng)?shù)據(jù)中開頭與結(jié)尾分別加上字母b,中間的每個傳感器數(shù)據(jù)之間都加上字母a。以上代碼strView.split(“b”)中,將字符串strView根據(jù)參數(shù)b分割為3個部分,取中間的傳感器數(shù)據(jù)部分,再根據(jù)參數(shù)a進行分割,可以準(zhǔn)確得到5組數(shù)據(jù),分別存放于字符串strView0、strViewl等5個字符串中。updateView()為刷新函數(shù),數(shù)據(jù)不斷更新。

2結(jié)果與分析

本例中使用Android第3方圖形庫AndroidPlot繪制圖形,先創(chuàng)建1個數(shù)組保存繪制用的數(shù)據(jù),然后將數(shù)組轉(zhuǎn)換為XYSeries,將數(shù)組中的傳感器值繪制在圖形庫中,生成曲線圖。試驗結(jié)果以植物生長柜的空氣溫度為例,如圖5所示。

3結(jié)論

本研究通過對Android系統(tǒng)下的串口驅(qū)動原理的具體實現(xiàn)方法進行詳細分析的狀態(tài)下,實現(xiàn)FS_V210開發(fā)板與單片機STM32的串口通信,完成對智能植物生長柜中各個傳感器節(jié)點信息的接收與顯示,為實現(xiàn)生長柜的智能化、網(wǎng)絡(luò)化打下基礎(chǔ)。設(shè)計實例,開發(fā)Android系統(tǒng)的串口應(yīng)用程序,接收到5個傳感器數(shù)據(jù),對串口驅(qū)動程序進行驗證分析,對智能植物生長柜在Android系統(tǒng)下的開發(fā)具有指導(dǎo)意義。

猜你喜歡
Android系統(tǒng)智能控制
Android系統(tǒng)上的移動互聯(lián)網(wǎng)集成平臺開發(fā)機制
基于物聯(lián)網(wǎng)的智能控制項目實踐教學(xué)設(shè)計
應(yīng)用型人才培養(yǎng)導(dǎo)向下智能控制教學(xué)改革探討
淺談開關(guān)式電梯IC卡系統(tǒng)及展望
甘孜县| 丰顺县| 阿拉善右旗| 北宁市| 罗源县| 垣曲县| 温宿县| 三明市| 瓮安县| 延吉市| 南投县| 大安市| 新兴县| 黑河市| 涪陵区| 南涧| 安达市| 天等县| 洪雅县| 鲁甸县| 谢通门县| 武山县| 个旧市| 陆丰市| 龙南县| 南京市| 门源| 衡山县| 鄂尔多斯市| 迁安市| 邢台市| 富顺县| 赞皇县| 信阳市| 西宁市| 云霄县| 东兰县| 富宁县| 甘泉县| 施甸县| 琼海市|