摘要:本程序利用.NET平臺、框架、多線程和數(shù)據(jù)緩沖技術(shù),實現(xiàn)對計算機(jī)RS-232串口的管理和操作,提供了對多RS-232串口和大數(shù)據(jù)流量的高效處理。該程序不僅具有常規(guī)串口調(diào)試程序的功能,還具有在系統(tǒng)底層和界面顯示等獨特的技術(shù)。對使用RS-232串口的工程人員提供了方便高效的工具。
關(guān)鍵詞:RS-232;.NET;多線程;數(shù)據(jù)緩沖;算法
中圖分類號:TP334.7 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599 (2012) 17-0000-02
RS-232串口是計算機(jī)上一種非常通用的設(shè)備通信協(xié)議,大多數(shù)計算機(jī)包含兩個基于RS-232的串口,或通過PCI卡或USB擴(kuò)展串口數(shù)量。串口同時也是儀器儀表設(shè)備通用的通信協(xié)議。很多GPIB兼容的設(shè)備也帶有RS-232串口。同時,串口通信協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備的數(shù)據(jù)。在設(shè)備使用中經(jīng)常需要使用RS-232串口進(jìn)行數(shù)據(jù)通訊。
.NET計劃是微軟繼推出DOS、Windows之后的又一個革命性的開發(fā)平臺。在整個.NET框架中提出了大量的新概念和新技術(shù)。具有:一致的編程模式、簡化了的編程模式、運行于多個平臺、支持多語言的綜合、自動資源管理、一致的出錯處理方式、安全性、XML和SOAP的引入、全新的編程語言C#。
所以采用.NET平臺設(shè)計和實現(xiàn)RS-232串口調(diào)試程序,不僅提高了開發(fā)效率,更增加了系統(tǒng)的安全性,并運用框架、多線程、數(shù)據(jù)緩沖和界面等技術(shù)提升程序效率。
1程序框架組成原理
該程序通過由Windows系統(tǒng)之上的.Net運行時提供運行環(huán)境,并通過框架的設(shè)計思想,對程序進(jìn)行了功能組件的設(shè)計。程序的框架組成原理如圖1。
串口調(diào)試程序主要由四部分組件組成:串口容器、串口創(chuàng)建管理界面、數(shù)據(jù)發(fā)送接收界面和數(shù)據(jù)存儲組件。串口容器提供了對多個串口同時管理的功能,并通過多線程的運用,能夠從容應(yīng)對串口在高速數(shù)據(jù)收發(fā)時的情況。串口創(chuàng)建管理界面提供方便快捷的操作,可對串口執(zhí)行新建、更改和刪除的操作。數(shù)據(jù)發(fā)送接收界面提供了顯示串口接收的數(shù)據(jù)和發(fā)送數(shù)據(jù)的界面。數(shù)據(jù)存儲通過數(shù)據(jù)緩沖保存串口接收到的數(shù)據(jù)內(nèi)容。
2 程序功能設(shè)計
2.1 串口容器設(shè)計
串口容器組件主要提供了一個統(tǒng)一管理已經(jīng)創(chuàng)建的串口的空間,并提供了多線程緩沖處理機(jī)制,能夠應(yīng)對多個串口的高速數(shù)據(jù)收發(fā)工作。包括的主要功能有:
(1)提供了創(chuàng)建、更改和釋放RS-232串口的接口函數(shù);(2)對多個串口的數(shù)據(jù)接收并賦值相同的回調(diào)函數(shù);(3)接收數(shù)據(jù)的多線程緩沖功能,并提供線程數(shù)量設(shè)置接口;(4)數(shù)據(jù)流量偵測功能。
2.2 串口創(chuàng)建管理界面設(shè)計
串口創(chuàng)建管理界面組件運行.NET GUI技術(shù),通過快捷的操作和圖標(biāo)列表方式,提供用戶直觀和簡易的操作方式,主要包括的功能如下:
(1)計算機(jī)可用串口自動偵測;(2)新建串口功能(串口名、波特率、數(shù)據(jù)位、停止位、奇偶校驗);(3)單獨控制串口停止運行;(4)單獨修改串口配置;(5)刪除串口。
3 數(shù)據(jù)發(fā)送接收界面設(shè)計
數(shù)據(jù)發(fā)送接收界面分為兩部分內(nèi)容:數(shù)據(jù)接收顯示界面和發(fā)送界面。系統(tǒng)采用大比例的接收顯示區(qū)和錨定在主窗體底部的發(fā)送區(qū),這種設(shè)計方式不僅有效的增加了顯示區(qū)的可視區(qū)域,也符合用戶常規(guī)軟件的操作習(xí)慣。包括的主要功能有:
(1)綜合和分頁顯示切換功能;(2)顯示接收時間;(3)顯示接收數(shù)據(jù)的通訊標(biāo)識;(4)十六進(jìn)制顯示接收數(shù)據(jù);(5)可單獨或同時向多個串口發(fā)送數(shù)據(jù);(6)發(fā)送數(shù)據(jù)結(jié)尾回車換行控制;(7)十六進(jìn)制發(fā)送數(shù)據(jù);(8)發(fā)送數(shù)據(jù)自動記錄;(9)自動發(fā)送功能。
4 數(shù)據(jù)存儲設(shè)計
數(shù)據(jù)存儲組件主要使用數(shù)據(jù)緩沖機(jī)制和windows文本文件結(jié)構(gòu),通過數(shù)據(jù)緩沖可以高效的接收大數(shù)據(jù)量的存儲,文本方式有利于用戶通過操作系統(tǒng)自帶的工具進(jìn)行數(shù)據(jù)的查看。主要功能有:
(1)數(shù)據(jù)保存緩沖功能;(2)自動建立存儲目錄結(jié)構(gòu);(3)自動保存接收數(shù)據(jù);(4)數(shù)據(jù)另存功能。
5 程序?qū)崿F(xiàn)
5.1 主要算法設(shè)計
5.1.1串口容器多線程緩沖算法
串口容器多線程緩沖在整個串口調(diào)試程序中起到核心的作用,該處設(shè)計的是否高效性直接決定了整個程序的效率。在此處沒有采用.NET自帶的線程池,而是特別設(shè)計了適合本程序的線程池功能(DataThreadPool),在這個線程池基礎(chǔ)上并進(jìn)行了拓展,即增加了數(shù)據(jù)流量偵測功能。串口容器多線程類庫結(jié)構(gòu)如圖2所示。
5.1.2 串口創(chuàng)建管理算法
串口創(chuàng)建管理算法建立新的可視化RS-232操作組件(CommItem)和組件容器(CommListPanel),并在容器中對新建RS-232操作組件進(jìn)行管理。通過在每一個RS-232操作組件上建立多個回調(diào)事件,該回調(diào)事件直接聯(lián)系到后臺的串口管理容器,并調(diào)用串口容器的相應(yīng)接口,完成整個事件的同步操作??梢暬M件和容器類如圖3所示。
5.1.3 綜合和分頁顯示算法
綜合和分頁功能用于用戶方便快速的在綜合顯示和分頁顯示中進(jìn)行切換。綜合顯示在一個區(qū)域內(nèi)同時顯示所有RS-232串口接收到的數(shù)據(jù),方便用戶進(jìn)行數(shù)據(jù)對比操作;分頁顯示在單獨的窗體中分別顯示每一個串口的數(shù)據(jù)。通過在數(shù)據(jù)接收緩沖時建立分支算法,當(dāng)切換開關(guān)時,就把數(shù)據(jù)流導(dǎo)向所設(shè)置的顯示區(qū)域內(nèi)(綜合區(qū)和分頁區(qū))。兩個顯示區(qū)都通過算法實現(xiàn)數(shù)據(jù)自動向前滾動,保證最新一條接收到的數(shù)據(jù)總是顯示在界面可視區(qū)域的底部。
5.1.4 數(shù)據(jù)存儲緩沖算法
由于本程序支持大批量RS-232串口的數(shù)據(jù)接收,所以當(dāng)有多個串口和大量數(shù)據(jù)被接收時,必須保證所接收到的數(shù)據(jù)能夠被有效的進(jìn)行存儲。在這里設(shè)計了數(shù)據(jù)緩沖池,在數(shù)據(jù)緩沖池內(nèi)保存了還沒有被處理的數(shù)據(jù),并通過多個線程對數(shù)據(jù)緩沖池進(jìn)行輪詢操作,直至最后一條數(shù)據(jù)被存儲。該算法如圖4所示。
5.2 界面設(shè)計
整個界面的風(fēng)格采用藍(lán)色系,在windows界面組件上采用一致的顯示風(fēng)格,符合windows用戶的操作習(xí)慣。常規(guī)和重復(fù)的操作都采用按鈕的方式,方便用戶直接操作。程序主界面如圖5所示。
6 結(jié)論
RS-232串口是軟硬件開發(fā)人員經(jīng)常使用的計算機(jī)接口,該串口調(diào)試程序的設(shè)計與實現(xiàn),在性能和使用方便性上都比已有的串口調(diào)試程序有較大提高。不僅在處理多串口和大數(shù)據(jù)流量時具有良好的性能,而且多種技術(shù)的應(yīng)用和界面組件也提供給用戶良好的使用體驗。
參考文獻(xiàn):
[1](法)斯梅切爾(Smacchia,P.).C#和.NET 2.0 實戰(zhàn):平臺、語言與框架.北京:人民郵電出版社,2008.
[2](美)洛威(Lowy,J.)..NET組件程序設(shè)計(第2版).北京:電子工業(yè)出版社,2007.
[3]邱錦倫.Visual C#.NET程序設(shè)計教程[M].北京:清華大學(xué)出版社,2006.