• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于BOA的異步環(huán)境參數(shù)監(jiān)測(cè)及氣象預(yù)報(bào)系統(tǒng)設(shè)計(jì)

    2020-11-06 04:22:52傅玥郭航宇李解譚海洋
    現(xiàn)代信息科技 2020年13期

    傅玥 郭航宇 李解 譚海洋

    摘 ?要:為了讓操作者可以通過瀏覽器維護(hù)和管理監(jiān)測(cè)點(diǎn),方便其查看監(jiān)測(cè)數(shù)據(jù),設(shè)計(jì)利用BOA服務(wù)器搭建嵌入式Web控制器、傳輸層選擇有三次握手和超時(shí)重傳機(jī)制的TCP并包含了針對(duì)數(shù)據(jù)發(fā)送的防丟失措施。采用AJAX技術(shù)實(shí)現(xiàn)環(huán)境參數(shù)異步傳輸,以JSON格式作為數(shù)據(jù)交互格式,用CGI實(shí)現(xiàn)客戶端與服務(wù)器端的請(qǐng)求和響應(yīng),Shell腳本實(shí)現(xiàn)CGI程序動(dòng)態(tài)訪問、自動(dòng)更新環(huán)境參數(shù)。

    關(guān)鍵詞:嵌入式Web服務(wù)器;BOA;CGI;AJAX數(shù)據(jù)通信;JSON

    中圖分類號(hào):TP274;S828 ? ? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2020)13-0077-05

    Abstract:In order to enable the operator to maintain and manage the monitoring points through the browser,so as to facilitate the operator to view the monitoring data,the BOA server is used to build the embedded Web controller,the TCP with three handshakes and timeout retransmission mechanism is selected in the transport layer,and the anti-loss measures for data transmission are included. AJAX technology is used to realize asynchronous transmission of environment parameters. JSON format is used as data exchange format. CGI is used to realize client-side and server-side request and response. Shell script is used to realize CGI program dynamic access and automatic update of environment parameters.

    Keywords:embedded Web server;BOA;CGI;AJAX data communication;JSON

    0 ?引 ?言

    該系統(tǒng)設(shè)計(jì)通過BOA源碼官網(wǎng)下載BOA源碼,在Ubuntu下搭建嵌入式BOA服務(wù)器,代碼打通用戶級(jí)與內(nèi)核級(jí)之間數(shù)據(jù)傳遞問題,方便用戶通過瀏覽器實(shí)時(shí)獲取當(dāng)前環(huán)境氣象狀況,功能上分為兩個(gè)板塊。第一板塊利用jQuery的子集Cheerio進(jìn)行對(duì)天氣網(wǎng)氣象DOM的爬取,實(shí)際運(yùn)行的時(shí)候使用SuperAgent實(shí)時(shí)抓取網(wǎng)頁(yè);第二板塊需串口接收外部集成傳感器捕獲的數(shù)據(jù),用戶點(diǎn)擊“獲取數(shù)據(jù)”按鈕觸發(fā)傳感器采集當(dāng)前環(huán)境參數(shù),采集的數(shù)據(jù)通過外部程序執(zhí)行通道CGI(通用網(wǎng)關(guān)接口)返回至瀏覽器界面。BOA服務(wù)器將傳感器檢測(cè)的環(huán)境參數(shù)傳給CGI,被編譯的CGI可執(zhí)行程序自動(dòng)調(diào)用append()將新數(shù)據(jù)追加到文檔末尾,經(jīng)BOA服務(wù)器送回瀏覽器顯示;AJAX數(shù)據(jù)異步傳輸實(shí)現(xiàn)動(dòng)態(tài)和靜態(tài)網(wǎng)頁(yè)的分離效果,服務(wù)器與瀏覽器只交換更新的數(shù)據(jù)即每次更新的環(huán)境參數(shù),HTML格式的靜態(tài)網(wǎng)頁(yè)保持不變。該設(shè)計(jì)方法大幅降低網(wǎng)絡(luò)流量、提升運(yùn)行速度,數(shù)據(jù)記錄基于Echarts生成歷史溫度曲線統(tǒng)計(jì)和濕度曲線統(tǒng)計(jì)。

    1 ?Ubuntu安裝C語(yǔ)言編譯環(huán)境

    在LINUX嵌入式系統(tǒng)平臺(tái)VMware Workstation中安裝Ubuntu,Ubuntu版本建議:18.04LTS或20.04LTS(安裝最小系統(tǒng)即可)。

    (1)最小系統(tǒng)沒有C語(yǔ)言編譯環(huán)境,需要另外安裝,建議安裝軟件有GCC、Make、Vim工具。

    $ sudo apt install gcc make vim-nox

    (2)為了方便后期向虛擬機(jī)傳送文件和操作LINUX系統(tǒng),安裝SSHD服務(wù)。

    $ sudo apt install openssh-server

    (3)若需要在開發(fā)板上進(jìn)行Web服務(wù)的搭建,還需要安裝對(duì)應(yīng)開發(fā)板的交叉編譯器環(huán)境,同時(shí)配置系統(tǒng)環(huán)境變量和交叉編譯器所依賴的庫(kù)。

    $ sudo apt install lib32ncurses5 lib32z1

    (4)在Windows中可以使用MobaXterm這類軟件配置SSH客戶端信息,并連接虛擬機(jī)的Ubuntu系統(tǒng)。

    (5)選擇一款自己熟悉的編輯器,比如VS Code、Notepad++、CLion等。

    (6)如果需要開發(fā)板,配置好串口、虛擬機(jī)雙網(wǎng)卡(可選)環(huán)境。

    2 ?BOA軟件服務(wù)的移植

    BOA服務(wù)器是一個(gè)小巧高效的Web服務(wù)器,是一個(gè)運(yùn)行于UNIX或LINUX下的、支持CGI的、適合于嵌入式系統(tǒng)的、單任務(wù)的HTTP服務(wù)器,源代碼開放、性能高[1]。運(yùn)行于客戶端的瀏覽器首先需與嵌入式Web服務(wù)器BOA端建立連接,打開一個(gè)套接字虛擬文件,此文件的建立標(biāo)志著SOCKET連接建立成功。然后客戶端瀏覽器通過套接字SOCKET以GET或者POST參數(shù)傳遞方式向Web服務(wù)器提交請(qǐng)求。Web瀏覽器提交請(qǐng)求后,通過HTTP協(xié)議傳送給Web服務(wù)器。Web服務(wù)器接到請(qǐng)求后,根據(jù)請(qǐng)求的不同進(jìn)行事務(wù)處理,返回HTML文件或者通過CGI調(diào)用外部應(yīng)用程序,返回處理結(jié)果。服務(wù)器通過CGI與外部應(yīng)用程序、腳本進(jìn)行交互;根據(jù)客戶端瀏覽器在請(qǐng)求時(shí)所采用的方法,服務(wù)器會(huì)搜集客戶所提供的信息,將部分信息發(fā)送給指定的CGI擴(kuò)展程序;CGI擴(kuò)展程序進(jìn)行信息處理并將結(jié)果返回給服務(wù)器,接著服務(wù)器對(duì)信息進(jìn)行分析,將結(jié)果發(fā)送回客戶端瀏覽器顯示[2]。

    嵌入式Web服務(wù)器BOA移植步驟:

    (1)官網(wǎng)下載好BOA源碼壓縮文件boa-0.94.13.tar.gz。

    (2)編輯TCP Socket連接代碼文檔,MobaXterm軟件中創(chuàng)建tcp_base_server.c。

    源代碼如下:

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    /*

    * TCP初始化服務(wù)器模型代碼

    * */

    int init_socket(unsigned short port){

    int tcp_socket;

    struct sockaddr_in self;

    int ret;

    tcp_socket = socket(AF_INET, SOCK_STREAM, 0);

    if (tcp_socket == -1) {

    perror("socket");

    return -1;

    }

    // 綁定自己開放的IP和端口

    memset(&self, 0, sizeof(self));

    self.sin_family = AF_INET;

    self.sin_port = htons(port);

    self.sin_addr.s_addr = INADDR_ANY;

    ret = bind(tcp_socket, (struct sockaddr *)&self, sizeof(self));

    if (ret == -1) {

    perror("bind");

    return -1;

    }

    listen(tcp_socket, 5);

    return tcp_socket;

    }

    int main(){

    int listen_fd;

    int new_fd;

    char buf[1024];

    int ret;

    char *tmp = "Hello World";

    listen_fd = init_socket(8181);

    if (listen_fd == -1){

    fprintf(stderr, "init socket error?。躰");

    return -1;

    }

    printf("listen...\n");

    //接收有沒有新的連接請(qǐng)求,從listen_fd描述符對(duì)應(yīng)的空間來取出客戶端連接

    while(1){

    new_fd = accept(listen_fd, NULL, NULL);

    if (new_fd == -1) {

    perror("accept");

    return -1;

    }

    printf("have a new connection?。躰");

    // 接收新客戶端發(fā)來的請(qǐng)求

    ret = recv(new_fd, buf, sizeof(buf)-1, 0);

    buf[ret] = 0;

    printf("接收的內(nèi)容: %s\n", buf);

    // 響應(yīng)客戶端的請(qǐng)求

    write(new_fd, tmp, strlen(tmp));

    // getchar();

    close(new_fd);

    }

    close(listen_fd);

    return 0;

    }

    mkdir -p web_prj/test創(chuàng)建web_prj目錄和子目錄test,將代碼文檔tcp_base_server.c移動(dòng)到test目錄下,執(zhí)行命令gcc -o tcpserver tcp_base_server.c進(jìn)行編譯,直接運(yùn)行TCPServer程序./tcpserver打印出監(jiān)聽描述符。Web服務(wù)器是應(yīng)用層,TCP服務(wù)器是指在傳輸層選擇了TCP(傳輸控制協(xié)議)。瀏覽器是客戶端,只要Web服務(wù)器在傳輸層采用了TCP協(xié)議來傳輸,我們就將這個(gè)Web服務(wù)器等效為TCP服務(wù)器。如果TCP服務(wù)器運(yùn)行成功,在操作系統(tǒng)上傳輸層上應(yīng)該體現(xiàn)出TCP的一個(gè)特性(端口號(hào)),這個(gè)特性屬于操作系統(tǒng)內(nèi)核,不能直接查看。TCPServer程序已經(jīng)在一個(gè)終端運(yùn)行,在第一個(gè)終端按Ctrl+C結(jié)束TCPServer程序運(yùn)行,在另一個(gè)終端用netstat -tan查看傳輸層狀態(tài),如果顯示“tcp 0 0 0.0.0.0:8181 0.0.0.0:* LISTEN”說明8181端口開啟,相當(dāng)于在運(yùn)輸層TCP上烙下烙印,以保證BOA服務(wù)器后續(xù)的正常訪問。

    3 ?boa.conf的配置

    需要核對(duì)boa.conf(BOA服務(wù)配置文件)里寫到的目錄是否實(shí)際存在,程序根據(jù)配置文件里的目錄創(chuàng)建文件,如果系統(tǒng)中不存在這些目錄就會(huì)報(bào)錯(cuò)。如果虛擬機(jī)上沒有變量后面的路徑信息目錄值,就需要單獨(dú)創(chuàng)建。mkdir web_prj/sources在web_prj目錄下創(chuàng)建sourxes目錄,cp boa-0.94.13.tar.gz web_prj/sources/把boa-0.94.13.tar.gz拷到sources目錄下,tar-zxvf boa-0.94.13.tar.gz-C../將BOA服務(wù)器包解壓到上級(jí)目錄web_prj下。cd boa-0.94.13/進(jìn)入boa-0.94.13,源代碼中沒有Makefile,接下來需要配置生成Makefile。

    (1)根據(jù)目標(biāo)機(jī)器特性配置configure腳本,./configure執(zhí)行腳本我們就可以看到Makefile的出現(xiàn)。

    (2)用Vim Makefile修改Makefile使其支持目標(biāo)板的工具。修改完成按Esc,命令行下輸入“:wq!”保存退出。

    (3)在Vim compat.h修改配置文件,打開后處于普通模式。這時(shí)按i鍵進(jìn)入插入編輯模式,按a鍵進(jìn)入追加編輯模式,編輯模式中按Esc又變成普通模式。其中兩行添加指針傳遞值“foo->”修改后#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff、#define TIMEZONE(foo) foo->tm_zone執(zhí)行Make,stripboa剔除符號(hào)表壓縮后大小只有80 K。

    ~/web_prj/boa-0.94.13/src$ strip boa

    ~/web_prj/boa-0.94.13/src$ -lh boa

    -rwxr-xr-x 1 fy fy 80K Jun 8 02:59 boa

    4 ?瀏覽器訪問路徑原理和服務(wù)配置文件的對(duì)應(yīng)關(guān)系

    HTTP請(qǐng)求有八種方法:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT,GET和POST比較常用。Web瀏覽器把用戶的操作解析為標(biāo)準(zhǔn)數(shù)據(jù)流,將符合HTTP通信協(xié)議規(guī)范的客戶請(qǐng)求向服務(wù)器發(fā)出。服務(wù)器在接收到用戶從客戶機(jī)發(fā)送的相關(guān)請(qǐng)求后,一般是在后臺(tái)進(jìn)行查詢和運(yùn)算等工作,再將結(jié)果傳回用戶端Web瀏覽器進(jìn)行顯示[3]。一次完整的HTTP請(qǐng)求過程如下:用戶訪問網(wǎng)站需要在瀏覽器上輸入U(xiǎn)RL或者域名按下回車,每個(gè)網(wǎng)站對(duì)應(yīng)一個(gè)服務(wù)器進(jìn)程,它不斷地監(jiān)聽TCP端口;一旦監(jiān)聽到連接建立請(qǐng)求并建立了TCP連接,瀏覽器就向服務(wù)器發(fā)出瀏覽某個(gè)頁(yè)面的請(qǐng)求[4],瀏覽器解析HTML代碼并請(qǐng)求代碼中的資源(如JS、CSS、圖片等),網(wǎng)頁(yè)訪問完畢后釋放TCP連接。如果使用輸入域名的方式,則在建立連接請(qǐng)求前還需域名解析步驟,將消息從PC端上傳到服務(wù)器上,需要用到IP協(xié)議、ARP協(xié)議和OSPF協(xié)議。

    程序的一次編譯,能夠在多個(gè)不同的環(huán)境進(jìn)行運(yùn)行。BOA配置文件告訴BOA程序如何進(jìn)行工作,修改.config之前先備份cp boa.conf boa_bak.conf防止改錯(cuò)后無法恢復(fù)。在boa-0.94.13目錄下創(chuàng)建目錄sudo mkdir/etc/boa,再將boa.conf拷貝到/etc/boa目錄里面。sudo vim /etc/boa/boa.conf修改配置文件的用戶名User和用戶組Group為fy、錯(cuò)誤日志ErrorLog路徑為/home/fy/boa/error_log、訪問日志AccessLog路徑為/home/fy/boa/access_log、指定Web根目錄DocumentRoot路徑為/home/fy/web_prj/works/www、服務(wù)器使用alias指令配置虛擬目錄Alias /doc /usr/doc、修改CGI查詢目錄ScriptAlias/cgi-bin//home/fy/web_prj/works/cgi/,正確配置以保證瀏覽器成功訪問BOA服務(wù)器。如果BOA沒有綁定成功是因?yàn)槎丝谔?hào)80被占用,修改boa.conf文件配置的Port為8082后再次輸入netstat-tan查看傳輸層狀態(tài)“tcp 0 0 0.0.0.0:81820.0.0.0:* LISTEN”。非正常關(guān)閉Vim編輯器時(shí)會(huì)生成一個(gè).swp文件和.swo文件,移除.boa.conf.swp和.boa.conf.swo文件。cd /web_prj/boa-0.94.13/src后執(zhí)行sudo./boa開啟BOA服務(wù)器,sudocatboa/error_log方便查看BOA服務(wù)器報(bào)錯(cuò)。

    5 ?BOA服務(wù)下Shell腳本實(shí)現(xiàn)CGI程序動(dòng)態(tài)訪問

    CGI(通用網(wǎng)關(guān)接口)工作原理可以簡(jiǎn)單理解為Web服務(wù)器和程序動(dòng)態(tài)生成數(shù)據(jù)之間的一個(gè)執(zhí)行外部程序通道,保證瀏覽器與服務(wù)器之間更靈活地進(jìn)行交互。調(diào)用CGI腳本的信息交互方法有GET和POST兩種:GET一般用于獲取或者查詢資源信息,而POST一般用于更新資源信息;瀏覽器顯示的是動(dòng)態(tài)的數(shù)據(jù)信息,所以系統(tǒng)采用POST方法[5]。CGI程序可以用任何程序設(shè)計(jì)語(yǔ)言編寫,如Shell腳本語(yǔ)言、Perl、FORTRAN、Pascal、C語(yǔ)言等[6]。簡(jiǎn)單起見,本系統(tǒng)采用Shell腳本編寫的CGI程序動(dòng)態(tài)響應(yīng)用戶在Web上的操作。mkdir home/fy/www再靜態(tài)網(wǎng)頁(yè)代碼移植到www目錄,打開瀏覽器輸入包含完整IP和端口號(hào)的Shell絕對(duì)路徑“http://192.168.117.136:8082/fy/index.html”訪問靜態(tài)頁(yè)面,訪問成功表明靜態(tài)文件測(cè)試通過。編寫一個(gè)CGI測(cè)試程序?yàn)楹罄m(xù)系統(tǒng)的搭建做準(zhǔn)備。sudo mkdir web_prj/cgi創(chuàng)建用來放置動(dòng)態(tài)網(wǎng)頁(yè)的CGI目錄,在CGI目錄下創(chuàng)建time文件,輸入chmod +x time給time文件增加可執(zhí)行權(quán)限。

    HTTP請(qǐng)求是由請(qǐng)求行、請(qǐng)求頭部、空行和請(qǐng)求數(shù)據(jù)四部分組成。圖1為瀏覽器發(fā)出HTTP請(qǐng)求的完整格式,請(qǐng)求頭部的最后有一個(gè)空行表示請(qǐng)求頭部結(jié)束,后面連接請(qǐng)求正文。程序語(yǔ)言中“\r”表示一個(gè)回車符,“\n”表示一個(gè)換行符,“\r\n”代表另起一行保證HTTP請(qǐng)求完整的頭部信息,缺少會(huì)導(dǎo)致瀏覽器訪問網(wǎng)頁(yè)出現(xiàn)“502 Bad Gateway”錯(cuò)誤。CGI程序time中特別注意一行echo“Content-Type:text/html;charset=utf-8\r\n”。Shell編寫的CGI程序放在/cgi-bin/目錄下,動(dòng)態(tài)數(shù)據(jù)通過/cgi-bin/boa/home/fy/web_prj/works/cgi/路徑查詢獲取。

    6 ?基于jQuery的AJAX請(qǐng)求JSON格式數(shù)據(jù)

    針對(duì)AJAX采用XML作為數(shù)據(jù)載體存在標(biāo)簽大量冗余、基于DOM的解析復(fù)雜導(dǎo)致數(shù)據(jù)傳輸量大、服務(wù)器與客戶端解析效率低的問題,提出一種基于JSON的AJAX數(shù)據(jù)通信快速算法[7]。AJAX包含JavaScript、XMLHttpRequest、CSS等技術(shù),是一種快速創(chuàng)建交互式動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù),適合輕量級(jí)數(shù)據(jù)交互頻繁的網(wǎng)頁(yè)。本設(shè)計(jì)利用Bootstrap框架搭建呈現(xiàn)當(dāng)前溫濕度的網(wǎng)頁(yè),用戶第一次進(jìn)入網(wǎng)頁(yè)會(huì)發(fā)送瀏覽器請(qǐng)求,服務(wù)器接收到這個(gè)請(qǐng)求會(huì)返回一套內(nèi)容,響應(yīng)的內(nèi)容會(huì)被瀏覽器重新渲染。之后網(wǎng)頁(yè)每時(shí)每刻只有溫度、濕度值在變化,開發(fā)人員沒有必要因?yàn)檫@一小部分重構(gòu)頁(yè)面,而且頻繁刷新會(huì)導(dǎo)致網(wǎng)絡(luò)數(shù)據(jù)量太大。AJAX方法使網(wǎng)頁(yè)實(shí)現(xiàn)異步更新,意味著后臺(tái)與服務(wù)器只進(jìn)行少量數(shù)據(jù)交換,可以頻繁更新少量數(shù)據(jù)而不重新加載整個(gè)網(wǎng)頁(yè)。未使用AJAX的傳統(tǒng)網(wǎng)頁(yè)每一次更新內(nèi)容必須重新加載整個(gè)網(wǎng)頁(yè)頁(yè)面。

    7 ?環(huán)境參數(shù)監(jiān)測(cè)的代碼實(shí)現(xiàn)

    前面介紹了服務(wù)器搭建、動(dòng)態(tài)網(wǎng)頁(yè)加載和數(shù)據(jù)實(shí)時(shí)獲取更新的關(guān)鍵操作后,下面結(jié)合程序具體介紹系統(tǒng)在瀏覽器前端的顯示方法。由于Ubuntu不支持?jǐn)?shù)據(jù)庫(kù),串口外接溫濕度傳感器獲取到的數(shù)據(jù)將保存在服務(wù)器下的指定文件中,前端溫濕度顯示是利用AJAX請(qǐng)求JSON格式數(shù)據(jù),對(duì)服務(wù)器下文件進(jìn)行數(shù)據(jù)查詢。Shell腳本編寫的CGI程序?qū)崿F(xiàn)自動(dòng)刷新當(dāng)前獲取的數(shù)據(jù),整個(gè)過程沒有訪問數(shù)據(jù)庫(kù)。第一板塊編寫一個(gè)讀取該配置文件的接口類Zone.java獲取操作系統(tǒng)時(shí)區(qū),利用jQuery的子集Cheerio對(duì)數(shù)值預(yù)報(bào)氣象要素所在路徑(天氣網(wǎng))的氣象報(bào)告和預(yù)測(cè)進(jìn)行DOM的爬取。部分代碼如下:

    TimeZone.getDefault();

    // 獲取任意指定區(qū)域的時(shí)區(qū)

    String[] zoneIDs=TimeZone.getAvailableIDs();

    for(String zoneID: zoneIDs) {

    TimeZone.getTimeZone(zoneID);

    }

    引入Cheerio:

    var cheerio=require('cheerio'),

    $=cheerio.load('

      ...
    ');

    DOM獲取天氣網(wǎng)氣象數(shù)據(jù):

    var cheerio=require('cheerio'),

    $=cheerio.load('

    今天

    明天

    后天

    引入bootstrap.min.js文件將所有插件包含在一個(gè)項(xiàng)目中,后續(xù)開發(fā)僅僅通過data屬性API就能使用所有Bootstrap中的插件[8],且不用寫JavaScript代碼。引入完整版的jQuery庫(kù)將壓縮后的jquery.min.js文件用于前端引用,減小代碼冗余度、降低平臺(tái)流量,提升瀏覽器訪問速度。jquery.min.js文件刪除了未壓縮的完整jQuery庫(kù)jquery.js中的空白字符、注釋、空行等,并將與邏輯無關(guān)的內(nèi)容進(jìn)行部分優(yōu)化,功能與jquery.js完全一樣。

    JSON是一種可以轉(zhuǎn)換為字符串的數(shù)據(jù)請(qǐng)求對(duì)象,它以異步方式將字符串由客戶端傳遞到Web服務(wù)器的應(yīng)用程序中[9]。一周天氣數(shù)據(jù)統(tǒng)計(jì)需要用戶串口連接溫濕度傳感器,將測(cè)量的數(shù)據(jù)封裝成JSON格式,由前面的CGI程序?qū)崟r(shí)更新、傳輸、存儲(chǔ)在服務(wù)器的相應(yīng)文件夾下。點(diǎn)擊“獲取數(shù)據(jù)”按鈕,“$(document).ready(function (){})”等待DOM結(jié)構(gòu)加載完成,執(zhí)行封裝在事件里的函數(shù),調(diào)用click方法“$("#btn1").click(function (){})”,觸發(fā)$.getJSON("",function (){})函數(shù)到指定的/cgi-bin/temp_cgi目錄讀取JSON數(shù)據(jù)格式;AJAX異步傳輸更新瀏覽器數(shù)據(jù),以“星期幾 溫度 濕度 風(fēng)強(qiáng)光照強(qiáng)度”表格形式顯示數(shù)據(jù)。$().append()功能將新的測(cè)量數(shù)據(jù)累加在表尾。部分代碼如下,瀏覽器訪問界面如圖2所示。

    7 ?結(jié) ?論

    綜上所述,外部架設(shè)集成傳感器和無線傳輸模塊一體的底層數(shù)據(jù)采集節(jié)點(diǎn),并構(gòu)建有線數(shù)據(jù)采集網(wǎng)絡(luò)。將Web技術(shù)應(yīng)用在環(huán)境參數(shù)監(jiān)測(cè)及氣象預(yù)報(bào)系統(tǒng)中,操作者可以通過瀏覽器實(shí)時(shí)采集當(dāng)前環(huán)境參數(shù)、查看當(dāng)天氣象。基于ECHARTS生成的歷史測(cè)量數(shù)據(jù)統(tǒng)計(jì),準(zhǔn)確呈現(xiàn)每日環(huán)境參數(shù)的變化。該設(shè)計(jì)僅為簡(jiǎn)化版,希望日后可以將涉及的編程思想和方法應(yīng)用到更大型的商業(yè)項(xiàng)目中去。

    參考文獻(xiàn):

    [1] 360百科.boa服務(wù)器 [EB/OL].(2016-03-24).https://baike.so.com/doc/2157341-2282668.html.

    [2] 佚名.嵌入式Web服務(wù)器BOA移植與測(cè)試設(shè)計(jì)概述 [EB/OL].(2019-11-01).http://m.elecfans.com/article/1102494.html.

    [3] 鄭坤.基于Boa服務(wù)器的豬舍環(huán)境監(jiān)測(cè)系統(tǒng)的設(shè)計(jì) [J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2014(33):56-59.

    [4] 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò):第7版 [M].北京:電子工業(yè)出版社,2017:268.

    [5] 李磊.利用CGI程序?qū)崿F(xiàn)動(dòng)態(tài)Web的方法 [J].科學(xué)技術(shù)與工程,2009,9(6):1611-1613.

    [6] 肖治延.用C語(yǔ)言進(jìn)行CGI程序設(shè)計(jì) [J].微電腦世界,1997(5):81-83.

    [7] 孫光明,王碩.基于JSON的AJAX數(shù)據(jù)通信快速算法 [J].計(jì)算機(jī)應(yīng)用與軟件,2015,32(1):263-266.

    [8] 范仁義.bootstrap課程1bootstrap為什么這么火 [EB/OL].(2018-07-06).https://www.cnblogs.com/Renyi-Fan/p/9272724.html.

    [9] 郭慶燕,張敏,楊賢棟.JQuery AJAX異步處理JSON數(shù)據(jù)實(shí)現(xiàn)氣象圖片的顯示 [J].計(jì)算機(jī)應(yīng)用與軟件,2016,33(6):20-22+67.

    作者簡(jiǎn)介:傅玥(1999.05—),女,漢族,四川綿陽(yáng)人,本科,研究方向:計(jì)算機(jī)嵌入式。

    亚洲av免费在线观看| 人妻 亚洲 视频| 五月开心婷婷网| 免费看a级黄色片| 777米奇影视久久| 一二三四中文在线观看免费高清| 亚洲精品国产av蜜桃| 18+在线观看网站| 国产有黄有色有爽视频| 国产精品国产三级国产av玫瑰| 91在线精品国自产拍蜜月| 韩国av在线不卡| 黄色欧美视频在线观看| 亚洲av欧美aⅴ国产| 黑人高潮一二区| 欧美xxxx黑人xx丫x性爽| 在线亚洲精品国产二区图片欧美 | 精品一区二区免费观看| 777米奇影视久久| 新久久久久国产一级毛片| 欧美xxxx性猛交bbbb| 91精品伊人久久大香线蕉| 亚洲高清免费不卡视频| 亚洲婷婷狠狠爱综合网| 春色校园在线视频观看| 免费观看的影片在线观看| 精品人妻熟女av久视频| 99热全是精品| 欧美丝袜亚洲另类| 99热6这里只有精品| 欧美成人精品欧美一级黄| 别揉我奶头 嗯啊视频| 十八禁网站网址无遮挡 | 99久久九九国产精品国产免费| 国产真实伦视频高清在线观看| 搡老乐熟女国产| 97精品久久久久久久久久精品| 丝袜喷水一区| 人妻一区二区av| 男女啪啪激烈高潮av片| 中国国产av一级| 最近2019中文字幕mv第一页| 欧美日本视频| av免费观看日本| 天美传媒精品一区二区| av线在线观看网站| 免费大片黄手机在线观看| 美女主播在线视频| 成人无遮挡网站| 亚洲国产精品国产精品| 亚洲第一区二区三区不卡| 最近最新中文字幕免费大全7| 成人无遮挡网站| 新久久久久国产一级毛片| 精品国产一区二区三区久久久樱花 | 全区人妻精品视频| 一级片'在线观看视频| 男人和女人高潮做爰伦理| 最近最新中文字幕大全电影3| 成人亚洲欧美一区二区av| 国产精品一及| 国产精品久久久久久精品电影小说 | 人人妻人人看人人澡| 日韩人妻高清精品专区| 亚洲欧洲日产国产| 国产69精品久久久久777片| 伦精品一区二区三区| 2021天堂中文幕一二区在线观| 综合色av麻豆| 极品教师在线视频| 国产毛片a区久久久久| 日韩中字成人| 丰满少妇做爰视频| 国产伦精品一区二区三区四那| 亚洲激情五月婷婷啪啪| 久久99热这里只频精品6学生| 91精品国产九色| 免费看光身美女| 欧美日韩精品成人综合77777| 欧美zozozo另类| 亚洲国产成人一精品久久久| 成年女人看的毛片在线观看| 有码 亚洲区| 国产精品99久久99久久久不卡 | 男男h啪啪无遮挡| 亚洲不卡免费看| 夫妻性生交免费视频一级片| 国产国拍精品亚洲av在线观看| 国产黄色视频一区二区在线观看| 欧美激情国产日韩精品一区| 草草在线视频免费看| 精品久久久久久久末码| 亚洲天堂国产精品一区在线| 欧美精品一区二区大全| 在线观看美女被高潮喷水网站| 干丝袜人妻中文字幕| 不卡视频在线观看欧美| 午夜精品国产一区二区电影 | 青青草视频在线视频观看| 免费看av在线观看网站| 插逼视频在线观看| 激情五月婷婷亚洲| 男人狂女人下面高潮的视频| 人体艺术视频欧美日本| 久久久精品94久久精品| 中文字幕亚洲精品专区| 一个人看的www免费观看视频| 99热网站在线观看| 老司机影院成人| 秋霞伦理黄片| 欧美日韩精品成人综合77777| av卡一久久| 亚洲天堂国产精品一区在线| 婷婷色麻豆天堂久久| 免费大片18禁| 国产大屁股一区二区在线视频| 免费观看在线日韩| 亚洲av电影在线观看一区二区三区 | 日韩欧美 国产精品| 久久久久久国产a免费观看| 久久久久性生活片| 久久久久久久久久久免费av| 2018国产大陆天天弄谢| 午夜精品国产一区二区电影 | 亚洲国产精品成人综合色| 亚洲av在线观看美女高潮| 熟女电影av网| av在线天堂中文字幕| 久久久久久久国产电影| 国产精品久久久久久久电影| 久久久国产一区二区| 亚洲精品第二区| 搞女人的毛片| 大片电影免费在线观看免费| 久久久久久久国产电影| 日韩人妻高清精品专区| 精品久久久久久久末码| 亚洲欧美成人精品一区二区| 国产成人免费观看mmmm| a级毛色黄片| 亚洲欧美成人精品一区二区| 欧美三级亚洲精品| 日本与韩国留学比较| 99久久精品热视频| 在线 av 中文字幕| 国产毛片a区久久久久| 一本—道久久a久久精品蜜桃钙片 精品乱码久久久久久99久播 | 久久女婷五月综合色啪小说 | 97在线人人人人妻| 天天躁夜夜躁狠狠久久av| 天美传媒精品一区二区| av黄色大香蕉| 汤姆久久久久久久影院中文字幕| 性色avwww在线观看| 男女无遮挡免费网站观看| 亚洲精品久久久久久婷婷小说| 最近中文字幕高清免费大全6| 免费看av在线观看网站| 国产欧美日韩精品一区二区| freevideosex欧美| 大片电影免费在线观看免费| 亚洲欧美一区二区三区国产| 欧美+日韩+精品| 日本wwww免费看| 日本欧美国产在线视频| 国产精品国产av在线观看| 亚洲熟女精品中文字幕| 亚洲欧美清纯卡通| 波多野结衣巨乳人妻| 成人黄色视频免费在线看| videossex国产| 久久久精品免费免费高清| 免费观看a级毛片全部| 欧美日韩国产mv在线观看视频 | 国产永久视频网站| 18禁在线无遮挡免费观看视频| 国产色婷婷99| 亚洲熟女精品中文字幕| 人妻少妇偷人精品九色| 国产毛片a区久久久久| 亚洲av福利一区| 国产亚洲一区二区精品| 美女脱内裤让男人舔精品视频| 久久久久久久午夜电影| 欧美成人午夜免费资源| av播播在线观看一区| 插阴视频在线观看视频| 熟女av电影| 精品一区二区免费观看| 女人被狂操c到高潮| 国产精品久久久久久久电影| 国产av国产精品国产| 久久久a久久爽久久v久久| 亚洲精品日韩在线中文字幕| 美女cb高潮喷水在线观看| 久久亚洲国产成人精品v| 国产伦精品一区二区三区视频9| 老司机影院成人| 不卡视频在线观看欧美| 一级毛片电影观看| 国产一区有黄有色的免费视频| 久久久午夜欧美精品| 欧美xxxx黑人xx丫x性爽| 另类亚洲欧美激情| 一本色道久久久久久精品综合| 国产中年淑女户外野战色| 白带黄色成豆腐渣| 一级二级三级毛片免费看| 免费黄频网站在线观看国产| 一区二区三区精品91| 一区二区三区免费毛片| 国产精品不卡视频一区二区| 高清av免费在线| 在线亚洲精品国产二区图片欧美 | 欧美 日韩 精品 国产| 我的老师免费观看完整版| 观看美女的网站| 国产高清三级在线| 97人妻精品一区二区三区麻豆| 国产亚洲av嫩草精品影院| 免费看不卡的av| 一区二区av电影网| 欧美丝袜亚洲另类| av网站免费在线观看视频| 亚洲,一卡二卡三卡| 夜夜爽夜夜爽视频| 成人国产麻豆网| 少妇人妻精品综合一区二区| 寂寞人妻少妇视频99o| 视频中文字幕在线观看| 亚洲av中文字字幕乱码综合| 五月玫瑰六月丁香| 色视频www国产| 成年女人看的毛片在线观看| 王馨瑶露胸无遮挡在线观看| 内射极品少妇av片p| 777米奇影视久久| 成人亚洲精品av一区二区| 欧美精品人与动牲交sv欧美| 国产亚洲精品久久久com| 国产伦在线观看视频一区| 少妇人妻久久综合中文| 久久精品国产亚洲网站| 国产高潮美女av| 久久6这里有精品| 精品视频人人做人人爽| 七月丁香在线播放| 久久久久久久国产电影| 国产一区二区三区av在线| 热99国产精品久久久久久7| 亚洲最大成人中文| 国产亚洲91精品色在线| 丝瓜视频免费看黄片| 国产亚洲5aaaaa淫片| 亚洲av免费高清在线观看| 国产成人精品福利久久| 深爱激情五月婷婷| 联通29元200g的流量卡| 久久久成人免费电影| 青春草国产在线视频| 国产免费福利视频在线观看| 97热精品久久久久久| 成人午夜精彩视频在线观看| 免费电影在线观看免费观看| 成人亚洲精品av一区二区| 亚洲精品日韩在线中文字幕| 黄色视频在线播放观看不卡| av福利片在线观看| 亚洲,一卡二卡三卡| 国产又色又爽无遮挡免| 九色成人免费人妻av| 日日啪夜夜爽| 免费播放大片免费观看视频在线观看| 超碰97精品在线观看| 国产高潮美女av| 最后的刺客免费高清国语| 成人高潮视频无遮挡免费网站| 男女边吃奶边做爰视频| 精品久久久噜噜| 少妇人妻 视频| 久久99热6这里只有精品| 人妻夜夜爽99麻豆av| 久久韩国三级中文字幕| 人人妻人人爽人人添夜夜欢视频 | 久久久亚洲精品成人影院| 亚洲欧美清纯卡通| 黄色日韩在线| 黄色怎么调成土黄色| 赤兔流量卡办理| 97超视频在线观看视频| 亚洲图色成人| 少妇人妻一区二区三区视频| 久久人人爽人人片av| 亚洲电影在线观看av| 国产亚洲午夜精品一区二区久久 | 亚洲av日韩在线播放| 神马国产精品三级电影在线观看| 岛国毛片在线播放| www.色视频.com| 在现免费观看毛片| 人体艺术视频欧美日本| 丰满少妇做爰视频| 人体艺术视频欧美日本| 久久韩国三级中文字幕| 国产白丝娇喘喷水9色精品| a级毛片免费高清观看在线播放| 成人美女网站在线观看视频| 爱豆传媒免费全集在线观看| 国产综合懂色| 亚洲一级一片aⅴ在线观看| 狠狠精品人妻久久久久久综合| 日本与韩国留学比较| 51国产日韩欧美| 国产午夜福利久久久久久| 毛片一级片免费看久久久久| 亚洲av二区三区四区| 综合色丁香网| 欧美+日韩+精品| 国产视频首页在线观看| 亚洲精华国产精华液的使用体验| 舔av片在线| 赤兔流量卡办理| 一边亲一边摸免费视频| av专区在线播放| 国产男人的电影天堂91| 国产探花在线观看一区二区| 欧美精品国产亚洲| 精品久久久噜噜| 97超视频在线观看视频| 成人美女网站在线观看视频| 亚洲av.av天堂| 99久久人妻综合| 精品国产三级普通话版| 国产爽快片一区二区三区| 国产一区二区三区av在线| 人妻系列 视频| 国产乱人视频| 久久精品夜色国产| 午夜日本视频在线| 国产精品一二三区在线看| 91午夜精品亚洲一区二区三区| 国内精品宾馆在线| 身体一侧抽搐| 国产精品一区www在线观看| 亚洲第一区二区三区不卡| 国产在视频线精品| 国产免费福利视频在线观看| 国产淫片久久久久久久久| 寂寞人妻少妇视频99o| 国产亚洲av嫩草精品影院| 夜夜看夜夜爽夜夜摸| 国语对白做爰xxxⅹ性视频网站| 国产黄片美女视频| 亚洲国产最新在线播放| 欧美三级亚洲精品| 国产淫片久久久久久久久| 1000部很黄的大片| 最近的中文字幕免费完整| 日韩人妻高清精品专区| 日韩一区二区三区影片| 亚洲欧美日韩无卡精品| 国产欧美日韩一区二区三区在线 | 国产免费又黄又爽又色| 精品久久久久久久久av| a级一级毛片免费在线观看| 国国产精品蜜臀av免费| 日韩在线高清观看一区二区三区| 亚洲av一区综合| av在线亚洲专区| 超碰av人人做人人爽久久| 欧美激情国产日韩精品一区| 免费观看无遮挡的男女| 久久久久久久久久久免费av| 18禁裸乳无遮挡免费网站照片| 九九在线视频观看精品| 在线 av 中文字幕| 亚洲精品自拍成人| 干丝袜人妻中文字幕| 亚洲欧美日韩无卡精品| 成年av动漫网址| 亚洲国产av新网站| 在线观看人妻少妇| 亚洲国产欧美在线一区| 亚洲丝袜综合中文字幕| 在线观看国产h片| 人妻一区二区av| 日韩成人av中文字幕在线观看| 内射极品少妇av片p| 国产高清有码在线观看视频| 成年版毛片免费区| 男插女下体视频免费在线播放| 插逼视频在线观看| av女优亚洲男人天堂| 国产永久视频网站| 性色av一级| 亚洲天堂av无毛| 晚上一个人看的免费电影| 视频区图区小说| 欧美高清性xxxxhd video| 精品国产三级普通话版| tube8黄色片| 大码成人一级视频| 人妻 亚洲 视频| 在线观看国产h片| 精品少妇黑人巨大在线播放| 六月丁香七月| 成年女人看的毛片在线观看| 亚洲成人久久爱视频| 亚洲激情五月婷婷啪啪| 亚洲精品中文字幕在线视频 | 人人妻人人澡人人爽人人夜夜| 毛片一级片免费看久久久久| 免费观看av网站的网址| 狂野欧美激情性bbbbbb| 神马国产精品三级电影在线观看| 香蕉精品网在线| 久久久久精品久久久久真实原创| 又爽又黄a免费视频| 免费电影在线观看免费观看| 成人欧美大片| 国产综合精华液| 少妇高潮的动态图| 男插女下体视频免费在线播放| 身体一侧抽搐| 人妻系列 视频| 97人妻精品一区二区三区麻豆| 免费黄网站久久成人精品| 亚洲国产欧美在线一区| 免费人成在线观看视频色| 亚洲精品国产成人久久av| 伦精品一区二区三区| 国产成人免费无遮挡视频| 欧美日韩综合久久久久久| 国产精品嫩草影院av在线观看| 91久久精品电影网| 欧美3d第一页| 精品国产三级普通话版| 免费少妇av软件| 亚洲精品国产成人久久av| 欧美激情国产日韩精品一区| 国模一区二区三区四区视频| 成人毛片a级毛片在线播放| 免费黄色在线免费观看| 国产 一区精品| 九九爱精品视频在线观看| 免费不卡的大黄色大毛片视频在线观看| 国产大屁股一区二区在线视频| 久久久国产一区二区| 91精品一卡2卡3卡4卡| av国产精品久久久久影院| av福利片在线观看| 国产 精品1| 国产午夜精品久久久久久一区二区三区| 亚洲精品国产av蜜桃| 日韩大片免费观看网站| 国产午夜精品一二区理论片| 日日摸夜夜添夜夜爱| 99精国产麻豆久久婷婷| 国产人妻一区二区三区在| 久久99蜜桃精品久久| 高清毛片免费看| 国产男人的电影天堂91| 超碰av人人做人人爽久久| 不卡视频在线观看欧美| 男插女下体视频免费在线播放| 国产爱豆传媒在线观看| 晚上一个人看的免费电影| 七月丁香在线播放| 午夜免费男女啪啪视频观看| 91久久精品国产一区二区成人| 亚洲电影在线观看av| 午夜激情福利司机影院| 精品国产三级普通话版| 成人一区二区视频在线观看| 超碰av人人做人人爽久久| av福利片在线观看| 国产成人aa在线观看| 97人妻精品一区二区三区麻豆| 精品人妻一区二区三区麻豆| 有码 亚洲区| 十八禁网站网址无遮挡 | 亚洲aⅴ乱码一区二区在线播放| 欧美区成人在线视频| 亚洲国产色片| 亚洲精品成人久久久久久| 中文字幕免费在线视频6| 少妇被粗大猛烈的视频| 干丝袜人妻中文字幕| 婷婷色麻豆天堂久久| 亚洲欧美中文字幕日韩二区| 欧美区成人在线视频| 91久久精品国产一区二区成人| 十八禁网站网址无遮挡 | 制服丝袜香蕉在线| 美女cb高潮喷水在线观看| 全区人妻精品视频| 亚洲精品国产av成人精品| 免费观看av网站的网址| 最近手机中文字幕大全| 肉色欧美久久久久久久蜜桃 | 人体艺术视频欧美日本| 午夜老司机福利剧场| 国产男女超爽视频在线观看| 亚洲高清免费不卡视频| 欧美最新免费一区二区三区| 色播亚洲综合网| 黄色日韩在线| 能在线免费看毛片的网站| 99视频精品全部免费 在线| 欧美日韩国产mv在线观看视频 | 男女啪啪激烈高潮av片| 在线免费观看不下载黄p国产| 少妇丰满av| 成人美女网站在线观看视频| 日韩成人av中文字幕在线观看| 你懂的网址亚洲精品在线观看| 亚洲欧美日韩另类电影网站 | 午夜激情久久久久久久| 搞女人的毛片| 在现免费观看毛片| 五月伊人婷婷丁香| 精品视频人人做人人爽| 69av精品久久久久久| 日本黄大片高清| 啦啦啦啦在线视频资源| 免费不卡的大黄色大毛片视频在线观看| 欧美日本视频| 高清欧美精品videossex| 国产亚洲5aaaaa淫片| 亚洲天堂国产精品一区在线| 99九九线精品视频在线观看视频| 精品国产一区二区三区久久久樱花 | 性色avwww在线观看| 国产精品国产三级专区第一集| 高清毛片免费看| av一本久久久久| 三级男女做爰猛烈吃奶摸视频| 国产中年淑女户外野战色| 少妇人妻久久综合中文| 欧美老熟妇乱子伦牲交| 亚洲欧美清纯卡通| 精品人妻视频免费看| 亚洲人成网站高清观看| 国产黄片视频在线免费观看| 大话2 男鬼变身卡| 欧美成人精品欧美一级黄| 日韩伦理黄色片| 极品少妇高潮喷水抽搐| 1000部很黄的大片| 国产亚洲91精品色在线| 午夜免费观看性视频| 超碰av人人做人人爽久久| 十八禁网站网址无遮挡 | 欧美日韩一区二区视频在线观看视频在线 | 91在线精品国自产拍蜜月| 免费观看av网站的网址| 香蕉精品网在线| 一级a做视频免费观看| 大香蕉久久网| 少妇人妻精品综合一区二区| 亚洲av.av天堂| 欧美+日韩+精品| 日韩亚洲欧美综合| 视频区图区小说| 18+在线观看网站| 亚洲精品国产av成人精品| 少妇人妻一区二区三区视频| 久久精品熟女亚洲av麻豆精品| 亚洲欧美日韩卡通动漫| 亚洲精品亚洲一区二区| 国产亚洲av片在线观看秒播厂| 视频中文字幕在线观看| 成人毛片a级毛片在线播放| 亚洲不卡免费看| 在线观看国产h片| 国产午夜福利久久久久久| 亚洲国产成人一精品久久久| 成人特级av手机在线观看| av福利片在线观看| 美女高潮的动态| 国产国拍精品亚洲av在线观看| 网址你懂的国产日韩在线| 三级国产精品片| 777米奇影视久久| 成人免费观看视频高清| 国产精品国产三级国产专区5o| 国产一区亚洲一区在线观看| 日本熟妇午夜| 最近的中文字幕免费完整| 最近最新中文字幕免费大全7| 日韩国内少妇激情av| 国产精品99久久99久久久不卡 | 国产伦理片在线播放av一区| 99久久精品国产国产毛片| 欧美bdsm另类| 国产在线男女| 高清欧美精品videossex| 日韩伦理黄色片| 亚洲欧美成人精品一区二区| 日韩亚洲欧美综合| 九九久久精品国产亚洲av麻豆| 欧美老熟妇乱子伦牲交| 成年人午夜在线观看视频| 免费av毛片视频| 亚洲最大成人中文| 亚洲精品第二区| 777米奇影视久久| 欧美最新免费一区二区三区| 成人二区视频| 欧美另类一区| 天堂中文最新版在线下载 | 精品人妻视频免费看| 久久久精品免费免费高清| 春色校园在线视频观看| 最新中文字幕久久久久|