電腦監控系統是以監測控制電腦為主體,加上檢測裝置、執行機構與被監測控制的對象共同構成 的整體。在這個系統中,電腦直接參与被監控對象的檢測、監督和控制[1]。檢測主要是 通過感應器和相應的輸入模組來取得被監控對象的狀態資料,監督主要是對狀態資料進行分析後給操作 員提供手動操作的參考,控制則是手動或按照一定的策略自動地對被監控對象執行相應的操作。由此可 見,檢測與控制模組是電腦監控系統直接跟被監控對象關聯的不可或缺的輸入輸出(I/O)模組,學習 和研究這些模組對電腦監控系統的輔助開發、測試與教學等都具有重要意義。
I/O模組一般配 置有串列通訊介面,本文用軟體模擬一個2路類比量輸入和2路數字量(又稱開關量)輸出的基於 RS-232 介面的模組(Analog Input / Digital Output Module, 簡稱 AI/DO-M),並開發了針對該模擬模組的 主控程式;開發了 RS-232/RS-232 轉換器,可以將兩個不同通訊協定和不同傳輸速率的主控機或受控機連 接起來,並可以截取兩者之間的通訊協定; 開發了RS-232/RJ-45協議轉換器軟體,可以將串列通訊協定 轉換為 TCP 協議,而且,該軟體既可以工作在客戶機方式,又可以工作在伺服器方式,藉助該協議轉換 器,可以對傳統的基於 RS-232 介面的監控系統轉換為基於 Internet 的監控系統,從而進行遠程測試 ;通用串口裝置測試載入器可以自動產生多種校正碼及添加多種結尾碼,既可以充當主控機對受控機進行 測試,也可以充當受控機對主控機進行測試,並可以記錄測試結果和通訊協定。在這些模擬模組與協議 轉換器的基礎之上,可以在高校的電腦房零成本(僅需要串口連接線和網線)搭建多種形式的電腦 監控系統的模擬開發平台,並可對其進行綜合測試,從而節約大量教學裝置經費的投入及相關項目開發 費用的支出。
1 串列通訊的主要技術
通訊是電腦監控系統實現的關鍵。串列通訊的基 本技術主要包括資料處理技術、資料的校正技術以及串口操作技術,串口資料接收技術則是關鍵技術。 有了這些技術,就可以自動產生指定格式的資料包、校正資料包,也可以非常便捷地通過串列介面發送 和接收資料。
1.1 資料處理技術
Visual Basic 2008 提供了豐富的字串處理函數,利 用16進位字串表示資料,可以較好地觀察資料,例如 0xFF 是一個不可見字元,如果以 "FF" 來顯示則比較清楚。BytesToHexChars 函數實現位元組序列到16進位字串的轉換,其中 ,通過 ByteToTwoHexChars 函數(其定義比較簡單,略),將一個位元組轉換為標準的兩個16進位字元, 然後,對這些字元進行累加。
Public Function BytesToHexChars(ByRef byteArray As Byte()) As String
Dim I As Integer
Dim strData As String = ""
For I = 0 To byteArray.Length - 1
strData &= ByteToTwoHexChars(byteArray(I))
Next I
Return strData
End Function
在發送位元組序列時,又需要將16進位字串轉換為位元組序列,這可以通過 HexCharsToBytes 來實現 ,其基本原理是調用 TwoHexCharsToByte 函數(定義略)將兩個16進位字元轉換為一個位元組。
Public Function HexCharsToBytes(ByVal strVal As String) As Byte()
Dim I As Integer
Dim nLength As Integer
Dim bTmp() As Byte
If strVal = "" Then Return Nothing
strVal = Trim(strVal) '刪除尾部空格
nLength = Len(strVal) 2 - 1 '求得位元組長度
ReDim bTmp(nLength) '可變數組儲存位元組序列
For I = 0 To nLength
'每兩個16進位字元轉換為一個位元組,存入可變數組
bTmp(I) = TwoHexCharsToByte((Mid(strVal, I * 2 + 1, 2)))
Next I
Return bTmp
End Function