999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

串口通信的一種通用模式

2010-10-30 09:13:48羅如為陳威孝
湖南人文科技學院學報 2010年2期
關鍵詞:信息

羅如為,陳威孝

(貴州大學計算機科學與信息學院,貴州貴陽 550025)

串口通信的一種通用模式

羅如為,陳威孝

(貴州大學計算機科學與信息學院,貴州貴陽 550025)

為了通過通信線路實現異地遠程數據的實時傳輸,提出一種基于串口通信的通用模式:首先應用 zlibEx對數據進行最大化壓縮,減少線路傳輸數據量及傳輸時間;在進行文件流壓縮時,加入 md5算法生成的加密口令,提高數據的安全性;最后根據自定義通信協議將壓縮后的文件通過串口進行遠程傳輸。

串口通信;通用模式;zlibEx壓縮;實時傳輸

zlib壓縮算法廣泛應用于各種數據的壓縮。例如壓縮數據庫或數據庫字段值[1],網絡中壓縮網頁數據或實驗數據[2],壓縮圖書館數字文獻[3],壓縮監測數據[4]等,使用最廣泛的是網絡視頻或遠程屏幕拷貝圖像的壓縮傳輸[5]。還有不少軟件的遠程更新也使用了 zlib壓縮。

zlib是用于數據壓縮的函數庫,zlib壓縮算法是一種基于字典的無損壓縮算法,當緩沖區中有與滑動窗口 (字符字典)的字符串相匹配的最長的字符串,將該字符串按照LZ77編碼,當兩個緩沖區中沒有相匹配的字符時,便根據字符出現的概率采用自適應的 Huffman編碼法進行編碼,以編碼代替字符串以達到壓縮目的,并且在編碼的過程中將已編好的壓縮碼實時地寫入壓縮文件中。zlib壓縮算法有機地結合了 Huffman樹編碼法和 LZ77編碼法的優點,去掉了壓縮文件時包含的一些冗余信息,提高了對緩沖區數據的壓縮速度,壓縮效果更好。

zlib經過不斷地修改和添加新的函數,已經改名并更新到現在的 ZlibEx 1.2.3和 ZlibExGZ 1.2.3。

md5是對一段信息產生信息摘要,以防止被篡改。通過 md5不可逆的字符串變換算法,把一個任意長度的字符串變換成一個定長的整數,所以采用 md5加密解壓縮所需要的口令,就算得到了壓縮文件也不能獲得原始口令,不能解壓縮文件[6]。

MSComm控件是微軟的 Visual Basic中提供的一個串口通信OCX控件。MSComm提供了各種與串口通信密切相關的屬性及事件,編程者只需改變MSComm控件的屬性設置和編寫相應的初始化程序。在 Delphi環境下進行串行通信編程,利用MSComm控件可以靈活地調用功能函數,使程序設計簡單、直觀,既保證了數據傳輸的實時性,又方便快捷[7]。

本文在 Delphi環境下首先采用最新的 zlibEx壓縮庫進行多文件或文件夾的最大化壓縮;利用MSComm控件和自定義通信協議將壓縮文件通過串口Modem實現遠程傳輸。這種傳輸模式 (數據采集——壓縮——串口發送——串口接收——解壓縮)可以推廣到其它需要通過串口傳輸的應用場合,從而作為一種通用模式得以廣泛應用。

1 功能模塊結構

圖1 文件壓縮和遠程傳輸流程圖

圖1為文件壓縮和遠程傳輸流程圖[8-9]。在 Delphi下,首先將選中的文件變換為文件流,對文件流進行 zlibEx流壓縮,并在壓縮流中加入加密信息和文件、文件夾信息形成完整的壓縮文件;將壓縮文件按照自定義通信協議分組打包,通過MSComm控件讀寫串口、并用 AT指令控制Modem,將壓縮文件完整快速地發送到遠程接收方。接收方對收到的數據幀組合成完整的文件,轉換為文件流,并提取加密信息和文件、文件夾信息,并根據加密口令判斷是否正確解壓。如果有口令,并且口令正確則將文件流進行zlibEx流解壓縮,得到壓縮前的文件、文件夾。

2 多文件壓縮和解壓縮

要在Delphi下完成多文件的壓縮,首先將選擇的文件、文件夾生成一個列表。針對列表中的文件、文件夾分別由以下四種方式處理:如果是非 0字節文件,則記錄文件名和文件大小,并將文件進行 zlibEx流壓縮;如果是 0字節文件,則只記錄文件名和文件大小,不做壓縮處理;如果是空文件夾,則只記錄文件夾名,不做進一步處理;如果是非空文件夾,則用遞歸方法搜索下一級目錄,對于搜索結果仍按上述四種方式處理,直至完全遍歷所有子目錄。

根據以上四種情況的處理,得到所有文件、文件夾信息和所有文件的壓縮流。

為了保證正常解壓縮,需要約定壓縮文件的結構。圖2定義的是加密壓縮的文件流結構圖[8]。加密信息部分包括壓縮庫標識、是否加密標識、md5加密后的口令;文件夾信息只記錄空文件夾的名稱;文件信息包括文件名和文件流大小;最后一部分是所有文件的壓縮流。

圖2 加密壓縮的文件流結構圖

在解壓縮的時候,從文件流中讀入壓縮庫標識,如果不是本程序產生的文件不可解壓;如果壓縮庫標識正確,則判斷讀入的加密標識,如果已經加密,并且提供的密碼不正確,則不允許解壓縮。如果沒有加密或者已經加密而且解壓縮密碼也正確,則根據文件夾、文件信息判斷,如果是空目錄或空文件,則直接創建文件夾、0字節文件,否則根據文件大小解壓縮文件流,創建出壓縮前的文件。

zlibEx壓縮代碼如下:

instream:=TFileStream.Create(mFileName,fmOpen-Read or fmShareExclusive);

ZCompressStream(instream,mStream,zcMax);

instream是由 mFileName指定的文件創建的文件流,函數 ZCompressStream是進行 zlibEx流壓縮,壓縮后的流保存在內存流 mStream中,為了充分減少傳輸時間,所以壓縮級別選擇最大 zcMax。

zlibEx解壓縮代碼如下:

outStream:=TFileStream.Create(mFileName,fmCreate);

ZDeCompressStream(mstream,outStream);

outStream是要創建mFileName指定名字的新文件的文件流,通過函數 ZDeCompressStream將 mstream中的壓縮流釋放到 outStream中。

通過以上的方法,實現多文件 (夾)的加密壓縮和解壓縮。當然也可以壓縮單一的文件。

3 遠程傳輸

3.1 MSComm和Modem的設置

利用MSComm控件讀寫串口、向Modem發送 AT指令來實現遠程傳輸,則必須首先熟知MSComm控件的屬性和事件。

在MSComm的 PortOpen設置為 True,也就是打開串行端口之前,先初始化MSComm,將一些參數設置完成,如:

1)CommPort:設置串行端口號,可以設置為 1到 16之間的任何值,缺省值為 1。但是如果用 PortOpen打開一個并不存在的端口時,MSComm控件會產生錯誤 68(設備無效)。

2)Setting:設置串口通信參數——波特率、奇偶校驗、數據位、停止位參數。

3)Inpu tMode:設置 0,從接收緩沖區讀取文本形式的數據。

4)RThreshold:設置 1,當接收緩沖區內字節個數達到或超過 1就會產生OnComm事件。

5)SThreshold:設置 0,MSComm控件在發送數據時不會產生OnComm事件。

6)InBufferSize:設置接收緩沖區的大小,缺省值為1024字節。

7)InBufferCount:返回接收緩沖區內等待讀取的字節數,可設置為 0清空接收緩沖區。

8)Ou tBufferSize:設置發送緩沖區的大小,缺省值為512字節。

9)Ou tBufferCount:返回發送緩沖區內等待發送的字節數,可設置為 0來清空發送緩沖區。

10)InputLen:設置為 0,Input讀取接收緩沖區中全部的內容。

本文采用MSComm控件的事件驅動通信方式:當串口發送或接收到數據時,利用MSComm控件 OnComm事件捕獲并處理這些通信事件。如果在通信過程中發生錯誤或異常,也會觸發 OnComm事件,通過 CommEvent屬性反映錯誤類型,在通信程序的設計中可根據該屬性值來執行不同的操作。

發送文件之前,必須建立通信連接。所以利用MSComm控件向串口Modem發出控制命令,例如:

1)撥號:’ATDT’+電話號碼 +#13

2)掛機:’+++’+#13+’ATH0’+#13

3)自動應答:’ATS0=1’+#13

當撥號后成功建立連接,則開始發送文件。為了順利地發送文件,需定義好通信協議并將待發送數據按協議組包。

3.2 通信

如圖 3、圖 4定義通信數據幀 (信息幀)的一般格式。

信息幀格式的說明:

命令字:區分不同的操作,如:準備發送文件、發送數據、發送數據完畢、準備接收文件、已接收數據、已保存文件。

驗證碼:檢驗信息幀是否屬于同一個文件的發送。

校驗碼:判斷信息幀是否完整。

圖5 串口發送文件信息流程圖

接收方接收到發送方的信息幀后,首先核對幀的大小是否符合協議約定的幀大小,如果不一致,則拋棄該信息幀。如果幀大小正確,則校驗該信息幀是否正確,如果信息幀校驗失敗,則接收方拋棄該信息幀。發送方等待接收方的反饋信息,如果在指定的時間未接收到反饋信息,發送方重發信息幀。如果信息幀校驗正確,則接收方將正確接收信息幀的消息發給發送方作為反饋信息,并對信息幀進行相應的處理。發送方接收到反饋信息,進行校驗,如果校驗成功則表示信息幀發送成功,繼續發送下一個信息幀,否則需要重發信息幀。

圖5為串口發送文件流程圖。通過初始化MSComm,分別對串口和Modem進行初始化,如果發現串口或者Modem出錯,向用戶提示出錯信息。如果初始化成功,則進行撥號嘗試建立通信鏈路,如果連接不成功,則自動重撥,如果超出重撥次數則向用戶提示出錯。當建立連接后,將待發送的壓縮文件讀入文件流,計算出流的總長度,并按照通信協議劃分文件流組成系列信息幀,向接收方發送,如果發送成功,則繼續發送下一個幀;如果超時,則重發。直到整個壓縮文件發送完畢。

最后結論是:將增加了加密口令的壓縮文件用在串口傳輸上,在一定程度上增加了傳輸的安全性。而文件的最大化壓縮減少了傳輸的數據字節數,減少了傳輸的時間消耗,實現傳輸實時性。另一方面實現靈活選擇用于壓縮傳輸的文件,可以是單文件,也可以是多文件、多文件夾的混合。這種壓縮后進行傳輸的模式,可廣泛應用于遠程監測設備的數據采集、連鎖門店的數據匯總等方面。所以可以作為串口通信的一種通用模式進行推廣。

[1]魏崢,萬珊.用 Delphi實現對庫文件的壓縮解壓[J].濟南大學學報 :自然科學版,2002,16(3):313-314.

[2]左繼紅,霍劍青,吳葛銘,等.虛擬物理實驗的遠程教學交互和管理系統 [J].中國科學技術大學學報,2000,30(3):307-311.

[3]汪勇,楊濤,高偉,等.汽輪機組振動波形數據高效實時無損壓縮算法[J].華中科技大學:自然科學版,2008,36(9):86-89.

[4]彭偉.局域網圖像廣播及相關遠程控制的設計與實現[D].武漢:華中師范大學計算機科學系,2006.

[5]孫萍.基于 ZLib的數字文獻壓縮技術的設計與實現[J].農業圖書情報學刊,2007,19(11):5-8.

[6]蘭順碧,彭晶晶.醫學多媒體在線考試系統的設計與實現[J].網絡安全技術與應用,2006(4):60-62.

[7]黃軍,熊勇,劉燕,等.Delphi串口通信編程 [M].北京:人民郵電出版社,2002.

[8]wnhoo.用DELPHI實現文件加密壓縮[EB/OL].http://dev.csdn. net/author/Jason009/0e90c8556a414b2790df1e2de9a723e5.html,2007-07-13.

[9]王保印,康健,姜傳國.用 VC++6.0中 MSComm控件實現多類型文件傳送[J].吉林大學學報:信息科學版,2004,22(2):164-168.

(責任編校:光明)

A CurrentMode of Serial Communication

LUO Ru-wei,CHEN W ei-xiao

(College of Computer Science and Information,Guizhou University,Guiyang,550025,China)

To implement real-time transmit long-distance data by communication line,a currentmode of serial communication is presented.Firstly,the data are maximally compressed with the latest zlibEx,and in the process of compression,the encrypted pass word usingmd5 is added,so the security of data can be enhanced.Finally,a series of communication protocols are designed to realize the remote trans missing via serial port.

serial communication;currentmode;compressingwith zlibEx;real-time trans missing

TP311

A

1673-0712(2010)02-0014-03

2010-02-08.

羅如為 (1974-),男,湖南邵東人,貴州大學計算機科學與信息學院在讀博士,研究方向:數字圖像處理、虛擬現實;陳孝威(1945-),男,貴州貴陽人,貴州大學計算機科學與信息學院教授,博士生導師,CCF會員 (E20-0005528S),研究方向:虛擬現實、數字圖像處理及網絡通信技術。

猜你喜歡
信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息超市
大眾創業(2009年10期)2009-10-08 04:52:00
展會信息
展會信息
展會信息
展會信息
展會信息
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 国产传媒一区二区三区四区五区| 91欧美在线| 一级毛片a女人刺激视频免费| 综合网久久| 国产精品成人免费视频99| 国产在线观看第二页| 极品尤物av美乳在线观看| 99久久亚洲综合精品TS| 日韩午夜福利在线观看| 青青久久91| 国产你懂得| 99视频只有精品| 亚洲国产成人麻豆精品| 國產尤物AV尤物在線觀看| 99热这里只有免费国产精品| 天堂成人在线| 狠狠色成人综合首页| 国产99视频在线| 久久人妻系列无码一区| 久热re国产手机在线观看| 在线精品欧美日韩| 亚洲国产在一区二区三区| 黄色网站不卡无码| 91精品人妻互换| 日韩欧美国产三级| 在线视频一区二区三区不卡| 亚洲欧美另类久久久精品播放的| 国产区在线看| 国产小视频免费观看| 在线中文字幕网| 欧美性爱精品一区二区三区| 92午夜福利影院一区二区三区| 久久亚洲综合伊人| 欧美第二区| 国产aⅴ无码专区亚洲av综合网 | 91精品在线视频观看| 男人天堂亚洲天堂| 青青青伊人色综合久久| 国产91无码福利在线| a毛片免费看| 天天色天天综合| 欧美日韩国产高清一区二区三区| 97在线观看视频免费| 首页亚洲国产丝袜长腿综合| www.av男人.com| 色综合婷婷| 国产女人喷水视频| 欧美国产日产一区二区| 亚洲天堂日韩在线| 久久国产高潮流白浆免费观看| 不卡无码网| 久久 午夜福利 张柏芝| 国产精品美女自慰喷水| 91欧美亚洲国产五月天| 精品一区二区久久久久网站| 亚洲成人黄色网址| 996免费视频国产在线播放| 国产凹凸视频在线观看| 久久国产乱子伦视频无卡顿| 91在线精品免费免费播放| 精品欧美视频| 国产精品亚洲一区二区三区在线观看| 激情综合网址| 东京热高清无码精品| 99热这里只有精品国产99| 少妇精品久久久一区二区三区| 国产小视频a在线观看| 漂亮人妻被中出中文字幕久久| 亚洲精品国偷自产在线91正片| 婷婷色婷婷| 久久亚洲欧美综合| 天天做天天爱夜夜爽毛片毛片| 91小视频在线| 99在线视频网站| 精品无码人妻一区二区| 91啦中文字幕| 超级碰免费视频91| 2021无码专区人妻系列日韩| 国产伦精品一区二区三区视频优播 | 国产综合欧美| 亚洲成人播放| 国产视频资源在线观看|