• <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片东京热男人的天堂| 美女扒开内裤让男人捅视频| 91大片在线观看| 国产探花在线观看一区二区| 又黄又粗又硬又大视频| 精品国产超薄肉色丝袜足j| 女人爽到高潮嗷嗷叫在线视频| 熟女电影av网| 亚洲乱码一区二区免费版| 国产蜜桃级精品一区二区三区| 亚洲18禁久久av| 国产黄色小视频在线观看| 在线观看免费日韩欧美大片| 色av中文字幕| 国产av麻豆久久久久久久| 国产激情偷乱视频一区二区| 亚洲自偷自拍图片 自拍| 日韩中文字幕欧美一区二区| 成人三级黄色视频| 色综合站精品国产| 欧美黑人巨大hd| 一进一出抽搐动态| 日本在线视频免费播放| 搞女人的毛片| 欧美绝顶高潮抽搐喷水| 国产乱人伦免费视频| 男人舔奶头视频| 99久久精品热视频| 搡老妇女老女人老熟妇| 国产成人一区二区三区免费视频网站| 黑人欧美特级aaaaaa片| 老司机在亚洲福利影院| 婷婷精品国产亚洲av| 看黄色毛片网站| 国产精品一区二区三区四区免费观看 | 一个人免费在线观看的高清视频| 亚洲无线在线观看| 精品欧美国产一区二区三| 国产v大片淫在线免费观看| 久久久久久久久免费视频了| 又黄又爽又免费观看的视频| 午夜福利高清视频| 中文字幕人妻丝袜一区二区| 欧美日韩亚洲综合一区二区三区_| 最近在线观看免费完整版| 亚洲国产精品久久男人天堂| 韩国av一区二区三区四区| 久热爱精品视频在线9| 神马国产精品三级电影在线观看 | 18禁美女被吸乳视频| 国产精华一区二区三区| 国产久久久一区二区三区| 国产成人av激情在线播放| 韩国av一区二区三区四区| 日本黄大片高清| 国产一区在线观看成人免费| 视频区欧美日本亚洲| 日韩高清综合在线| av片东京热男人的天堂| 日韩欧美在线乱码| 亚洲人成网站在线播放欧美日韩| 18禁黄网站禁片免费观看直播| 亚洲美女视频黄频| 黄色女人牲交| 91麻豆精品激情在线观看国产| 99久久精品热视频| 久久精品aⅴ一区二区三区四区| 成人特级黄色片久久久久久久| 夜夜夜夜夜久久久久| bbb黄色大片| 亚洲欧美精品综合久久99| 精品熟女少妇八av免费久了| or卡值多少钱| 国产精品久久视频播放| 亚洲国产欧美一区二区综合| 美女大奶头视频| 国产91精品成人一区二区三区| 精品人妻1区二区| 一区福利在线观看| 亚洲熟妇熟女久久| 色综合亚洲欧美另类图片| 国产高清视频在线观看网站| 男女午夜视频在线观看| 国产爱豆传媒在线观看 | 亚洲人成网站高清观看| 精品午夜福利视频在线观看一区| aaaaa片日本免费| 制服诱惑二区| 一级作爱视频免费观看| xxxwww97欧美| 99久久国产精品久久久| 亚洲免费av在线视频| 国产av一区在线观看免费| 午夜福利成人在线免费观看| 午夜久久久久精精品| 国产成人啪精品午夜网站| 欧美黄色淫秽网站| 国产麻豆成人av免费视频| 狂野欧美激情性xxxx| 久久久久久亚洲精品国产蜜桃av| 热99re8久久精品国产| 在线看三级毛片| 色综合欧美亚洲国产小说| 亚洲一区高清亚洲精品| 国产成人一区二区三区免费视频网站| 成年版毛片免费区| 亚洲最大成人中文| 成人国产综合亚洲| 不卡av一区二区三区| 国产精品国产高清国产av| 曰老女人黄片| 国产激情欧美一区二区| 久久国产精品人妻蜜桃| 久久久精品大字幕| 50天的宝宝边吃奶边哭怎么回事| 国产亚洲精品av在线| 人人妻人人看人人澡| 国产伦一二天堂av在线观看| 不卡av一区二区三区| 校园春色视频在线观看| 最近在线观看免费完整版| 中出人妻视频一区二区| 国产成人欧美在线观看| 正在播放国产对白刺激| 免费在线观看日本一区| 日韩欧美在线乱码| 国产精品免费视频内射| 国产精品久久久av美女十八| 99精品欧美一区二区三区四区| 极品教师在线免费播放| 女生性感内裤真人,穿戴方法视频| 色播亚洲综合网| bbb黄色大片| 91麻豆av在线| 精华霜和精华液先用哪个| 91麻豆精品激情在线观看国产| 麻豆国产97在线/欧美 | 亚洲精品一卡2卡三卡4卡5卡| 日韩欧美 国产精品| 欧美又色又爽又黄视频| 国产av在哪里看| 久久精品人妻少妇| 亚洲专区国产一区二区| 人妻夜夜爽99麻豆av| av福利片在线观看| 欧美日韩乱码在线| 最近视频中文字幕2019在线8| 久久精品综合一区二区三区| 午夜福利在线在线| www日本黄色视频网| 久久久国产欧美日韩av| 亚洲成人久久性| 色老头精品视频在线观看| 人妻久久中文字幕网| 国产v大片淫在线免费观看| 1024视频免费在线观看| 欧美日韩乱码在线| 欧美zozozo另类| 母亲3免费完整高清在线观看| 亚洲精品久久成人aⅴ小说| 亚洲,欧美精品.| 母亲3免费完整高清在线观看| 亚洲男人的天堂狠狠| 一本综合久久免费| 国产真人三级小视频在线观看| 国产精品av久久久久免费| 精品无人区乱码1区二区| 久久久久久久久中文| 18禁观看日本| 国产精品av久久久久免费| 亚洲免费av在线视频| 亚洲自偷自拍图片 自拍| 少妇人妻一区二区三区视频| 国产成人精品久久二区二区91| 成年女人毛片免费观看观看9| 老司机深夜福利视频在线观看| 久久人人精品亚洲av| 听说在线观看完整版免费高清| 午夜激情福利司机影院| 亚洲欧美日韩东京热| 男女午夜视频在线观看| 亚洲黑人精品在线| 淫妇啪啪啪对白视频| 国产精品1区2区在线观看.| av欧美777| 国产熟女午夜一区二区三区| 欧美不卡视频在线免费观看 | 美女大奶头视频| 俺也久久电影网| 久久久久久久久中文| 一区福利在线观看| 两人在一起打扑克的视频| 精品福利观看| 亚洲人成77777在线视频| 国产精品 欧美亚洲| 少妇粗大呻吟视频| 久久精品成人免费网站| 中文资源天堂在线| 欧美黄色片欧美黄色片| 校园春色视频在线观看| 波多野结衣高清无吗| 国产精品久久久久久人妻精品电影| 淫妇啪啪啪对白视频| 久久国产乱子伦精品免费另类| 1024视频免费在线观看| 亚洲国产日韩欧美精品在线观看 | 村上凉子中文字幕在线| 精品欧美国产一区二区三| 欧美乱色亚洲激情| 波多野结衣高清作品| 男人舔奶头视频| 成人三级黄色视频| www.999成人在线观看| 精品久久久久久久末码| 国产激情欧美一区二区| 精品人妻1区二区| 国产伦人伦偷精品视频| 在线观看日韩欧美| 免费一级毛片在线播放高清视频| av中文乱码字幕在线| 久久中文字幕一级| 亚洲国产精品久久男人天堂| 每晚都被弄得嗷嗷叫到高潮| av在线天堂中文字幕| 中出人妻视频一区二区| 在线观看www视频免费| 日韩三级视频一区二区三区| 少妇的丰满在线观看| 成人一区二区视频在线观看| 国产精品影院久久| 久久精品国产亚洲av高清一级| 国产亚洲欧美98| 在线观看66精品国产| 国产精品免费一区二区三区在线| 在线观看日韩欧美| 日本熟妇午夜| 精品乱码久久久久久99久播| 三级毛片av免费| 欧美中文综合在线视频| 一本大道久久a久久精品| 午夜免费观看网址| 国产麻豆成人av免费视频| 又黄又粗又硬又大视频| 国产av一区二区精品久久| 一级作爱视频免费观看| 国内精品一区二区在线观看| 精品乱码久久久久久99久播| 真人一进一出gif抽搐免费| 亚洲免费av在线视频| 亚洲成av人片在线播放无| 国产亚洲精品第一综合不卡| 欧美在线一区亚洲| 中文字幕久久专区| 亚洲成人中文字幕在线播放| 99在线视频只有这里精品首页| 一区二区三区国产精品乱码| 18禁黄网站禁片免费观看直播| 一边摸一边抽搐一进一小说| 免费一级毛片在线播放高清视频| avwww免费| 国产成人影院久久av| 中文字幕久久专区| 亚洲自拍偷在线| 色播亚洲综合网| 亚洲在线自拍视频| av国产免费在线观看| 国产亚洲精品久久久久5区| 亚洲第一电影网av| 97碰自拍视频| 亚洲无线在线观看| 黄色丝袜av网址大全| 老汉色∧v一级毛片| 国产精品精品国产色婷婷| 人妻久久中文字幕网| 亚洲 欧美 日韩 在线 免费| 日本免费a在线| 国产av一区在线观看免费| 黄色 视频免费看| 最近视频中文字幕2019在线8| 成人18禁在线播放| 精品人妻1区二区| 国产精品久久久久久人妻精品电影| 一级毛片女人18水好多| 精品国产超薄肉色丝袜足j| or卡值多少钱| 九色国产91popny在线| 国产精品影院久久| 亚洲五月天丁香| 国产99久久九九免费精品| 色在线成人网| 欧美成狂野欧美在线观看| 亚洲av成人一区二区三| 中文字幕人妻丝袜一区二区| 成人av在线播放网站| 波多野结衣巨乳人妻| 国产高清视频在线播放一区| 国产主播在线观看一区二区| 免费看十八禁软件| netflix在线观看网站| 男女做爰动态图高潮gif福利片| 精品免费久久久久久久清纯| 高清在线国产一区| 久久精品人妻少妇| 床上黄色一级片| 女人被狂操c到高潮| 一边摸一边做爽爽视频免费| 黄色视频,在线免费观看| www.精华液| 天天躁夜夜躁狠狠躁躁| 麻豆av在线久日| 国产成人av激情在线播放| 亚洲成人精品中文字幕电影| 麻豆成人午夜福利视频| 国产精品乱码一区二三区的特点| 久久精品国产综合久久久| 午夜福利18| 最近最新免费中文字幕在线| 看片在线看免费视频| 中文字幕人成人乱码亚洲影| 久久久久国内视频| 一级毛片高清免费大全| 一a级毛片在线观看| 制服诱惑二区| 日本熟妇午夜| 九色成人免费人妻av| www国产在线视频色| 日本黄色视频三级网站网址| 亚洲九九香蕉| 久久热在线av| 国产精品久久久久久亚洲av鲁大| 在线观看午夜福利视频| 又黄又粗又硬又大视频| 亚洲熟妇中文字幕五十中出| www.精华液| 嫩草影视91久久| 18美女黄网站色大片免费观看| 99久久99久久久精品蜜桃| 草草在线视频免费看| 久99久视频精品免费| 免费无遮挡裸体视频| 色综合站精品国产| 亚洲欧洲精品一区二区精品久久久| 成人特级黄色片久久久久久久| 亚洲 国产 在线| 99riav亚洲国产免费| 亚洲一区二区三区不卡视频| 亚洲精品色激情综合| 欧美一级毛片孕妇| 久久久久久九九精品二区国产 | 可以在线观看毛片的网站| 午夜福利欧美成人| 精品熟女少妇八av免费久了| 中文亚洲av片在线观看爽| 制服丝袜大香蕉在线| 怎么达到女性高潮| 一区福利在线观看| 1024视频免费在线观看| 高潮久久久久久久久久久不卡| 小说图片视频综合网站| 天天躁狠狠躁夜夜躁狠狠躁| 免费看美女性在线毛片视频| 免费在线观看成人毛片| 熟妇人妻久久中文字幕3abv| 亚洲真实伦在线观看| 色综合站精品国产| 亚洲色图 男人天堂 中文字幕| 午夜久久久久精精品| 全区人妻精品视频| 美女黄网站色视频| 男插女下体视频免费在线播放| 两个人看的免费小视频| 不卡av一区二区三区| 久久精品夜夜夜夜夜久久蜜豆 | 舔av片在线| 国产日本99.免费观看| 精品久久久久久久人妻蜜臀av| 91麻豆精品激情在线观看国产| 特大巨黑吊av在线直播| 亚洲av成人不卡在线观看播放网| 一本久久中文字幕| 超碰成人久久| 亚洲精品粉嫩美女一区| 日本撒尿小便嘘嘘汇集6| 亚洲熟女毛片儿| 麻豆av在线久日| 精品不卡国产一区二区三区| 久久午夜亚洲精品久久| 午夜两性在线视频| 日韩中文字幕欧美一区二区| 最近在线观看免费完整版| 国产精品一区二区三区四区免费观看 | 欧美中文日本在线观看视频| 亚洲国产精品sss在线观看| 中出人妻视频一区二区| 久久婷婷人人爽人人干人人爱| 国产精品久久电影中文字幕| 美女黄网站色视频| 99精品在免费线老司机午夜| 欧美日韩中文字幕国产精品一区二区三区| 久久久久久久久中文| 欧美性猛交╳xxx乱大交人| 亚洲专区字幕在线| 成人午夜高清在线视频| 精品不卡国产一区二区三区| 欧美色视频一区免费| 999精品在线视频| 精品熟女少妇八av免费久了| 人人妻人人澡欧美一区二区| 一卡2卡三卡四卡精品乱码亚洲| av在线播放免费不卡| 国内久久婷婷六月综合欲色啪| 两个人免费观看高清视频| 国产精品 欧美亚洲| 1024香蕉在线观看| 窝窝影院91人妻| 国产精品爽爽va在线观看网站| 国产伦在线观看视频一区| 免费观看人在逋| 亚洲国产精品合色在线| 久久精品91无色码中文字幕| 亚洲精品中文字幕在线视频| 女警被强在线播放| 国产亚洲精品第一综合不卡| 亚洲男人的天堂狠狠| 免费av毛片视频| 欧美大码av| 99精品欧美一区二区三区四区| 国产精品电影一区二区三区| 丝袜美腿诱惑在线| 国产精品国产高清国产av| 麻豆av在线久日| 国产99白浆流出| 亚洲成人久久爱视频| 国产精品影院久久| 午夜福利成人在线免费观看| 丰满人妻一区二区三区视频av | 日本一区二区免费在线视频| 日韩欧美精品v在线| 特大巨黑吊av在线直播| 国产精品,欧美在线| 夜夜躁狠狠躁天天躁| 色综合站精品国产| 国产精品乱码一区二三区的特点| 丝袜人妻中文字幕| 18禁观看日本| 99久久综合精品五月天人人| 宅男免费午夜| 又紧又爽又黄一区二区| 国产一区在线观看成人免费| 老司机午夜福利在线观看视频| 色噜噜av男人的天堂激情| 成人18禁在线播放| 九色成人免费人妻av| 91在线观看av| 99久久无色码亚洲精品果冻| 亚洲精品中文字幕在线视频| e午夜精品久久久久久久| 久久久久久九九精品二区国产 | 午夜免费观看网址| 国产激情偷乱视频一区二区| 亚洲精品中文字幕一二三四区| 国产黄片美女视频| 99在线视频只有这里精品首页| 午夜免费成人在线视频| 欧美极品一区二区三区四区| 日本精品一区二区三区蜜桃| 欧美乱码精品一区二区三区| 69av精品久久久久久| av免费在线观看网站| 成人手机av| 亚洲 国产 在线| 99久久综合精品五月天人人| 美女高潮喷水抽搐中文字幕| 欧美日本视频| 麻豆av在线久日| 久久久久久人人人人人| 99久久综合精品五月天人人| 国产成年人精品一区二区| 国产成人精品久久二区二区免费| 免费人成视频x8x8入口观看| 老司机靠b影院| 首页视频小说图片口味搜索| 久久精品国产清高在天天线| 免费一级毛片在线播放高清视频| av视频在线观看入口| 久久精品91蜜桃| 亚洲人与动物交配视频| 18禁黄网站禁片免费观看直播| 欧美大码av| 亚洲无线在线观看| 天天一区二区日本电影三级| 桃红色精品国产亚洲av| 国产三级中文精品| 欧美日韩亚洲国产一区二区在线观看| www.999成人在线观看| 香蕉久久夜色| 18美女黄网站色大片免费观看| 国产精品综合久久久久久久免费| 午夜激情福利司机影院| 国产午夜精品久久久久久| 国产精品亚洲av一区麻豆| 91字幕亚洲| 亚洲成人久久爱视频| 亚洲成人久久性| 好男人在线观看高清免费视频| 亚洲一区二区三区色噜噜| 桃红色精品国产亚洲av| 亚洲熟女毛片儿| a在线观看视频网站| 在线观看66精品国产| 久久天躁狠狠躁夜夜2o2o| 麻豆成人av在线观看| 欧美黑人巨大hd| 精品高清国产在线一区| 一个人免费在线观看的高清视频| 一级毛片高清免费大全| or卡值多少钱| 韩国av一区二区三区四区| 香蕉丝袜av| 国产免费男女视频| 我要搜黄色片| 欧美乱色亚洲激情| 欧美成人性av电影在线观看| 香蕉久久夜色| 51午夜福利影视在线观看| 曰老女人黄片| 在线观看免费午夜福利视频| 啦啦啦免费观看视频1| 精品第一国产精品| 少妇裸体淫交视频免费看高清 | 欧美在线一区亚洲| 老熟妇仑乱视频hdxx| 一卡2卡三卡四卡精品乱码亚洲| 亚洲精品美女久久av网站| 少妇熟女aⅴ在线视频| 久久九九热精品免费| 国产精品久久久久久久电影 | 欧美日韩福利视频一区二区| 日韩精品免费视频一区二区三区| 国产激情偷乱视频一区二区| 亚洲精华国产精华精| 精品电影一区二区在线| 国产久久久一区二区三区| 视频区欧美日本亚洲| 久热爱精品视频在线9| x7x7x7水蜜桃| 国产精品久久久久久精品电影| 亚洲av成人一区二区三| 俺也久久电影网| 久久人人精品亚洲av| 欧美日韩亚洲国产一区二区在线观看| 99精品欧美一区二区三区四区| 欧美绝顶高潮抽搐喷水| 麻豆国产av国片精品| 亚洲成人中文字幕在线播放| 一本精品99久久精品77| 国产三级黄色录像| 三级男女做爰猛烈吃奶摸视频| 三级毛片av免费| 精品国产美女av久久久久小说| 色综合婷婷激情| 俺也久久电影网| 国内少妇人妻偷人精品xxx网站 | 日本 欧美在线| 欧美国产日韩亚洲一区| 亚洲午夜理论影院| 久久精品国产亚洲av高清一级| 午夜两性在线视频| 欧美日韩福利视频一区二区| 又粗又爽又猛毛片免费看| 国产成人aa在线观看| 国产精品久久久久久亚洲av鲁大| 亚洲avbb在线观看| 亚洲成人国产一区在线观看| 精品国内亚洲2022精品成人| 欧美性猛交╳xxx乱大交人| 色老头精品视频在线观看| 免费搜索国产男女视频| 又黄又粗又硬又大视频| 99热只有精品国产| 怎么达到女性高潮| 黄片小视频在线播放| xxxwww97欧美| 精品久久久久久,| 国产aⅴ精品一区二区三区波| 久久久久久大精品| 午夜激情av网站| 制服诱惑二区| 久久欧美精品欧美久久欧美| 国产成人欧美在线观看| 日韩欧美三级三区| 男男h啪啪无遮挡| 久久精品国产亚洲av高清一级| 老司机在亚洲福利影院| 成人av在线播放网站| 久久精品人妻少妇| 精品午夜福利视频在线观看一区| 99精品欧美一区二区三区四区| 国产激情偷乱视频一区二区| 国产成人精品无人区| 成人特级黄色片久久久久久久| 亚洲成av人片免费观看| 日韩免费av在线播放| 国产精品久久电影中文字幕| 在线免费观看的www视频| 一级毛片精品| 丝袜美腿诱惑在线| 婷婷精品国产亚洲av| 麻豆国产av国片精品| 久久人人精品亚洲av| 国内久久婷婷六月综合欲色啪| 女生性感内裤真人,穿戴方法视频| 亚洲专区字幕在线| 国产成人影院久久av| 亚洲 国产 在线|