日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]基于Linux的WEB服務(wù)器的設(shè)計與實現(xiàn)

嵌入式WEB服務(wù)器的主要設(shè)計思想就是將嵌入式系統(tǒng)和 WEB技術(shù)結(jié)合起來,將 WEB技術(shù)引入到現(xiàn)場測量和控制設(shè)備中,從而實現(xiàn)基于嵌入式 WEB服務(wù)器的控制系統(tǒng)。用戶可以通過現(xiàn)有的公共通信網(wǎng)絡(luò),使用標(biāo)準(zhǔn)的 Web瀏覽器作為接口直接對現(xiàn)場的控制設(shè)備進行訪問,監(jiān)控和維護等操作,實現(xiàn)了異構(gòu)設(shè)備之間的跨平臺互訪。 1嵌入式 Web服務(wù)器總體設(shè)計

系統(tǒng)硬件設(shè)計如圖 1所示。嵌入式 WEB服務(wù)器由網(wǎng)絡(luò)模塊、接口模塊和存儲模塊三個部分組成。網(wǎng)絡(luò)模塊是整個嵌入式 WEB服務(wù)器的核心,負責(zé)完成服務(wù)器的初始化,并且在 80端口等待用戶的連接請求。根據(jù)用戶請求的類型提供相應(yīng)的服務(wù)。此外還要實現(xiàn)電子郵件功能,用來完成自動報警和數(shù)據(jù)的保存,此外通過選擇以太網(wǎng)或者電話線進入 Internet。

接口模塊及存儲模塊。為了使 WEB服務(wù)器具有更好的通用性,在系統(tǒng)提供了一些通用接口,如 RS-232、RS-485、CAN、Modem、Ethernet??梢院筒煌涌诘目刂圃O(shè)備進行連接;系統(tǒng)提供了一個建立在外部串行 Flash芯片上的小型文件系統(tǒng),主要用來存放操作系統(tǒng),嵌入式 Web服務(wù)器需要發(fā)布的網(wǎng)頁和運行的程序。而各個接口采集的數(shù)據(jù)暫時存放在 1 M的 RAM里,每隔一定的時間就將數(shù)據(jù)通過電子郵件發(fā)送到指定的郵箱,然后覆蓋原有的數(shù)據(jù)。

1.1 LX972ALC網(wǎng)絡(luò)通訊接口電路電路設(shè)計

DS80C400網(wǎng)絡(luò)微控制器是目前集成度最高的 8 0 5 1器件。集成外設(shè)包括 1 0/1 0 0M以太網(wǎng)控制器,三個串行端口,一個 CAN 2.0B控制器, 1-Wire主機和 64個 I/O引腳。能夠通過以太網(wǎng) M AC提供高達 5Mbps的吞吐率。24位尋址方式簡化了對于大容量程序或數(shù)據(jù)存儲器的訪問,支持高達 1 6 M B的連續(xù)存儲空間。 LXT972ALC是 Intel公司推出的遵循正 IEEE標(biāo)準(zhǔn)的網(wǎng)絡(luò)通訊接口電路,支持 10M/100M的雙絞線應(yīng)用,同時也支持 100Mb/s的光纖接口;該電路提供的 MII口能很好的符合 10/100MACs。

其主要完成的是 IEEE802.3標(biāo)準(zhǔn)定義的物理編碼子層 (PCS)、物理媒體附加子層 (PMA)和物理媒體獨立子層 (PMD)的主要功能。單片機與芯片的電路如圖 2所示:

當(dāng)合法的數(shù)據(jù)出現(xiàn)在 RXD上的時候, LXT972ALC使 RX_DV有效,當(dāng)合法的數(shù)據(jù)出現(xiàn)在 TXD上的時候,DSS0C400使 TX_EN有效;當(dāng) LXT972ALC檢測到幀中有錯誤時,它使 RX_ER有效;當(dāng) DSSOC400緩沖器沒有準(zhǔn)備好時,它使 TX_ER有效;當(dāng)發(fā)送或者接收沒有處于空閑狀態(tài)時,LX972ALC使 CRS有效;當(dāng) LXT972AL檢測到?jīng)_突時,它使 COL有效,

并且在沖突期間一直保持高電平,如果 COL失效,那么 RX進入跟蹤模式。MDIO是 PHY管理數(shù)據(jù)的時鐘,MDIO是 PHY和 MAC之間控制信息的接口。 MDIO是通過軟件實現(xiàn)高級控制,因此必須通過并行口來實現(xiàn)。 [!--empirenews.page--]

1.2 Modem接口設(shè)計

本系統(tǒng)利用主控制器的 UART2進行模擬 Modem通信的基本過程:DS80C400先把準(zhǔn)備寫入串行設(shè)備的數(shù)據(jù)發(fā)送到 UART的寄存器中,再通過 FIFO傳送到串行設(shè)備。 Modem接口電路我們采用芯片 MAX213EAI。MAXZ13EAI是 5V工作電源的 RS-232電平轉(zhuǎn)換芯片。它集成了 4個輸入和 5個輸出的 RS-232電平轉(zhuǎn)換口,可以很好的滿足 Modem接口標(biāo)準(zhǔn)傳輸?shù)男枰?。接口電路如圖 3所示。

2 嵌入式 WEB服務(wù)器軟件設(shè)計從設(shè)計角度,則可將嵌入式軟件分為 4個模塊:網(wǎng)絡(luò)通訊模塊、接口管理模塊、人機交互模塊和遠程加載模塊。

2.1 網(wǎng)絡(luò)通訊模塊設(shè)計

2.1.1 以太網(wǎng)接入 Internet的實現(xiàn)

嵌入式 WEB服務(wù)器是溝通客戶和控制現(xiàn)場的重要橋梁,客戶通過認 Web瀏覽器來實現(xiàn)遠程監(jiān)控的功能。本 WEB服務(wù)是以 TCP/IP協(xié)議來傳輸數(shù)據(jù),以 HTTP協(xié)議來進行客戶端與服務(wù)器之間的請求和響應(yīng),其體系結(jié)構(gòu)如圖 4所示。

當(dāng)客戶在界

當(dāng)客戶在界面上進行操作時,如點擊復(fù)選框或在文本框中輸入數(shù)據(jù)。 Applet根據(jù)用戶的操作進行響應(yīng),從而構(gòu)造出新的命令字,向嵌入式 WEB服務(wù)器發(fā)出請求,服務(wù)器根據(jù)新的命令字驅(qū)動控制系統(tǒng)中相應(yīng)的執(zhí)行機構(gòu),并將新的狀態(tài)信息和數(shù)據(jù)信息返回到客戶端,客戶端解析返回的數(shù)據(jù),并進行實時顯示。

2.1.2公用電話網(wǎng)接入 Internet的實現(xiàn)

為保證能在無以太網(wǎng)環(huán)境的情況下進行通信,系統(tǒng)還采用了串口外接調(diào)制解調(diào)器通過電話網(wǎng)來實現(xiàn)與遠程客戶機的通信。網(wǎng)絡(luò)建立的實現(xiàn)就要用到 PPP協(xié)議(Point to Point Protocol點對點協(xié)議)。在程序運行的時候先要讀取 PPP通信的控制信息,判斷是否使用 PPP進行通信,否則默認使用 Ethernet來進行數(shù)據(jù)的傳輸。而不是同時開啟這兩種模式。

由于 PPP通信并不區(qū)分客戶端和服務(wù)器,把負責(zé)認證和 IP分配的端認為是服務(wù)器,而不需要認證和使用服務(wù)器提供 IP的端認為是客戶端。設(shè)計了 LinkManger類、PPPDaemon類、PPPModemLink類、ModemCommand類、PPPException類,用來實現(xiàn) PPP通信。其中 LinkManger類:用于管理 PPP連接,啟動經(jīng)由網(wǎng)絡(luò)接到遠端服務(wù)器的出站連接,生成一個 PPPDaemon實例用來設(shè)置 IP,驗證用戶名和密碼。并實現(xiàn)接收 PPP事務(wù)。

PPPModemLink類首先打開一個串口并進行初始化,初始化完成后,把一個串口的對象傳遞給 PPP,然后創(chuàng)建 ModemCommand對象來控制與調(diào)制解調(diào)器的串行通信,并通過 SerialPortEvenlistener接口監(jiān)視 CD以檢測調(diào)制解調(diào)器是否掛起。其定義了 Modem的初始化和復(fù)位方法:initializeLink()和 resetModem()。

ModemCommand類負責(zé)和 modem具體的串行通信,其分別定義了 sendcommand()、 waitFoResponse()和 receiveCommand()方法。分別用來發(fā)送、等待和接收命令。當(dāng)操作超時,則拋出 DataLinkException;waitforMatc()主要用來供 sendCommand()和 receiveCommand()進行調(diào)用,用來判斷接收到的字符串是否和匹配字符串一致。當(dāng)相應(yīng)操作超時,則拋出 DataLinkException。

2.2 電子郵件功能的實現(xiàn)

在系統(tǒng)設(shè)計時,考慮到系統(tǒng)的存儲容量,不可能將采集的數(shù)據(jù)全部存儲在本地的系統(tǒng)中,為了保存系統(tǒng)的日志,可以采取定時向指定郵箱發(fā)送數(shù)據(jù)。本系統(tǒng)用 Java語言開發(fā)了后臺自動發(fā)送郵件的功能。郵件采用 BASE64編碼,并且支持 SMTP認證。

在本系統(tǒng)中,只需要完成 SMTP的發(fā)送方式,而不要求其完成 SMTP的接收方式,這樣就簡化了編程的難度。SMTP開服務(wù)器和 SMTP客戶之間的對話過程:首先建立 TCP連接,然后客戶端發(fā)送 HELO命令以標(biāo)識發(fā)件人的身份,客戶端發(fā)送 MAIL命令,服務(wù)器端以 OK作為響應(yīng),表明準(zhǔn)備接收。接下來客戶端發(fā)送 RCPT命令,以標(biāo)識該電子郵件的計劃接收人,服務(wù)器端如表示愿意為收件人接收郵件。則在協(xié)商結(jié)束后發(fā)送郵件,用命令 DATA發(fā)送,將輸入內(nèi)容一起發(fā)送出去。最后結(jié)束此次發(fā)送,用 QUIT命令退出。所有的命令都是以換行符作為結(jié)束。 [!--empirenews.page--]

2.3 嵌入式 Web服務(wù)器接口模塊的實現(xiàn)

在本系統(tǒng)中為了滿足不同工業(yè)控制系統(tǒng)的需要,設(shè)計有串口、CAN總線接口、Modem接口和 RS-485接口。系統(tǒng)在啟動時,從系統(tǒng)的 FLASH中讀取 120個字節(jié)的初始化信息,并據(jù)此來判斷是否開啟接口,并對所開啟的接口進行初始化。由于各個模塊的初始化函數(shù)己經(jīng)存在,因此系統(tǒng)初始化時,只要調(diào)用相應(yīng)的函數(shù)就夠了。PPP已經(jīng)在網(wǎng)絡(luò)模塊部分介紹,而 RS-485的使用和普通串口的初始化相似,本部分主要介紹 RS-232和 CAN。

2.3.1 RS-232串口驅(qū)動函數(shù)設(shè)計

系統(tǒng)的開發(fā)語言是 Java,但 Java本身不提供對串口操作的類,要實現(xiàn)對串口的讀寫操作,需要用第三方 API函數(shù)完成,實際的開發(fā)過程中,使用串口通訊協(xié)議開發(fā)包 comm.jar,它是 J2SE的標(biāo)準(zhǔn)擴展,支持 RS-231串口,并提供了一種與平臺無關(guān)的串口通信機制。

串口驅(qū)動主要實現(xiàn)對串口的讀寫操作,給應(yīng)用程序提供發(fā)詢接收數(shù)據(jù)的接口。串口正常工作之前,需要進行初始化設(shè)置,因此驅(qū)動中還有初始化函數(shù)。串口的驅(qū)動函數(shù)串口的驅(qū)動函數(shù)主要包括: serialInit()用來初始化 UART、serialRead()用來接收字節(jié)組、 serialWrite()用來發(fā)送字節(jié)組。

2.3.2 CAN總線模塊 CAN接口在工業(yè)控制系統(tǒng)的運用越來越廣泛,操作系統(tǒng)提供了對 CAN進行操作的

dalsem.com.CanBus類,如要對 CAN進行操作,首先要建立一個 CAN的對象。

CanBus canTest = new CanBus(CanBus.CANBUS0);

由于 DS80C400只提供一個 CAN控制器,所以只能選用 CANBUS0。一旦對象被初始化,就需要設(shè)置 CAN的速率。 CAN速率的設(shè)置通過設(shè)置 Prescaler,TSEGI,TSEGZ和同步段來完成。CAN的計算速率為:CAN波特率=晶振頻率/Prescaler+(TSEG1+TSEG2)。

將上述設(shè)置完成后,就可以使 CAN控制器使能了:canTest.enableController();要想完成幀的發(fā)送和接收,除了在信息中心設(shè)置接收和發(fā)送模式外,還必須先定義一個 CanFrame的對象即 CanFrame frame =new CanFrame();要接收一個 CAN的幀時,信息是以 CanFrame對象的形式進行接收,并且調(diào)用 canTest.receive(frame);如要發(fā)送數(shù)據(jù),也必須將數(shù)據(jù)封裝層 CanFrame對象的形式進行發(fā)送,并且調(diào)用 canTest.sendFrame(frame)。

2.4人機接口模塊

本系統(tǒng)將瀏覽器/服務(wù)器(B/S)結(jié)構(gòu)和客戶端/服務(wù)器(C/S)結(jié)構(gòu)相結(jié)合,客戶端仍只需使用易于操作的 Web瀏覽器,使用該模式不僅統(tǒng)一了用戶界面,為用戶對系統(tǒng)的查詢和操作提供了極大的方便,系統(tǒng)還通過 Java Applet平衡了服務(wù)器端與瀏覽器端的負載狀況。

為了對控制對象進行遠程操作, Web頁面需要給用戶提供三個功能:一是現(xiàn)場設(shè)備查詢,主要是對現(xiàn)場設(shè)備的運行狀態(tài)和采集數(shù)據(jù)進行查詢;二是設(shè)備遠程控制,提供對運行現(xiàn)場某些參數(shù)的修改能力;三是報警 (如高限報警、下限報警等 ),如果現(xiàn)場設(shè)備超過設(shè)定的報警值,一方面會在網(wǎng)頁上發(fā)出聲音警報。此外還會在后臺向指定的郵箱發(fā)送報警郵件。

2.4.1 網(wǎng)頁的交互方式

Web系統(tǒng)主要采用 HTTP協(xié)議。HTTP采用請求/響應(yīng)的握手方式,每個 HTTP交互都由從客戶端發(fā)往服務(wù)器的請求和從服務(wù)器發(fā)往客戶端的響應(yīng)組成。HTTP采用 TCP連接,而且該連接狀態(tài)僅在此次連接中保持,無論服務(wù)器或是瀏覽器都不會記憶上次的連接狀態(tài)。在設(shè)計中首先采用 com.dalsemi.tininet包中的 http類,實現(xiàn)在 80端口等待客戶端的請求。其主要實現(xiàn)如下:

HTTPServer httpd = new HTTPServer(80); 然后給出將對應(yīng)的 HTML頁面返回到瀏覽器。 httpd.setIndexPage(“index.html”);初始化結(jié)束后,Web服務(wù)器進入正常的工作狀態(tài)以輪詢的方式來進行處理。

2.5 系統(tǒng)的遠程加載和調(diào)試

為了使系統(tǒng)滿足不同任務(wù)的需要,有時需要對嵌入式系統(tǒng)中運行的軟件進行動態(tài)更新。本系統(tǒng)可以直接將新版本的監(jiān)控軟件通過計算機網(wǎng)絡(luò)傳送到現(xiàn)場的嵌入式系統(tǒng),對原有的軟件進行更換,從而實現(xiàn)軟件的遠程動態(tài)更新。利用操作系統(tǒng)自帶的 FTP和 Telnet功能,就可以實現(xiàn)系統(tǒng)的遠程更新和調(diào)試。在系統(tǒng)初始化結(jié)束后開始運行,一個線程創(chuàng)建了服務(wù)器套接字(Server Socket)來偵聽客戶端的 FTP和 Telnet連接請求。我們利用 Telnet和 FTP技術(shù),可以實現(xiàn)在 Internet上對嵌入式節(jié)點的遠程操作,包括程序的運行和停止、程序下載、在線更新、調(diào)試、配置等。

3 總結(jié)

本文的創(chuàng)新點是采用 Java技術(shù)進行軟件開發(fā),在實現(xiàn)傳統(tǒng)的數(shù)據(jù)采集和發(fā)布的基礎(chǔ)上,還增加了電子郵件功能,使得系統(tǒng)保存日志更為方便,增加了遠程文件的上傳和下載,使得系統(tǒng)可以遠程更新;其次,對原有的操作系統(tǒng)進行重新編譯,實現(xiàn)了對 Rash的加載。從而省去了傳統(tǒng)的通過電池保護電路來完成掉電后的數(shù)據(jù)保存;最后,系統(tǒng)設(shè)計了多個接口可以和不同接口的控制設(shè)備相連,增強了系統(tǒng)的通用性。在網(wǎng)絡(luò)接入模式上以太網(wǎng)和 PPP相結(jié)合使得系統(tǒng)的靈活性大為增強。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

學(xué)習(xí)Linux動態(tài)鏈接庫是一個繞不開的話題,我們今天就一起來看一下什么是動態(tài)鏈接庫、動態(tài)鏈接庫有什么好處、如何編譯出一個動態(tài)鏈接庫等幾個關(guān)于動態(tài)鏈接庫的幾個基本概念,廢話少說咱們直接開始

關(guān)鍵字: Linux 靜態(tài)鏈接庫 動態(tài)鏈接庫

在Linux內(nèi)核中,提供了一個用來創(chuàng)建雙向循環(huán)鏈表的結(jié)構(gòu) list_head。雖然linux內(nèi)核是用C語言寫的,但是list_head的引入,使得內(nèi)核數(shù)據(jù)結(jié)構(gòu)也可以擁有面向?qū)ο蟮奶匦?,通過使用操作list_head 的通...

關(guān)鍵字: Linux 內(nèi)核鏈表

(全球TMT2022年9月15日訊)IBM于美國東部時間9月13日發(fā)布其下一代LinuxONE服務(wù)器,這是一個具有高度擴展性的基于Linux和Kubernetes的平臺,旨在為企業(yè)提供所需的可擴展性,使其能用一個單一系...

關(guān)鍵字: IBM Linux NET 可擴展性

下一代LinuxONE服務(wù)器擴展了IBM幫助行業(yè)客戶實現(xiàn)可持續(xù)目標(biāo)的能力,花旗銀行就是很好的例子 北京2022年9月14日 /美通社/ -- IBM(紐約證券交易所:IBM)于美國東部時間9月13日發(fā)布其下一...

關(guān)鍵字: IBM Linux X86 數(shù)據(jù)中心

(全球TMT2022年9月15日訊)IBM發(fā)布其下一代LinuxONE服務(wù)器,這是一個具有高度擴展性的基于Linux和Kubernetes的平臺,旨在為企業(yè)提供所需的可擴展性,使其用一個單一系統(tǒng)就能支持成千上萬的工作負...

關(guān)鍵字: GROUND IBM Linux 亞馬遜

為了使得多種設(shè)備能通過網(wǎng)絡(luò)相互通信,和為了解決各種不同設(shè)備在網(wǎng)絡(luò)互聯(lián)中的兼容性問題。

關(guān)鍵字: Linux 網(wǎng)絡(luò)包

北京2022年8月26日 /美通社/ -- 雙碳目標(biāo)的實現(xiàn)或許任重道遠,但是低碳、可持續(xù)的理念已經(jīng)滲透到我們生活工作的方方面面。持續(xù)整個夏季的異常高溫,以及四川等地限電,讓許...

關(guān)鍵字: IBM 可持續(xù)發(fā)展 AI Linux

(全球TMT2022年7月4日訊)日前,亞馬遜云科技宣布Amazon Mainframe Modernization正式可用,幫助客戶更加輕松快捷地將大型機工作負載遷移到亞馬遜云科技上,獲得云的敏捷性和彈性并節(jié)約成本。...

關(guān)鍵字: FRAM 亞馬遜 TI NI

摩爾線程MTT S系列GPU與浩辰CAD Linux 版V2022軟件產(chǎn)品近日完成兼容性適配。在雙方工程師的通力協(xié)作下,摩爾線程MTT S系列GPU能夠為浩辰CAD Linux軟件提供快速運行所需的性能,并在持久的高負載...

關(guān)鍵字: 摩爾線程 GPU Linux

近日,摩爾線程MTT S系列GPU與中望二三維CAD Linux版產(chǎn)品完成產(chǎn)品兼容性認證。經(jīng)摩爾線程和中望軟件雙方團隊的共同嚴(yán)格測試,中望CAD Linux、中望3D Linux、中望CAD機械版Linux、中望CAD建...

關(guān)鍵字: 摩爾線程 GPU Linux

嵌入式教程

6897 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉