VB 程序设计

10个成员

MsComm 文字传输

发表于 2016-12-21 3466 次查看
假如您对 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 = "折返显示"

' 程式部分
'-------------------------------------------------------------
Option Explicit
' 设一个此表单的区域变数,来作终止读取通讯埠的指标
Dim bStop As Boolean
' 设一个区域变数,来作读取通讯埠的暂存区
Dim InString As String

Private Sub Command1_Click()
bStop = False
Text1.SetFocus
With MSComm1
' 设定通讯埠号,可依照您的需求更改
.CommPort = 2
' 设定传输速率等,可依照您的需求更改
.Settings = "14400,N,8,1"
' 将通讯埠打开
.PortOpen = True
End With
' 假如使用者未按下「停止测试」钮(bStop = False), 则继续读取
Do While Not bStop
If MSComm1.InBufferCount Then
' 通讯埠中假如有资料的话, 则读取进来
InString = InString & MSComm1.Input
' 如果资料中有 Chr(13) 和 Chr(10) 的话, 则显示出来
If InStr(InString, vbCrLf) Then
Label3.Caption = Label3.Caption & InString
InString = ""
' 暂时把系统资源让出来给其它的程式使用
DoEvents
End If
End If
DoEvents
Loop
End Sub

Private Sub Command2_Click()
' 按下「停止测试」钮时, 把 bStop 设为「真」(True)
' 如此程式才会停止等待(或读取)通讯埠所收到的资料
bStop = True
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
bStop = True
' 把通讯埠关闭, 才不会影响其它程式的使用通讯埠
MSComm1.PortOpen = False
End
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
' 当按下 [Enter] 时, 把 Text1 文字框中的资料送至通讯埠
If KeyAscii = 13 Then
MSComm1.Output = Text1.Text & vbCrLf
Text1.Text = ""
KeyAscii = 0
End If
End Sub

 

发表回复
你还没有登录,请先登录注册