3.3定時問題

在自動監控過程中,必須要每隔一定時間查看一次係統狀態,因此涉及到定時問題。在VB中提供了一個定時器“Timer”,它可以根據設定的時間,定時執行相應的程序,其精度達到1‰秒,可以滿足我們的需要。

3.4終端仿真問題

有些監控係統(如衛星CU板、自動轉報工作站等等)在回送數據時發送了許多控製字符,這些字符主要是控製終端顯示用的,其內容根據終端的種類而定。在自動監控時也需要加入終端仿真功能,進行必要的人工處理。解決辦法有兩個:一是使用PDQ通信控件,前麵提到的MS是PDQ的一個子集,PDQ不但具有MS的全部功能,還能提供終端仿真,實現文件傳輸、宏命令等其他多種功能,麻煩的是這是一個商業軟件,需要付費使用,而且不能支持所有的終端類型,如WYSE60+等;第二個辦法是分析所設計的終端仿真控製字符的含義,在程序中自己解決。後一種方法難度相對較大,但可以解決所有問題,使用後一種方法可以參考X.64協議。

3.5命令自動生成問題

在人工監控中發送命令是由人來完成的,而由電腦完成就涉及到一個自動組合生成命令的問題。例如在分組網診斷係統TDT2中要查看某台節點機某條線路狀態,要使用如下命令:

TP460200707000(節點機地址)

STATLIN1(線路號)LPU16(板子號)OUTBR

節點機的地址、線路號和板子號根據監控對象不同而不同,可以看出,在自動發送命令過程前,需要根據命令的語法要求組合生成命令。這就要求程序設計人員必須熟練掌握每個命令的語法要求。在程序中可以使用字符串相加的方法實現。

3.6回送數據接收問題

在自動監控過程中,根據監控的內容需要發送多條命令,見下麵的命令序列:

TP460200707000(節點機地址)

STATLIN0(線路號)LPU16(板子號)0UTBR

STATLIN1(線路號)LPU16(板子號)OUTBR

STATLIN16(線路號)LPU16(板子號)0UTBR

由於VB開發的程序是在WINDOWS95或NT環境下運行,支持多任務,且大部分監控係統的通信方式是全雙工的,所以當發出第一條命令後,係統回送的數據還沒有接收完成,第二條、第三條命令會連續不斷發出,係統也會將多條命令的數據一起回送,造成數據混亂,無法進行分析。解決辦法可以參見以下程序段:

Ms.Putput=CmdStr$‘發送命令

Do‘開始循環

3.3定時問題

在自動監控過程中,必須要每隔一定時間查看一次係統狀態,因此涉及到定時問題。在VB中提供了一個定時器“Timer”,它可以根據設定的時間,定時執行相應的程序,其精度達到1‰秒,可以滿足我們的需要。

3.4終端仿真問題

有些監控係統(如衛星CU板、自動轉報工作站等等)在回送數據時發送了許多控製字符,這些字符主要是控製終端顯示用的,其內容根據終端的種類而定。在自動監控時也需要加入終端仿真功能,進行必要的人工處理。解決辦法有兩個:一是使用PDQ通信控件,前麵提到的MS是PDQ的一個子集,PDQ不但具有MS的全部功能,還能提供終端仿真,實現文件傳輸、宏命令等其他多種功能,麻煩的是這是一個商業軟件,需要付費使用,而且不能支持所有的終端類型,如WYSE60+等;第二個辦法是分析所設計的終端仿真控製字符的含義,在程序中自己解決。後一種方法難度相對較大,但可以解決所有問題,使用後一種方法可以參考X.64協議。

3.5命令自動生成問題

在人工監控中發送命令是由人來完成的,而由電腦完成就涉及到一個自動組合生成命令的問題。例如在分組網診斷係統TDT2中要查看某台節點機某條線路狀態,要使用如下命令:

TP460200707000(節點機地址)

STATLIN1(線路號)LPU16(板子號)OUTBR

節點機的地址、線路號和板子號根據監控對象不同而不同,可以看出,在自動發送命令過程前,需要根據命令的語法要求組合生成命令。這就要求程序設計人員必須熟練掌握每個命令的語法要求。在程序中可以使用字符串相加的方法實現。

3.6回送數據接收問題

在自動監控過程中,根據監控的內容需要發送多條命令,見下麵的命令序列:

TP460200707000(節點機地址)

STATLIN0(線路號)LPU16(板子號)0UTBR

STATLIN1(線路號)LPU16(板子號)OUTBR

STATLIN16(線路號)LPU16(板子號)0UTBR

由於VB開發的程序是在WINDOWS95或NT環境下運行,支持多任務,且大部分監控係統的通信方式是全雙工的,所以當發出第一條命令後,係統回送的數據還沒有接收完成,第二條、第三條命令會連續不斷發出,係統也會將多條命令的數據一起回送,造成數據混亂,無法進行分析。解決辦法可以參見以下程序段:

Ms.Putput=CmdStr$‘發送命令

Do‘開始循環

DoEvent‘允許響應其他事件

Loop Until d‘直到收到結束標誌

再退出循環

程序中DoEvent是必須要有的,否則程序陷入死循環,不能響應其他事件。d是一個自定義函數,其功能是判斷是否收到結束標誌,如果收到則返回真值。