越來越多的微機用戶已習慣于Windows操作系統。不過Windows應用軟件的開發對于一般工程技術領域的技術人員來說并非易事,然而使用微軟的VisualBasic6.0(簡稱VB6)來開發這些方面的Windows應用軟件就十分方便,編程工作量相對較小,只需進行主要應用功能的編程和少量界面控制的編程。本文介紹利用VB6串行通信編程的方法對采用了RS-232接口的儀器,進行串行通信的計算機測控軟件開發和實現儀器功能和指標的驗收。
VB6提供了許多供用戶選擇的控件(Customcontrol),這些控件以.OCX為文件后綴名,其中MSCOMM.OCX即是用于串行通信的控件。如果需要使用該控件,可將該控件添加到工具箱(toolbox)內,這樣就可以利用該控件進行串行通信程序的設計。
下面舉一個簡單的例子,說明如何進行串行通信程序的設計,該程序在Windows98環境下已調試通過。該例介紹通過RS-232對一臺HP53150A微波計數器的程控功能和性能指標的驗收。
1 設計用戶界面
首先新建一個“標準EXE”工程,然后選擇“工程/部件”菜單項,在“部件”對話框中選擇Microsoft Comm Control6.0即可添加MsComm控件;再在窗體中依次布置如下控件并設置其屬性。
控件名稱 |
name 屬性 |
Caption 屬性 |
Form |
form1 |
空 |
Frame1 |
frame1 |
空 |
Frame2 |
frame2 |
空 |
Frame3 |
frame3 |
空 |
Command1 |
comd1 |
確定 |
Command2 |
comd2 |
退出 |
Command3 |
comd3 |
確定 |
Command4 |
comd4 |
退出 |
Command5 |
comd5 |
做完退出 |
MSComm |
msc1 |
空 |
Label 1 |
lab1 |
RS-232 接口功能檢測 |
Label 2 |
lab2 |
請輸入被檢儀器程控碼控制儀器功能 |
Label 3 |
lab3 |
請輸入被檢儀器程控碼讀取儀器數據 |
Text1 |
txt1 |
空 |
Text2 |
txt2 |
空 |
2 編寫程序代碼
編寫的程序代碼如下:
PriVate Sub Form_Load () |
Msc1.CommPort=1 使用串行口 1 |
波特率 9600 ,偶校驗, 8 個數據位, 1 個停止位 |
Msc 1.Settings=“9600 , E , 8 , 1” |
當使用 Msc 1.Input 時,每次從接收緩沖區取一個字節。 |
Msc1.InputLen=0 讀取整個接收緩沖區內碼或消除 |
Msc1.Portopen=True 打開串行口 |
End Sub |
Private Sub Comd1_Click () |
On Error Resume Next 簡單的錯誤處理 |
If Txt1.Text = "" Then |
x = MsgBox ( " 被檢儀器程控碼不能為空值 ", 16 ) |
Exit Sub |
End If |
MSC1.Output = Txt1.Text + Chr$ ( 13 ) |
發送程控碼 |
For i = 1 To 20000000 |
Next |
End Sub |
Private Sub Comd2_Click () |
Txt1.Text = "" |
Txt1.SetFocus |
End Sub |
Private Sub Comd3_Click () |
Dim instring As string |
instring = MSC1.Input |
MSC1.Output = Txt2.Text + Chr$ ( 13 ) |
Do |
DoEvents |
Loop Until MSC1.InBufferCount >= 20 |
instring = MSC1.Input 從接收隊列中讀入字符串 |
Txt2.Text = "" |
Txt2.Text = instring 顯示讀入的字符串 |
End Sub |
Private Sub Comd4_Click () |
Txt2.Text = "" |
Txt2.SetFocus |
End Sub |
Private Sub Comd5_Click () |
MSC1.PortOpen = False 關閉串行口 |
End |
End Sub |
3 程序簡要說明
上述程序設置的端口通信協議為: 9600波特率,偶校驗,8個數據位,1個停止位。當退出程序時,一定要關閉串行口,通過comm1.PortOpen=False完成。使用時,在“請輸入被檢儀器程控碼控制儀器功能”文本框中輸入“FUNC‘FREQ 1;FREQ:RES1HZ”即儀器的程控碼為:“功能通道1測頻,分辨率為1Hz。單擊“確定”后,HP53150A置于相應功能。加入信號后即可測量檢測,當讀取測量數據時在“請輸入被檢儀器程控碼讀取儀器數據”框中輸入“DATA?”,單擊“確定”后,該框中以字符的形式顯示測量結果。從而實現儀器程控功能和性能指標的檢測。上述只是一個簡單的例子。要實現完善的功能,必須進一步改進程序。
上面介紹了筆者在使用 VB6 開發 Windows 環境下測控軟件的一點收獲,可以看出使用 VB6 開發 Windows98 下與儀器進行串口通信程序是非常簡單的。