siemens x
I/O 設(shè)備

用Visual Basic實(shí)現(xiàn)仿真終端的一種方法

2025China.cn   2006年09月25日
  摘 要 本文對(duì)Windows環(huán)境中的基于串口通信的軟件“超級(jí)終端”進(jìn)行了一定的研究,針對(duì)其固有的一些缺陷,提出了一種解決方案,并且根據(jù)一個(gè)具體的工控機(jī)實(shí)例,論述了這種方案的可行性。
  關(guān)鍵詞 串行通信;仿真終端; Visual Basic; ActiveX控件; 遠(yuǎn)程監(jiān)控
  Abstract This article is focused on the super-terminal based on serial ports under Windows98. Because of its instinct disadvantages, the author put forward an appropriate method in order to solve them. A practical example is also offered.
  Keywords serial communication; emulational terminal; Visual Basic; remote monitor; ActiveX
  
  引言
  “超級(jí)終端”是Windows中的一個(gè)程序,通過(guò)計(jì)算機(jī)串行口,使用調(diào)制解調(diào)器同時(shí)調(diào)用此程序能夠連接其他計(jì)算機(jī)(包括各種工控機(jī))、Internet遠(yuǎn)程登錄站點(diǎn)、BBS(電子公告板系統(tǒng))、聯(lián)機(jī)服務(wù)或主機(jī)。也可以使用超級(jí)終端通過(guò)串口將大型文件從計(jì)算機(jī)傳輸?shù)奖銛y式計(jì)算機(jī),而無(wú)須通過(guò)在網(wǎng)絡(luò)上設(shè)置便攜式計(jì)算機(jī)進(jìn)行此項(xiàng)工作。
   超級(jí)終端無(wú)疑給用戶提供了很大的幫助,尤其是在需要遠(yuǎn)程管理或是遠(yuǎn)程登陸的情形下,超級(jí)終端幾乎是不可或缺的工具。但是超級(jí)終端自身也具有一些缺陷。因?yàn)樗o用戶僅提供字符界面,各種操作必須以命令行的方式進(jìn)行,而且交互界面不甚友好,用戶在使用中會(huì)感到很不方便。另外,超級(jí)終端僅具有最基本的輸入和輸出功能,無(wú)法進(jìn)行一些復(fù)雜的操作,例如定時(shí)執(zhí)行、自動(dòng)執(zhí)行、選擇執(zhí)行等,而且它沒(méi)有數(shù)據(jù)管理和處理功能,在很多情形下無(wú)法滿足用戶的需要。因此,根據(jù)實(shí)際情況,有必要開(kāi)發(fā)更加實(shí)用、功能更加強(qiáng)大的仿真終端。本文作者希望根據(jù)一段實(shí)際工作經(jīng)歷,深入地討論這一問(wèn)題。
  
  1. 總體設(shè)計(jì)思想
   基站監(jiān)控機(jī)是一種小型工控機(jī),它被廣泛地使用在無(wú)線尋呼臺(tái)的發(fā)射基站的監(jiān)控工作中,通過(guò)發(fā)送命令,實(shí)時(shí)采集數(shù)據(jù)和狀態(tài)參數(shù),用以掌握尋呼基站的工作狀況,如果發(fā)現(xiàn)異常,可以立即做出處理,保證尋呼基站的正常工作。因?yàn)閷ず襞_(tái)的發(fā)射基站分布往往比較分散,所以不適合集中監(jiān)控,一般采用分布式的遠(yuǎn)程監(jiān)控。由于上面提到的超級(jí)終端的種種缺陷,所以必須重新開(kāi)發(fā)出一種新的滿足實(shí)際需要的仿真終端。Visual Basic是目前流行的一種程序設(shè)計(jì)工具,它具有良好的用戶界面和強(qiáng)大的對(duì)串口通信的開(kāi)發(fā)能力,因此選擇它作為仿真終端的開(kāi)發(fā)工具。
  1.1 可視化圖形界面
  為了方便用戶操作,本系統(tǒng)采用全菜單式設(shè)計(jì),取消了傳統(tǒng)的字符終端和命令行輸入的方式。所有命令均集成于圖形界面之中,用戶僅需操作鼠標(biāo)即可完成絕大部分工作(除個(gè)別操作須手工完成,例如身份注冊(cè)等)。
   基站監(jiān)控機(jī)擁有一整套自己完整的命令集,其中一部分命令格式較復(fù)雜,需要多個(gè)參數(shù),若手工輸入容易產(chǎn)生錯(cuò)誤,工作強(qiáng)度比較大。采用全菜單操作之后,用戶工作量大大減輕,而且發(fā)生錯(cuò)誤的概率也相對(duì)降低。
  1.2 數(shù)據(jù)庫(kù)管理功能
   傳統(tǒng)的超級(jí)終端僅僅具有最簡(jiǎn)單的輸入輸出功能,返回的信息只能顯示于終端屏幕上,無(wú)法保存。而用戶往往對(duì)結(jié)果要求做進(jìn)一步的處理,包括綜合、統(tǒng)計(jì)、打印等。所以本系統(tǒng)利用Visual Basic自備的本地?cái)?shù)據(jù)庫(kù)Access作為主數(shù)據(jù)庫(kù)。整個(gè)數(shù)據(jù)庫(kù)分為兩大部分:系統(tǒng)信息庫(kù)和狀態(tài)信息庫(kù)。
   系統(tǒng)信息庫(kù)主要包括尋呼基站的基本性能參數(shù)和操作員自身的管理信息。狀態(tài)信息庫(kù)包含讀取基站的各種狀態(tài)信息和歷史信息。
  1.3 自動(dòng)定時(shí)執(zhí)行
   當(dāng)用戶需要管理的基站超過(guò)一定的數(shù)量后,對(duì)每一臺(tái)基站的監(jiān)控工作往往成為一種單調(diào)的常規(guī)性的任務(wù),這時(shí)簡(jiǎn)單的操作已經(jīng)無(wú)法滿足要求了。因此有必要增加自動(dòng)執(zhí)行功能,將每一次都要進(jìn)行的常規(guī)工作集合在一起,依次執(zhí)行。再增加定時(shí)功能,實(shí)現(xiàn)無(wú)人監(jiān)控,在最大程度上提高了系統(tǒng)性能,減輕了管理員的工作量。關(guān)于這個(gè)問(wèn)題將在后面做進(jìn)一步討論。
  2. 系統(tǒng)的結(jié)構(gòu)和功能
  2.1 總體結(jié)構(gòu)
   本系統(tǒng)采用兩級(jí)菜單結(jié)構(gòu):主菜單和二級(jí)菜單。
   主菜單和二級(jí)菜單如圖1所示。按照功能分為系統(tǒng)管理、從機(jī)管理、設(shè)備管理、參數(shù)設(shè)置等欄目,二級(jí)菜單包括具體操作內(nèi)容。一些常用的操作被設(shè)置為工具攔,以方便用戶使用。
  

  

  2.2 功能模塊
   本系統(tǒng)按照功能的不同主要可以分為兩大部分:數(shù)據(jù)庫(kù)管理模塊和監(jiān)控模塊。
  2.2.1 數(shù)據(jù)庫(kù)管理模塊
   此模塊主要用來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行管理。數(shù)據(jù)庫(kù)包括管理員信息,硬件信息,狀態(tài)信息,歷史信息等。操作內(nèi)容包括查詢,增加,刪除,修改等。
  2.2.2 監(jiān)控模塊
   此模塊完成所有的對(duì)基站監(jiān)控機(jī)操作,包括建立連接、讀取狀態(tài)信息、自動(dòng)執(zhí)行、斷開(kāi)連接等。圖2所示其中之一典型操作。
  

  

  3. 關(guān)鍵技術(shù)
  3.1 遠(yuǎn)程通信的實(shí)現(xiàn)
  遠(yuǎn)程監(jiān)控中心可以對(duì)分布的各個(gè)獨(dú)立的工控機(jī)進(jìn)行遙測(cè)、遙控?;颈O(jiān)控器可以現(xiàn)場(chǎng)監(jiān)測(cè)和控制尋呼臺(tái)的各項(xiàng)工作參數(shù);可以接受遠(yuǎn)端監(jiān)控中心的查詢、控制;并可以向中心上報(bào)工作狀態(tài)。為實(shí)現(xiàn)上述功能 ,首要任務(wù)是建立兩者之間的通訊。因此可分別將監(jiān)控中心計(jì)算機(jī)和基站監(jiān)控機(jī)通過(guò)RS-232C接口與Modem相連,再通過(guò)Modem接入公用電話網(wǎng)(PSTN),由PSTN實(shí)現(xiàn)本地Modem與基站modem的聯(lián)接,就可以實(shí)現(xiàn)監(jiān)控中心計(jì)算機(jī)與基站監(jiān)控機(jī)之間的通訊。如圖3所示。
  

  

  
  Microsoft Communications Control(以下簡(jiǎn)稱MSComm)是Microsoft公司提供的簡(jiǎn)化Windows下串行通信編程的ActiveX控件,它為應(yīng)用程序提供了通過(guò)串行接口收發(fā)數(shù)據(jù)的簡(jiǎn)便方法。MSComm 控件提供了一系列標(biāo)準(zhǔn)通訊屬性和方法。使用它可以建立起應(yīng)用程序與串行端口的連接。為實(shí)現(xiàn)遠(yuǎn)程通訊,還需要把調(diào)制解調(diào)器與串行端口通過(guò)RS-232C接口連接,這樣,在應(yīng)用程序中發(fā)出AT命令,就可以達(dá)到控制調(diào)制解調(diào)器的目的,進(jìn)行遠(yuǎn)程通信。MSComm 控件通過(guò)串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行通訊功能。MSComm控件在串口編程時(shí)非常方便,程序員不必去花時(shí)間去了解較為復(fù)雜的API函數(shù)。
   對(duì)MSComm控件的初始化程序如下:
  
  ……
  rt = “1”
  gs = 9600,N,8,2
  en = 0
  If en <> True Then
  en = True
  End If
   ……
  
  3.2 用控件實(shí)現(xiàn)遠(yuǎn)程命令
   傳統(tǒng)的超級(jí)終端用命令行的方式完成包括連接和斷開(kāi)在內(nèi)的一系列操作,在本系統(tǒng)中,基站監(jiān)控機(jī)的所有命令都通過(guò)MSComm控件完成。具體程序如下所示:
  
   ……
   outstring = ”ATDT” & “3227885” & vbCr
   for i = 1 to 7
   for j = 1 to 1000
   DoEvents
   Next
   Exitmsg = Mid(outstring,I,1)
   = exitmsg
   Next
   ……
  3.3 連續(xù)數(shù)據(jù)流的讀取和保存
   從基站監(jiān)控機(jī)讀取的信息通常為連續(xù)的ASCⅡ字符流,其中包含狀態(tài)信息(如電流、電壓、溫度、功率等)和其他的輔助說(shuō)明信息。為了將關(guān)鍵信息鑒別和提取出來(lái),必須對(duì)發(fā)回的數(shù)據(jù)流進(jìn)行處理。當(dāng)狀態(tài)信息被讀取后,將其在屏幕上顯示出來(lái),同時(shí)保存入數(shù)據(jù)庫(kù)。
  3.4 自動(dòng)操作的實(shí)現(xiàn)
   一個(gè)大型的尋呼臺(tái)往往會(huì)有幾十臺(tái)甚至上百臺(tái)基站監(jiān)控機(jī),如果采用手工操作,工作量巨大。另外,監(jiān)控工作通常要求晝夜執(zhí)行,不宜采用手工操作。因此,必然要求自動(dòng)操作。在這里,自動(dòng)操作包括兩層含義:一是在一次常規(guī)操作中,必須輪流監(jiān)控所有的基站監(jiān)控機(jī);二是定時(shí)執(zhí)行所有的常規(guī)操作。
   利用Visual Basic提供的定時(shí)服務(wù)控件Timer,可以實(shí)現(xiàn)以上功能。Timer控件的最大定時(shí)間隔只有1分鐘,要想實(shí)現(xiàn)大于1分鐘的定時(shí),必須在Timer事件中增加一段程序,利用循環(huán)等待來(lái)實(shí)現(xiàn)特定的時(shí)間間隔.例如要求的定時(shí)為1小時(shí),需要在Timer事件中增加如下程序:
  
  public p_loop_1=60
  public p_loop_2=0
  Private Static Sub Timer1_Timer()
  
  ……
  p_loop_2 = p_loop_2 + 1
  
   If p_loop_2 < p_loop_1 Then
   Exit Sub
   End If
  
   p_loop_2 = 0
   ……
  
  end sub
  
  4. 總結(jié)
   此系統(tǒng)在完成開(kāi)發(fā)后,經(jīng)過(guò)用戶一段時(shí)間的實(shí)際使用,反映良好。相對(duì)于傳統(tǒng)的超級(jí)終端,本系統(tǒng)具有無(wú)可比擬的優(yōu)越性,在一定程度上彌補(bǔ)了傳統(tǒng)終端的固有缺陷,實(shí)現(xiàn)了高性能和高可靠性的結(jié)合。
   本文針對(duì)傳統(tǒng)的超級(jí)終端的缺陷,提出了一種有實(shí)用價(jià)值的解決方案。核心思想是充分利用了Visual Basic優(yōu)良的開(kāi)發(fā)性能,將軟件和硬件充分結(jié)合。這種解決方案并不僅僅適用于尋呼基站監(jiān)控這一特定場(chǎng)合,在大多數(shù)類似的環(huán)境中,例如通過(guò)串口對(duì)工控機(jī)進(jìn)行的現(xiàn)場(chǎng)或是遠(yuǎn)程的監(jiān)控和采樣,都可以嘗試運(yùn)用這種方法。本文作者希望這篇文章能夠起到拋磚引玉的作用,相信今后一定可以看到更加出色的解決方案
  
  參考文獻(xiàn)
  
  1 (美)Steven Holzner;Visual Basic 6 技術(shù)內(nèi)幕;機(jī)械工業(yè)出版社
  2 劉樹(shù)坤;用Windows API實(shí)現(xiàn)串行通信;計(jì)算機(jī)應(yīng)用;2000.2

(轉(zhuǎn)載)

標(biāo)簽:仿真 我要反饋 
2024世界人工智能大會(huì)專題
即刻點(diǎn)擊并下載ABB資料,好禮贏不停~
優(yōu)傲機(jī)器人下載中心
西克
2024全景工博會(huì)
專題報(bào)道