朱永軍
(遼河石油勘探局通信公司,遼寧 盤錦 124010)
Visual Basic是基于Windows平臺的可視化程序設計語言,具有簡單易學、功能強大、軟件費用支出低、見效快等特點。它提供了快捷的編程方法,使得專業(yè)人員得心應手開發(fā)應用程序;VB6.0可以開發(fā)出美觀大方的界面,其代碼效率已達到Visual C++的水平。在面向?qū)ο蟪绦蛟O計方面,VB6.支持封裝、繼承和多態(tài)的面向?qū)ο筇卣鳌isual Basic6.0包含學習版、專業(yè)版和企業(yè)版,用戶可以根據(jù)實際情況靈活選擇;Visual Basic 6.0可以開發(fā)出高性能的企業(yè)應用程序和Web的應用程序。
串口是計算機上常用的接口,串口協(xié)議是計算機上一種非常通用設備通信的協(xié)議,它可以很好的支持儀器儀表設備間的數(shù)據(jù)通信,用于采集遠程設備發(fā)出的數(shù)據(jù)。串口通信使用方法比較簡單,按位發(fā)送和接收字節(jié);因為串口通信是異步傳輸,可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù),可以實現(xiàn)遠距離通信。一般來說,串口可以支持長度可達1200米的ASCII碼字符的傳輸;在串口通信時,需要設置四個重要的參數(shù):波特率、數(shù)據(jù)位、停止位和奇偶校驗。
MSChart控件,是一個圖形統(tǒng)計和報表圖形顯示控件,它提供了許多很好的圖形處理方法,支持Web和WinForm兩種應用程序方式,包含英文版,中文版。在編寫程序時,MSChart控件提供了很好的數(shù)據(jù)功能,它可以跟一個數(shù)據(jù)網(wǎng)格(DataGrid對象)關聯(lián),該數(shù)據(jù)網(wǎng)格顯示了采集到的數(shù)據(jù),數(shù)據(jù)網(wǎng)格還可以繪制出高質(zhì)量的曲線,并且都可以動態(tài)的改變,類似于Windows操作系統(tǒng)的進程管理器。
在油田數(shù)據(jù)通信系統(tǒng)中,采用RS-232串口進行數(shù)據(jù)通信和傳輸,用來實現(xiàn)計算機和其它設備進行數(shù)據(jù)通信功能。在數(shù)據(jù)采集時,計算機使用了VB中的通信控件來完成數(shù)據(jù)的發(fā)送和接收,使用VB解析指令來完成數(shù)據(jù)的轉(zhuǎn)換。下面是計算機與其它設備采集數(shù)據(jù)的設計原理圖,如圖所示:
數(shù)據(jù)采集功能的完成離不開通信協(xié)議的制定,本文采用了如下通信協(xié)議:
主機命令格式為:前導+命令字+測量的第幾次數(shù)+效驗和;效驗和=前導+命令字+測量的第幾次數(shù);命令字:0X01-次數(shù)查巡,0X02-讀數(shù)據(jù);測量的第幾次數(shù):0X00-數(shù)據(jù)全部讀入,0X0N-第N次的測量數(shù)據(jù)讀入。
從機響應:命令字:0X01;前導+0X81+次數(shù)+效驗和;效驗和=前導+0X81+次數(shù);次數(shù):0x00沒有測;0x0n測量了n次;命令字:0X02;前導+0X82+次數(shù)+數(shù)據(jù)+效驗和;效驗和=前導+0X82+次數(shù)+數(shù)據(jù)
從機對錯誤命令的處理:效驗和錯誤返回;前導+0X8A+次數(shù)+效驗和或無效的命令;前導+0X8B+次數(shù)+效驗和;無效的測量的數(shù)據(jù)讀??;前導+0X8C+次數(shù)+效驗和。
主機對錯誤命令的處理:再重新發(fā)送前一次發(fā)送的命令的前導字符為0XOA。
數(shù)據(jù)采集程序,是通過調(diào)用VB中的Mscomm控件來實現(xiàn)的;由于該通信控件的強大功能,編程簡單,使得Windows環(huán)境下開發(fā)串口通信系統(tǒng)變得方便易行;該控件提供了兩種處理通信的方式:事件驅(qū)動方式和查詢方式。本文采用了事件驅(qū)動方式,當串口發(fā)生事件或錯誤時,MSComm控件會產(chǎn)生OnComm事件,用戶程序可以捕獲該事件進行相應處理。
在程序設計過程中,需要重點設置MSComm控件的四個參數(shù),分別是:串口號、串口狀態(tài)、參數(shù)設置、發(fā)送數(shù)據(jù)。串口號用于設置并返回通信端口號;串口狀態(tài)用于設置并返回通信端口的狀態(tài),也可以打開和關閉端口;參數(shù)設置主要設置波特率、奇偶校驗、數(shù)據(jù)位、停止位,完成字符串形式的數(shù)據(jù)傳輸;發(fā)送數(shù)據(jù)是向發(fā)送緩沖區(qū)寫入數(shù)據(jù),部分代碼分析如下:Mscomm1.commport=2 含義:選取的是com2端口
Mscomm1.settings=“9600,N,8,1” 其代碼含義如下:
9600表示波特率為9600,N表示:無奇偶校驗;8表示:數(shù)據(jù)位為8,1表示:停止位為1
在VB中,Mschart組件是一個外部Activex控件,專門用于實現(xiàn)圖標功能,可以方便創(chuàng)建包括條形、餅形、線形等不同類型的三維圖表。在使用該控件時,需要完成標題、坐標、數(shù)據(jù)點的設定,其中,數(shù)據(jù)點中的數(shù)據(jù)是源于采集到的數(shù)據(jù),也就是不斷變化的點。
本系統(tǒng)程序設計時,自動調(diào)用了Mschart組件繪圖組件,描述了實時測量的數(shù)據(jù)的趨勢曲線圖,并隨著時間變動實時更新,以便分析。
編寫繪圖函數(shù),可以方便調(diào)用,很容易繪制出點、直線、矩形、圓和橢圓等圖形,使得繪圖變得十分輕松。在繪圖時,以Picturebox作為畫板,在其中顯示實時數(shù)據(jù)曲線。對于畫線功能,可以使用VB中畫線(line)函數(shù)來實現(xiàn),它的語法為:
object.Line[Step1](x1,y1)[Step2](x2,y2),[color]
其中,可選項Step1設置起點坐標相對于當前圖形位置圖標的偏移量;(x1,y1)指定直線的起點坐標或矩形的左上角坐標;可選項Step2設置終點坐標相對于當前圖形位置圖標的偏移量;(x2,y2)指定直線的終點坐標或矩形的右下角坐標;color是指繪畫所用的RGB顏色,可以被忽略。
本文是在windows環(huán)境下利用VB6.0串行通信技術完成了油田數(shù)據(jù)通信系統(tǒng)中的數(shù)據(jù)采集功能,并對其實現(xiàn)過程作了詳細的設計與實現(xiàn)。
[1]仵浩.Visual Basic串口通信工程開發(fā)實例導航:人民郵電出版社,2003.1.
[2]黃麗,仝秋紅,蹇小平.電噴發(fā)動機故障診斷專家系統(tǒng)知識庫與推理機的構建 [J].電子科技,2007.