新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Linux的WEB服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)

基于Linux的WEB服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)

作者: 時(shí)間:2009-12-18 來源:網(wǎng)絡(luò) 收藏

1.2 Modem接口

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

2 嵌入式 軟件角度,則可將嵌入式軟件分為 4個(gè)模塊:網(wǎng)絡(luò)通訊模塊、接口管理模塊、人機(jī)交互模塊和遠(yuǎn)程加載模塊。

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

2.1.1 以太網(wǎng)接入 Internet的

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

當(dāng)客戶在界

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

2.1.2公用電話網(wǎng)接入 Internet的

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

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

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

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

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

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

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

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉