摘要:本文主要介紹利用VB6.0串行通信編程的方法,利用MSComm控件實現計算機與計算機間的串口通信。
關鍵詞:串口通信;VB6.0;MSCOMM控件
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)08-10ppp-0c
隨著互聯網的不斷發展,計算機間的相互通信已非常普遍,只要通過計算機的串行口就可以實現。而對于串口通信的編程軟件,微軟公司的Visual Basic 6.0(簡稱VB6.0)以其友好的開發界面、簡單易用、實用性強等優點已在國內外得到廣泛應用。
VB6.0提供了許多供用戶選擇的控件,這些控件以.OCX為文件后綴名,其中MSComm.OCX即是用于串行通信的控件。如果需要使用該控件,可將控件添加到工具箱內,這樣就可以利用該控件進行串行通信程序的設計。
下面這個例子,說明如何進行串行通信程序設計,該程序在Windows98環境下已調試通過。在調試程序時,很難做到一個人同時占有兩臺計算機。為此,可通過直接短接串口的2、3兩個腳,即將串行口的2、3腳連接在一起,從而使發送的信息直接被本機接收。這樣,就可以在一臺計算機上調試程序。
1 MSComm控件常用屬性
Commport 設置并返回通信端口號。
Settings 以字符串的形式設置并返回波特率、奇偶校驗、數據位、停止位。
PortOpen設置并返回通信端口的狀態,也可以打開和關閉端口。
InBufferSize 設置并返回接收緩沖區的字符數。
Input 從接收緩沖區返回和刪除字符。
InputLen設置并返回Input屬性從緩沖區讀取的字符數。
OutBufferSize以字符形式設置并返回傳輸緩沖區的大小。
Output向傳輸緩沖區寫數據。
2 用戶界面設計
首先新建一個“標準EXE”工程,然后選擇“工程/部件”菜單項,在“部件”對話框中選擇Microsoft Comm Control6。0 即可添加MSComm控件;再在窗體中依次布置如下控件并設置其屬性。

完成后的界面如圖1所示。

圖1 運行主界面
3 編寫程序代碼
編寫的程序代碼如下:
Private Sub Form_Load()
Msc1.commport=1‘使用串行口1
Msc1.settings=”9600,N,8,1”‘波特率9600,奇校驗,8個數據位,1個停止位
Msc1.InputLen=0 ‘讀取接收緩沖區的所有字符
Msc1.InBufferSize = 2048‘設置接收緩沖區為2048字節
Msc1.OutBufferSize = 1024 ‘設置發送緩沖區為1024字節
Msc1.PortOpen=True‘打開串行口
End Sub
Private Sub Command1_Click()‘發送信息
Dim n As String
On Error Resume Next
IfRTB1.Text = \" \" Then
n = MsgBox(\"發送信息為空,請輸入發送信息!\", vbOKCancel + vbQuestion, \"發送信息出錯\")
End If
m = Len(RTB1.Text)‘取發送信息的字符長度
If m > Msc1.OutBufferSize Then
Msc1.Output = Mid(RTB1.Text, 1, Msc1.OutBufferSize / 2)
RTB1.Text = Mid(RTB1.Text, Msc1.OutBufferSize / 2 + 1)
Else
Msc1.Output = RTB1.Text
RTB1.Text = \"\"
RTB1.Visible = False
End If
‘如果發送信息的字符長度大于發送緩沖區的大小,按發送緩沖區的大小發送信息,發送文本框保留未發送信息;否則將信息全部發送,并將發送文本框清空。
End Sub
Private Sub Command2_Click() ‘接收信息
RTB2.Visible = True
RTB2.Text = \"\"
DoEvents‘該語句使程序可以在此處響應其他事件
If Msc1.InBufferCount > 0 Then
Timer1.Enabled = True
RTB2.Text = Msc1.Input
End If
Msc1.PortOpen = False
Timer1.Enabled = False
‘如果接收緩沖區字符數不為零,則將接收緩沖區字符在接收文本框中顯示;否則關閉串行口,結束通信。
End Sub
Private Sub Command3_Click() ‘清除信息
RTB2.Text = \" \"
IfMsc1.PortOpen = True Then
Msc1.PortOpen = False
End If
RTB2.Visible = False
End Sub
‘清除接收文本框中信息,關閉串行口,結束通信,并使接收文本框不可見。
4 幾點說明
為了使該設計更加便于操作,本設計在界面上加入了菜單欄的設計,通過對菜單按鈕的操作,能實現對通信信息的發送與接收。此外,為了實現對通信信息的打開、保存及打印,本設計引用了VB6.0中的控件RichTextBox,利用該控件的RichTextBox.LoadFile, RichTextBox.SaveFile,RichTextBox.selprint Printer.hDC屬性即可實現上述功能。鑒于篇幅有限,該程序代碼沒有給出。總之,使用VB6.0開發Windows98下計算機間的串口通信程序是非常簡單的。
參考文獻:
[1]周軼峰,等.Visual Basic 6.0實用編程技術[M].中國水利水電出版社,1999.
[2]鄭阿奇.Visual Basic實用教程[M].電子工業出版社,2000.
[3]俞旭明,等.Visual Basic 6.0網絡開發技術[M].人民郵電出版社,1999.
[4]李玉東,等.Visual Basic 6.0控件大全[M].電子工業出版社,2000.