• 
    

    
    

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

      ?

      車位管理主機的新型嵌入式服務(wù)器技術(shù)研究

      2014-09-06 10:49:56劉意虎李英祥
      關(guān)鍵詞:表單車位停車場

      劉意虎, 李英祥

      (成都信息工程學(xué)院 通信工程學(xué)院 嵌入式系統(tǒng)研究所,成都 610225)

      ?

      劉意虎, 李英祥

      (成都信息工程學(xué)院 通信工程學(xué)院 嵌入式系統(tǒng)研究所,成都 610225)

      針對停車場車位管理人員與現(xiàn)場嵌入式Linux車位管理主機的交互需求,討論了在嵌入式Linux車位管理主機中使用Apache和SQLite構(gòu)建嵌入式WEB服務(wù)器的關(guān)鍵技術(shù)和實現(xiàn)過程。通過在AT91SAM9260平臺上移植嵌入式Apache和嵌入式數(shù)據(jù)庫SQLite,管理人員可以通過網(wǎng)絡(luò)訪問嵌入式Linux車位管理主機,在WEB頁面通過輸入相關(guān)數(shù)據(jù)即可查詢本地停車場車位的相關(guān)信息。研究結(jié)果表明,通過Apache和SQLite相結(jié)合的WEB服務(wù)器,管理人員能方便地完成對車位信息的現(xiàn)場管理。

      嵌入式系統(tǒng);Apache; SQLite;CGI;車位管理

      引 言

      現(xiàn)階段大部分的系統(tǒng)都是基于上位機的顯示界面,結(jié)合SQL Server系列的大型數(shù)據(jù)庫,大大浪費了系統(tǒng)的資源,因此,本系統(tǒng)中研究的基于嵌入式SQLite和Apache web技術(shù)的融合,是目前嵌入式停車場系統(tǒng)中的一大創(chuàng)新點[1-2]。

      1 Apache技術(shù)

      1.1 Apache簡介

      由于在停車場系統(tǒng)中,管理人員要及時地對系統(tǒng)的各個參數(shù)進行查詢,所以設(shè)計一個良好的界面和使用一個優(yōu)秀的WEB服務(wù)器[3]是很重要的。BOA在現(xiàn)在的嵌入式系統(tǒng)中也用的很多,但是不滿足停車場系統(tǒng)中的多線程處理機制,而Apache是WEB服務(wù)器中功能比較完善的一個軟件,它最初源于NCSAhttpd服務(wù)器,后來經(jīng)過多次修改后成為目前世界上最流行的WEB服務(wù)器軟件之一。Apache取自“a patchy server”,意思是充滿補丁的服務(wù)器,因為它是自由軟件,所以不斷有人來為它開發(fā)新的功能、新的特性、修改原來的缺陷,可以運行在幾乎所有廣泛使用的計算機平臺之上,具有很好的跨平臺和安全性。

      Apache具有一些比較重要的特性:

      ① 支持最新的HTTP/1.1通信協(xié)議。

      ② 簡單的基于文件的配置安裝過程。

      ③ 支持通用網(wǎng)關(guān)接口。

      ④ 支持多種方式的HTTP認(rèn)證方式。

      ⑤ 支持FastCGI、Socket層(SSL)、Java Servlets(第三方模塊)。

      1.2 Apache在AT91SAM9260上的移植過程

      ① 從http://www.apache.org/上面下載apache_1.3.39.tar.gz,解壓下載下來的源代碼——tar xzf apache_1.3.39.tar.gz,進入apache_1.3.39目錄修改Makefile,使用本地的gcc編譯器編譯。

      ② 創(chuàng)建一個目標(biāo)平臺為AT91SAM9260版本的目錄,將源代碼解壓至此目錄下,修改編譯器類型為arm-linux-gcc,并按照上述步驟配置和編譯。

      ARM版本的該程序無法在本機運行,把本地編譯的文件apache_1.3.39/src/main/gen_test_char覆蓋這個ARM版本的文件,繼續(xù)編譯直至成功。

      ③ 安裝Apache,執(zhí)行make install,所有ARM版本的程序都安裝到了指定的目錄下面,把此目錄打包成tar cjf apache_1.3.39.tar.bz2 apache_1.3.39,并將目錄上傳至終端。

      ④ 修改配置文件,修改 conf/http.conf文件中相關(guān)項,保存。至此,Apache在AT91SAM9260平臺上的移植完成。

      1.3 Apache在AT91SAM9260上的測試過程

      在實際的停車場系統(tǒng)中,要求操作人員能實時地對車位進行查詢,這就要求服務(wù)器工作能實時、高效。因此對Apache服務(wù)器做了以下的測試。

      在主控制器內(nèi)部設(shè)定一個局域網(wǎng)固定IP地址,比如 192.168.1.116,測試采用個人筆記本PC機,用無線網(wǎng)卡登陸停車場主控制器,顯示以下認(rèn)證畫面,如圖1所示。

      2 SQLite技術(shù)

      2.1 SQLite簡介[4]

      SQLite是一個開源的、嵌入式關(guān)系型數(shù)據(jù)庫。最初發(fā)布于2000年,在便攜性、易用性、緊湊性、高效性和可靠性方面有突出的表現(xiàn)。SQLite擁有一個精致的、模塊化的體系結(jié)構(gòu)[5],并引進了一些獨特的方法進行關(guān)系型數(shù)據(jù)庫的管理。它由被組織在3個子系統(tǒng)中的8個獨立的模塊組成,如圖2所示。這個模型將查詢過程劃分為幾個不連續(xù)的任務(wù),就像在流水線上工作一樣。在體系結(jié)構(gòu)棧的頂部編譯查詢語句,在中部執(zhí)行它,在底部處理操作系統(tǒng)的存儲和接口[6]。

      圖2 SQLite的體系結(jié)構(gòu)

      2.2 SQLite在AT91SAM9260上的移植過程[9]

      ① 下載sqlite3.3.8。將下載的代碼包解開,將生成sqlite3.3.8目錄。

      ② 修改configure文件,將下面語句注釋去掉

      #if test "$cross_compiling" = "yes"; then

      ……

      #else

      # test "$cross_compiling" = yes &&

      ……

      #else

      ……

      ③ 配置并設(shè)置相關(guān)目錄“./configure-prefix=/data0/sqlite --disable-tcl --host=arm-linux”。

      ④ 修改Makefile文件,將SQLite3程序以靜態(tài)鏈接庫方式編譯。先需增加libsqlite3.a的編譯,再將“sqlite3$(TEXE):$(TOP)/src/shell.c.libs/libsqlite3.la sqlite3.h”改成“l(fā)ite3$(TEXE): $(TOP)/src/shell.c .libs/libsqlite3.a sqlite3.h”,將“-o $@ $(TOP)/src/shell.c .libs/libsqlite3.la ”改成“-o $@ $(TOP)/src/shell.c .libs/libsqlite3.a ”,上述完成后編譯“make”。

      對可執(zhí)行程序去掉一些調(diào)試信息如“arm-linux-strip SQLite3”,然后將SQLite3上傳至終端。至此SQLite3在AT91SAM9260上的移植完成。

      2.3 SQLite測試與API的應(yīng)用

      停車場系統(tǒng)SQLite數(shù)據(jù)庫中包含的信息有車位傳感器采集的停車位信息、電池電量傳感器采集的電量信息、以及采集信息的時間。因此數(shù)據(jù)庫中必須包含以上信息。

      (1) 創(chuàng)建數(shù)據(jù)庫

      CREATE TABLE parkinglot (id integer primary key,

      車位信息 text not null collate nocase,

      電量信息 text not null ,

      采集時間 text not null,

      Unique (車位信息,電量信息));

      (2) SQLiteAPI應(yīng)用

      int sqlite3_open_v2(const char *filename,Sqlite3 **ppDB,Int flags,Const char *zVfs);

      //數(shù)據(jù)庫打開函數(shù)

      int sqlite3_close(sqlite3*);

      //數(shù)據(jù)庫關(guān)閉連接函數(shù),如果連接上有打開的事務(wù), //則該事務(wù)將自動回滾

      int sqlite3_exec(sqlite3*,Const char *sql,Sqlite_callback,Void *data Char **errmsg);

      //解析和執(zhí)行sql字符串中每個命令,并且提供了 //獲得select語句結(jié)果的回調(diào)機制

      回調(diào)函數(shù)申明如下:Typedef int (*sqlite3_callback) (void *,Int,Char **,Char **);

      Sqlite3_last_insert_rowid()

      //獲取最后插入記錄的主鍵值

      數(shù)據(jù)庫中保存了停車場車位上車位傳感器采集的實時車位數(shù)據(jù)和電量數(shù)據(jù),對整個系統(tǒng)的穩(wěn)定性以及高效性起著至關(guān)重要的作用,因此對數(shù)據(jù)庫的測試也是一項重要的工作。SQLite測試頁面如圖3所示。

      圖3 SQLite測試頁面

      3 停車場系統(tǒng)中的Web技術(shù)

      3.1 CGI技術(shù)簡介

      公共網(wǎng)關(guān)接口CGI(Common GatewayInterface) 是WWW技術(shù)中最重要的技術(shù)之一,有著不可替代的重要地位。CGI是外部應(yīng)用程序(CGI程序)與Web服務(wù)器之間的接口標(biāo)準(zhǔn),是在CGI程序和Web服務(wù)器[10]之間傳遞信息的規(guī)程。CGI規(guī)范允許Web服務(wù)器執(zhí)行外部程序,并將它們的輸出發(fā)送給Web瀏覽器,CGI將Web的一組簡單的靜態(tài)超媒體文檔變成一個完整的新的交互式媒體。

      (1) GET方式獲取

      對于那些使用了屬性“METHOD=GET”的表單(或者沒有METHOD屬性,這時候GET是其缺省值),CGI定義為:當(dāng)表單被發(fā)送到服務(wù)器中斷后,表單中的數(shù)據(jù)被保存在服務(wù)器上一個叫做QUERY_STRING的環(huán)境變量中。這種表單的處理相對簡單,只要讀取環(huán)境變量就可以了。

      (2) POST方式獲取

      GET的處理方法可以看作是“純查詢(pure query)”類型的,它與狀態(tài)無關(guān)。同樣的數(shù)據(jù)可以被提交任意的次數(shù),而不會引起任何的問題(除了服務(wù)器的一些小小的開銷)。而現(xiàn)在的POST方式獲取就不同了,它要改變一個文件的內(nèi)容,因而,可以說它是與狀態(tài)有關(guān)的,這也算是POST和GET的區(qū)別之一。而且,GET對于表單的長度是有限制的,POST則不然,但相對來說對GET的處理速度就要比POST快一些。

      3.2 SQLite、Apache和CGI交互

      為了實現(xiàn)在嵌入式系統(tǒng)平臺AT91SAM9260上面通過網(wǎng)頁形式訪問服務(wù)器來查詢有效信息,采用了在停車場主控制器上的服務(wù)器構(gòu)建一系列網(wǎng)頁的方式,當(dāng)?shù)顷懴到y(tǒng)網(wǎng)址時將看到以下登陸界面,如圖4所示。

      圖4 Apache登陸頁面

      圖5 系統(tǒng)交互流程圖

      登陸認(rèn)證成功后,將進入一系列的車位信息查詢界面,管理人員就可以通過在相應(yīng)的地方輸入相關(guān)信息來查詢停車場系統(tǒng)中的實時參數(shù)。比如,在表單中輸入停車場編號,則Apache服務(wù)器處理表單數(shù)據(jù)并傳給后臺CGI采集程序,后臺程序通過查詢數(shù)據(jù)庫并處理相關(guān)事務(wù)后,通過打印網(wǎng)頁的形式把返回結(jié)果顯示給用戶。系統(tǒng)的交互流程圖如圖5所示。

      3.2.1 本地登錄認(rèn)證及CGI實現(xiàn)

      停車場主控制器服務(wù)器需要檢測操作人員權(quán)限,只有規(guī)定的人員才能進入系統(tǒng)。本地認(rèn)證代碼為:

      int len = atoi(getenv("CONTENT_LENGTH"));

      shmid = shmget((key_t)1119,MAX_SIZE,IPC_CREAT | 0666);

      ptr = (unsigned char *)shmat(shmid,0,0));

      fd = open("/etc/sh-user", O_RDONLY);

      用戶的用戶名和密碼存儲在主控制器本地FLASH中,掉電不丟失。操作人員輸入認(rèn)證指令后,HTTP服務(wù)器會通過GET或者POST方式獲取環(huán)境變量的內(nèi)容。在對本地用戶集進行核對后,如果用戶合法則允許其進入系統(tǒng)內(nèi)部,如不合法則予以自動退出系統(tǒng)。防止非法用戶入侵查詢系統(tǒng)。

      當(dāng)管理員用戶成功登陸系統(tǒng)后,就可以看到一系列的操作,比如獲取實時的車位停車信息等。對每一個停車場系統(tǒng),以城市名拼音的第一個字母加上數(shù)字的形式命名,比如成都的第一個停車場以“cd0001”的格式命名。這樣,管理人員在進行查詢的時候只要輸入相應(yīng)的名稱就可以查詢相關(guān)信息。網(wǎng)頁就以簡單的文本輸入框的形式接受參數(shù)。在相應(yīng)的表單中,Apache服務(wù)器通過從瀏覽器表單中獲取相應(yīng)數(shù)據(jù),經(jīng)過HTTP協(xié)議[11]處理后,由相關(guān)環(huán)境變量交由后臺CGI程序處理。車位信息的采集由無線串狀傳感器網(wǎng)絡(luò)部分完成,并存儲在本地數(shù)據(jù)庫SQLite中。ARM端后臺CGI工作模式流程圖如圖6所示。

      圖6 ARM端后臺CGI工作模式流程圖

      表單輸入的數(shù)據(jù)通過URL編碼后傳輸?shù)椒?wù)器端,然后服務(wù)器對傳遞進來的URL編碼進行解碼得到表單數(shù)據(jù)。CGI表單數(shù)據(jù)獲取函數(shù):

      char* getcgidata(FILE* fp, char* requestmethod);

      其中第二個參數(shù)為獲取的環(huán)境變量。關(guān)鍵代碼如下所示:

      if (!strcmp(requestmethod, "GET"))

      input = getenv("QUERY_STRING");

      else if (!strcmp(requestmethod, "POST"))

      len = atoi(getenv("CONTENT_LENGTH"));

      input = (char*)malloc(sizeof(char)*(size + 1));

      3.2.2 本地數(shù)據(jù)庫SQLite查詢

      在通用網(wǎng)關(guān)接口程序?qū)Φ顷懹脩糍~戶進行認(rèn)證后,開始處理相關(guān)數(shù)據(jù)庫操作。處理操作包括查詢、插入、更新等。

      (1) 查詢

      iRc = sqlite3_open("/CarParking.db", &database);

      "select * from parkinglotwhere rowid in (select max(rowid)from carparking);";

      iRc = sqlite3_exec(database, sql, mycallback, data, &acErr);

      車位、電量查詢頁面如圖7、圖8所示。

      圖7 車位查詢頁面

      圖8 電量查詢頁面

      (2)插入

      "INSERT INTO parkinglot(車位號,車位信息,電池電量,時間) VALUES ('%d','有車','-1','%s');"

      (3)更新

      "update parkinglot set電池電量 = '正常' where車位號 = '%d';"

      4 系統(tǒng)測試

      對車位管理子系統(tǒng)中的車位傳感管理主機進行測試時,通過網(wǎng)頁的表單輸入指令,后臺CGI程序操作本地數(shù)據(jù)庫中傳感器串狀網(wǎng)絡(luò)采集的傳感器實時信息。此信息是通過主機發(fā)送測試數(shù)據(jù)信息,傳感器節(jié)點1收到數(shù)據(jù)并通過串口返回采集信息回應(yīng)幀給主控制器的。測試的主要信息有車位車輛信息、電池電量信息和采集時間等功能。經(jīng)過一系列的測試過程,返回的數(shù)據(jù)與本地數(shù)據(jù)庫中存儲的信息一致,能很好地實現(xiàn)用戶對停車場信息的查詢。用戶查詢界面和指定了停車場編號的查詢返回界面略——編者注。

      結(jié) 語

      本文主要探討了基于Apache的Web技術(shù)和嵌入式SQLite技術(shù),并在此基礎(chǔ)上應(yīng)用到了嵌入式停車場系統(tǒng)中。以實際的停車場系統(tǒng)項目為背景,全方位介紹了Apache技術(shù)和SQLite技術(shù),同時引入了CGI通用網(wǎng)關(guān)接口[12]技術(shù),分析了在項目中技術(shù)的具體實現(xiàn)。最后,對整個系統(tǒng)做了系統(tǒng)的測試和分析,測試結(jié)果證明基于嵌入式Linux的Apache服務(wù)器和SQLite數(shù)據(jù)庫的結(jié)合在停車場車位管理主機中的應(yīng)用具有較好的應(yīng)用效果和使用價值。

      [1] 侯景華,吳宇紅. 基于Apache的Web服務(wù)器性能優(yōu)化和分析[J].電腦知識與技術(shù),2007(2).

      [2] 陳代梅,方賢進,姚亞鋒. ApacheWeb服務(wù)器安全最大化[J]. 計算機與數(shù)字工程,2007(7).

      [3] 周敬利,汪健,夏洪濤. 基于Apache的Web應(yīng)用安全防護研究[J]. 計算機工程與科學(xué),2006(4).

      [4] 李昌維. 嵌入式移動關(guān)系數(shù)據(jù)庫管理系統(tǒng)的研究與應(yīng)用[D]. 長沙:湖南大學(xué),2008.

      [5] 廖順和,樂嘉錦. 嵌入式數(shù)據(jù)庫SQLite加密方法分析與研究[J]. 計算機應(yīng)用與軟件, 2008(10).

      [6] 堯有平,薜小波. 基于ARM-Linux的SQLite嵌入式數(shù)據(jù)庫的研究[J]. 微計算機信息, 2008(5).

      [7] 3GPP TS 25.462 V6.3.0:UTRAN iuant interface:signalling transport [EB/OL]. [2013-11].http://www.3gpp.org.

      [8] 3GPP TS 25.463 V6.4.0:UTRAN iuant interface:remote electrical tilting (RET) antennas application part (RETAP) signalling[EB/OL].[2013-11].http://www.3gpp.org.

      [9] 徐士強 .基于ARM處理器的嵌入式Linux系統(tǒng)的研究與應(yīng)用[D].南京:郵電大學(xué),2007.

      [10] 劉鑫.基于ARM平臺的嵌入式WEB服務(wù)器的設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué),2010.

      [11] 白濤.基于ARM和LAMP技術(shù)的抄表系統(tǒng)終端服務(wù)器的研究[D].哈爾濱:東北農(nóng)業(yè)大學(xué),2010.

      [12] 何杭峰. 基于LAMP平臺的WEB服務(wù)器架構(gòu)[J].中國新技術(shù)新產(chǎn)品,2011(22).

      劉意虎(碩士研究生),研究方向為嵌入式系統(tǒng)。

      Liu Yihu, Li Yingxiang

      (Embedded Systems Institute, School of Communication Engineering,Chengdu University of Information Technology,Chengdu 610225, China)

      This article is based on the interaction requirement for the management staff and the embedded Linux host for the embedded parking system, it discusses the key technologies and implementation process of in building embedded WEB server with Apache and SQLite in embedded Linux host.With transplanting the embedded Apache and database SQLite in AT91SAM9260, administrators can access the embedded Linux host on the net,also it can be queried the related information of the local parking management system by inputting the relevant data in the WEB page.The results show that the administrators can manage the parking system easily by the combination of the Apache and SQLite.

      embedded system;Apache;SQLite;CGI;parking lot

      TP368.1

      A

      迪娜

      2013-11-07)

      猜你喜歡
      表單車位停車場
      電子表單系統(tǒng)應(yīng)用分析
      華東科技(2021年9期)2021-09-23 02:15:24
      為了車位我選擇了環(huán)保出行
      汽車畫刊(2020年5期)2020-10-20 05:37:35
      我自己找到一個
      停車場尋車管理系統(tǒng)
      電子制作(2018年9期)2018-08-04 03:31:18
      淺談網(wǎng)頁制作中表單的教學(xué)
      一個車位,只停一輛?
      PLC在地下停車場排水系統(tǒng)的應(yīng)用
      電子制作(2016年15期)2017-01-15 13:39:21
      迷宮
      “8·12”后,何以為家
      基于Infopath實現(xiàn)WEB動態(tài)表單的研究
      電子世界(2012年24期)2012-12-17 10:49:06
      甘泉县| 临清市| 仪征市| 万荣县| 拉孜县| 巩留县| 高平市| 昭苏县| 彰化县| 汉寿县| 寿光市| 乌兰县| 南宁市| 西青区| 土默特左旗| 龙川县| 奉节县| 和田县| 临城县| 江西省| 文登市| 内黄县| 新蔡县| 永兴县| 通榆县| 满洲里市| 札达县| 文登市| 定边县| 池州市| 横山县| 棋牌| 桐乡市| 阿拉善左旗| 稻城县| 界首市| 泊头市| 萨迦县| 平南县| 明水县| 伊吾县|