• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Android平臺(tái)串口驅(qū)動(dòng)的多傳感器數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)

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

      崔世鋼 代鳳輝 梁帆

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

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

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

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

      1材料與方法

      1.1系統(tǒng)方案

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

      1.2實(shí)現(xiàn)方法

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

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

      1.2.1.2 HAL層 硬件驅(qū)動(dòng)程序一方面分布在Linux內(nèi)核中,另一方面分布在用戶(hù)空間的硬件抽象層中,在該層中增加串口的硬件抽象層模塊訪問(wèn)Linux內(nèi)核驅(qū)動(dòng)程序。按照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語(yǔ)言編寫(xiě)的,而硬件驅(qū)動(dòng)程序是用c語(yǔ)言來(lái)實(shí)現(xiàn)的,應(yīng)用程序要調(diào)用串口驅(qū)動(dòng)程序操作硬件必須通過(guò)Java本地調(diào)用JNI來(lái)調(diào)用硬件抽象層接口。JNI層主要實(shí)現(xiàn)Java與C/C++之間的過(guò)渡,不涉及復(fù)雜的邏輯,只根據(jù)規(guī)則為上層函數(shù)調(diào)用串口的下層接口。該層定義HAL的模塊ID和2個(gè)全局變量sUartDe-vice和sUartModule,在Uart_init函數(shù)中,通過(guò)Android硬件抽象層提供的hw_get_module方法來(lái)加載模塊ID為UART_HARDWARE_MODULE_ID的硬件抽象層模塊,其中HELLO_HARDWARE_MODULE_ID是在中定義的。Android硬件抽象層會(huì)根據(jù)UART_HARDWARE_MOD-ULE_ID的值在Android系統(tǒng)的/system/lib/hw目錄中找到相應(yīng)的模塊,然后加載起來(lái),并且返回hw_module_t接口給調(diào)用者使用。

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

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

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

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

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

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

      2結(jié)果與分析

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

      3結(jié)論

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

      猜你喜歡
      Android系統(tǒng)智能控制
      Android系統(tǒng)上的移動(dòng)互聯(lián)網(wǎng)集成平臺(tái)開(kāi)發(fā)機(jī)制
      基于物聯(lián)網(wǎng)的智能控制項(xiàng)目實(shí)踐教學(xué)設(shè)計(jì)
      應(yīng)用型人才培養(yǎng)導(dǎo)向下智能控制教學(xué)改革探討
      淺談開(kāi)關(guān)式電梯IC卡系統(tǒng)及展望
      航空| 易门县| 黔西| 西城区| 屏山县| 三门县| 崇左市| 会昌县| 梧州市| 谢通门县| 平阳县| 汉川市| 蕲春县| 双峰县| 治多县| 偏关县| 南京市| 泸西县| 巨鹿县| 乌拉特后旗| 元阳县| 东莞市| 安塞县| 宁晋县| 鸡东县| 南丰县| 鹰潭市| 绿春县| 彭泽县| 桃源县| 巫山县| 邹平县| 栾川县| 商河县| 南华县| 乌拉特中旗| 海原县| 远安县| 宜丰县| 若羌县| 留坝县|