假如您對MSComm的基本屬性還不了解,建議請先至MSComm基本介紹一文中詳讀
表單畫面
'表單部分
'-------------------------------------------------------------
Form.Name="Form1"
Caption="Form1"
CommandButton.Name=Command2
Caption="停止測試"
CommandButton.Name=Command1
Caption="開始測試"
TextBox.Name=Text1
MSComm.Name=MSComm1
DTREnable=-1'True
Label.Name=Label1
AutoSize=-1'True
Caption="欲送出的資料-按下[Enter]送出"
Label.Name=Label3
BorderStyle=1'單線固定
Label.Name=Label2
AutoSize=-1'True
Caption="折返顯示"
'程式部分
'-------------------------------------------------------------
OptionExplicit
'設一個此表單的區域變數,來作終止讀取通訊埠的指標
DimbStopAsBoolean
'設一個區域變數,來作讀取通訊埠的暫存區
DimInStringAsString
PrivateSubCommand1_Click()
bStop=False
Text1.SetFocus
WithMSComm1
'設定通訊埠號,可依照您的需求更改
.CommPort=2
'設定傳輸速率等,可依照您的需求更改
.Settings="14400,N,8,1"
'將通訊埠打開
.PortOpen=True
EndWith
'假如使用者未按下「停止測試」鈕(bStop=False),則繼續讀取
DoWhileNotbStop
IfMSComm1.InBufferCountThen
'通訊埠中假如有資料的話,則讀取進來
InString=InString&MSComm1.Input
'如果資料中有Chr(13)和Chr(10)的話,則顯示出來
IfInStr(InString,vbCrLf)Then
Label3.Caption=Label3.Caption&InString
InString=""
'暫時把系統資源讓出來給其它的程式使用
DoEvents
EndIf
EndIf
DoEvents
Loop
EndSub
PrivateSubCommand2_Click()
'按下「停止測試」鈕時,把bStop設為「真」(True)
'如此程式才會停止等待(或讀取)通訊埠所收到的資料
bStop=True
EndSub
PrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)
bStop=True
'把通訊埠關閉,才不會影響其它程式的使用通訊埠
MSComm1.PortOpen=False
End
EndSub
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
'當按下[Enter]時,把Text1文字框中的資料送至通訊埠
IfKeyAscii=13Then
MSComm1.Output=Text1.Text&vbCrLf
Text1.Text=""
KeyAscii=0
EndIf
EndSub->