www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于Windows CE的嵌入式電子郵件系統(tǒng)設(shè)計

        從1996年的Windows CE 1.0 到最新的Windows CE.Net, WINCE 已有8年歷史。Windows CE設(shè)計簡單靈活,可在各種小型嵌入式系統(tǒng)中使用,且其功能強大,在最新一代的高性能工業(yè)和家用設(shè)備中也得到了充分使用。Microsoft eMbedded Visual Tools是微軟公司專為WINCE設(shè)備開發(fā)的一套開發(fā)環(huán)境,功能強大,開發(fā)方便快捷。二者的結(jié)合為實現(xiàn)嵌入式電子郵件系統(tǒng)提供了絕佳的開發(fā)環(huán)境。

      本嵌入式電子郵件系統(tǒng),即是以Windows CE為開發(fā)平臺,結(jié)合Embedded Visual Basic 3.0開發(fā)工具設(shè)計實現(xiàn)的。最后采用Microsoft POCKET PC2002 for Windows SDK工具完成系統(tǒng)的測試。

1 移動設(shè)備郵件系統(tǒng)的工作原理

      目前網(wǎng)絡(luò)上的電子郵件傳送有點如同日常信件中的普通信件發(fā)送,日常生活中人們首先將郵件交給郵局,郵局再按照信封上的地址投遞,最后將郵件發(fā)到收信的人信箱里,收信人只要憑借他的信箱鑰匙就可以拿到信件。同樣的一封電子郵件從用戶手中發(fā)出,首先有一個程序把這封郵件發(fā)送到SMTP服務(wù)器(發(fā)送郵件的服務(wù)器)上,再由服務(wù)器負(fù)責(zé)將郵件傳遞到目的信箱。然后需要一個程序接受信箱的郵件,當(dāng)然也不是只要隨便有一個程序就可以的,還需要帳號(如同收信人姓名)與口令(如同信箱鑰匙)。所以很明顯,發(fā)送郵件至少需要4個處理不同任務(wù),有不同功能的程序:發(fā)送郵件到服務(wù)器的程序,即發(fā)送郵件客戶端程序;在網(wǎng)絡(luò)上傳送郵件到對方信箱的程序,即SMTP服務(wù)器程序;接受郵件并存貯給用戶提取的服務(wù)器程序,即POP3服務(wù)器程序;從POP3服務(wù)器上收取郵件的程序,即接受郵件客戶端程序。

      收發(fā)電子郵件依靠一套標(biāo)準(zhǔn)的會話協(xié)議,其中最為著名現(xiàn)在最常用的有:SMTP協(xié)議,該協(xié)議規(guī)定了與SMTP服務(wù)器進(jìn)行對話的一系列命令與過程標(biāo)準(zhǔn);POP3協(xié)議,該協(xié)議規(guī)定了與POP3服務(wù)器進(jìn)行對話的一系列命令與過程標(biāo)準(zhǔn)。還有IMAP4協(xié)議,類似POP3的郵件接收協(xié)議。

1.1 SMTP協(xié)議

      SMTP(Simple Mail Transfer Protocol)又叫做簡單郵件傳輸協(xié)議。它主要對如何將電子郵件從發(fā)送方地址傳送到接收方,也即是對傳輸?shù)囊?guī)則做了規(guī)定。SMTP協(xié)議的通信模型并不復(fù)雜,主要工作集中在發(fā)送SMTP和接收SMTP上:首先針對用戶發(fā)出的郵件請求,由發(fā)送SMTP建立一條連接到接收SMTP的雙工通訊鏈路,發(fā)送SMTP負(fù)責(zé)向接收SMTP發(fā)送SMTP命令,而接收SMTP則負(fù)責(zé)接收并反饋應(yīng)答。可大致用下頁的SMTP通訊模型示意圖來表示:

ic72 嵌入系統(tǒng)
圖 1  SMTP 通訊模型示意圖

1.2 POP3協(xié)議

      POP3(Post Office Protocol Version 3)是整個電子郵件系統(tǒng)的基本協(xié)議之一。POP3適用于C/S結(jié)構(gòu)的脫機(jī)模型的電子郵件協(xié)議。 初始時,服務(wù)器通過偵聽TCP端口110開始POP3服務(wù),當(dāng)客戶主機(jī)需要使用服務(wù)時,它將與服務(wù)器主機(jī)建立TCP連接。當(dāng)連接建立后,POP3發(fā)送確認(rèn)消息,客戶和POP3服務(wù)器相互(分別)交換命令和響應(yīng)。這一過程一直要持續(xù)到連接終止。

2 系統(tǒng)設(shè)計

      該郵件系統(tǒng)由兩個客戶端程序組成,SMTP MAILER實現(xiàn)郵件和附件的發(fā)送,POP3 MAIL CHECKER用于登陸郵件服務(wù)器接受原始的郵件信息。

2.1 郵件發(fā)送端設(shè)計與實現(xiàn)

2.1.1發(fā)送端工作流程

      下圖是郵件發(fā)送流程圖

ic72 嵌入系統(tǒng)

2.1.2具體實現(xiàn)

      發(fā)送郵件的功能主要由eMbedded Visual Basic下的WINSOCK控件實現(xiàn)WINSOCK即Windows Socket,是微軟公司對Socket編程接口的集成。WINSOCK使用IP協(xié)議,同時支持TCP與UDP協(xié)議,在收發(fā)郵件這類基本網(wǎng)絡(luò)數(shù)據(jù)通信的前提下,WINSOCK控件是最好的選擇。

      以A—H表示郵件發(fā)送的各部分設(shè)計:

      A 在這個郵件程序中,首先要連接SMTP的郵件服務(wù)因此在cmdSend_Click()事件中最先實施的是Wsock.RemoteHost = ServerIp連接設(shè)定的服務(wù)器主機(jī)

      Wsock.RemotePort = ServerPort 設(shè)定默認(rèn)的端口。

      B 然后開始構(gòu)造郵件格式,定義字符串m_Date為發(fā)送日期,字符串mData為郵件頭。語句m_Date = FormatDateTime(Date, [vbShortDate]) & ", " & FormatDateTime(Date, [vbLongDate]) & " " & FormatDateTime(Time, [vbLongTime]) & "" & " -0600"  定義了郵件的發(fā)送日期。

      構(gòu)造郵件標(biāo)題 mData = "From:" & Chr(32) & strSendName & vbCrLf & _

                     "Date:" & Chr(32) & m_Date & vbCrLf & _

                     "X-Mailer: Harold Smtp Mailer V1.0" & vbCrLf & _

                     "To:" & Chr(32) & strReceiveName & vbCrLf & _

                     "Subject:" & Chr(32) & strSubject & vbCrLf

      這個典型的郵件標(biāo)題包含了:發(fā)件人,發(fā)件日期,收件人,主題以及發(fā)送郵件的程序名稱。

      C 當(dāng)郵件程序連上服務(wù)器后,進(jìn)如下一步打開郵件對話,利用WINSOCK控件發(fā)送對話信息:Wsock.SendData "HELO" & " " & Wsock.LocalHostName & vbCrLf

      如果SMTP服務(wù)器沒有返回“250” 應(yīng)答碼,則提示“Unable to establish transaction”.

      D 由于現(xiàn)在的郵件服務(wù)器多采用ESMTP協(xié)議,因此需要客戶端程序發(fā)送用戶名與密碼等認(rèn)證信息,故在打開對話過后便進(jìn)入“Authentication“過程,:

Wsock.SendData "AUTH LOGIN" & vbCrLf

If Not WaitForResponse("334", 10) Then

txtMsg.Text = "Unable to Connect with ESMTP server......"

Wsock.SendData Encode(User) & vbCrLf

Wsock.SendData Encode(Pass) & vbCrLf

      在這里調(diào)用了自編的Encode函數(shù)并發(fā)送了經(jīng)過BASE64編碼的用戶名與密碼信息。

      E  接著是發(fā)送發(fā)送方與接受方的地址:

Wsock.SendData "MAIL FROM:" & " " & strFromMail & vbCrLf  ‘發(fā)送方

Wsock.SendData "RCPT TO:" & " " & strToMail & vbCrLf       ‘接受方

      F 下一步是發(fā)送消息體(針對不含附件的RFC822郵件):

Wsock.SendData "DATA" & vbCrLf             ‘發(fā)送消息體

Wsock.SendData mData & vbCrLf                ‘發(fā)送郵件標(biāo)題

         Wsock.SendData strContent & vbCrLf              ‘發(fā)送正文

Wsock.SendData "." & vbCrLf                     ‘發(fā)送結(jié)束符

      G  在發(fā)送郵件時做了附件的判斷:

      If  Combo1.List > 0 Then  如果附件列表非空則轉(zhuǎn)入MIME郵件的構(gòu)造。MIME郵件的標(biāo)題部分與RFC822相同,但要擴(kuò)充一些內(nèi)容

Wsock.SendData "MIME-Version:1.0" & vbCrLf

Wsock.SendData "Content-Type:multipart/mixed;" & vbCrLf

Wsock.SendData "         boundary = Unique-Boundary" & vbCrLf & vbCrLf

Wsock.SendData "[ Random garbage here ]" & vbCrLf & vbCrLf

Wsock.SendData vbCrLf & "--Unique-Boundary" & vbCrLf

Wsock.SendData "Content-type: text/plain;charset=US-ASCII" & vbCrLf & vbCrLf

Wsock.SendData strContent & vbCrLf & vbCrLf

Wsock.SendData "--Unique=Boundary" & vbCrLf

Wsock.SendData "Content-Type: multipart/parallel;boundary = Unique-Boundary-2" & vbCrLf & vbCrLf

Wsock.SendData "--Unique=Boundary -2" & vbCrLf

Wsock.SendData "Content-Type: application/octest-stream;" & vbCrLf

Wsock.SendData "name =" & strAttachname & vbCrLf

Wsock.SendData "Content-Transfer-Encoding:base64" & vbCrLf

Wsock.SendData "Content-Disposition:inline;" & vbCrLf

      這里附件也通過編碼加入了郵件中。

      H 最后結(jié)束郵件對話,返回信息:

      Wsock.SendData "QUIT" & vbCrLf

            txtMsg.Text = txtMsg.Text & "Mail send success!"

2.2 郵件接受端的設(shè)計與實現(xiàn)

2.2.1  接收端工作流程

ic72 嵌入系統(tǒng)

圖3 接收端工作流程

2.2.2 功能實現(xiàn)

      POP3的通信與SMTP一樣,也可以通過Winsock來實現(xiàn)。該POP3郵件程序的過程如同POP3對話一樣。POP3服務(wù)器的應(yīng)答要比SMTP簡單許多,其操作的應(yīng)答狀態(tài)碼只有兩個“+OK”表示成功,“+ERR”表示失敗。具體細(xì)節(jié)不再贅述。

3 軟件模塊功能測試

      為了評估電子郵件系統(tǒng)的兩個客戶端程序的實際可用性,必須對其系統(tǒng)的各個模塊進(jìn)行測試。本測試所采用的是微軟開發(fā)的POCKET PC2002 for Windows SDK程序包。

3.1 郵件發(fā)送客戶端的測試

      為了測試郵件發(fā)送系統(tǒng)的功效,可在已配置網(wǎng)絡(luò)的模擬器上載入郵件發(fā)送程序,使其工作在虛擬機(jī)的操作系統(tǒng)中。

      配置好SMTP服務(wù)器資料與ESMTP所需的認(rèn)證信息后,發(fā)送一封簡單的RFC822電子郵件到對方信箱中,成功發(fā)送。同樣的方式,測試發(fā)送MIME郵件,得到如下測試結(jié)果:

ic72 嵌入系統(tǒng)
圖4 發(fā)送端測試結(jié)果

3.2 郵件接收客戶端的測試

      同郵件發(fā)送客戶端一樣,采用同樣的網(wǎng)絡(luò)設(shè)置,載入程序,登入網(wǎng)絡(luò)。先選擇POP3的郵件服務(wù)器地址,設(shè)定用戶信息與密碼,確認(rèn)后獲得基礎(chǔ)的認(rèn)證,并傳回郵箱中信件的數(shù)量與大小統(tǒng)計。經(jīng)測試收到了預(yù)期的效果。

      以上兩個程序的測試都是在網(wǎng)絡(luò)環(huán)境下進(jìn)行的,如果網(wǎng)絡(luò)連接不正常或其他原因?qū)е锣]件的收發(fā)不成功,在程序設(shè)計的出錯處理中已經(jīng)有所考慮。

4 結(jié)語

      與網(wǎng)絡(luò)結(jié)合已成為所有信息產(chǎn)品的發(fā)展趨勢,隨著PDA等嵌入式系統(tǒng)的日益普及以及無線互聯(lián)技術(shù)(802.11B)的發(fā)展,利用PDA實現(xiàn)掌上電腦與臺式機(jī)間相互傳遞電子郵件,已經(jīng)成為一種結(jié)合時尚和便利于一身的通信手段。作者設(shè)計實現(xiàn)的基于Windows CE的嵌入式電子郵件系統(tǒng),為實現(xiàn)移動設(shè)備之間郵件傳輸作了良好的嘗試。

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

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉