VB6.0可使用MsComm控件实现串口通信。按通信协议和数据帧规约接收和处理数据。
MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。
MSComm 控件提供下列两种处理通讯的方式:
事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在 Carrier Detect (CD) 或
Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm 控件的 OnComm
事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅 CommEvent
属性。
在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。
尽管 MSComm 控件有很多重要的属性,但首先必须熟悉几个属性。
未见串口打开语句,你的MSComm1_OnComm事件代码有些冲突,你究竟想以二进制接收还是以ASCII码接收:Private Sub MSComm1_OnComm()
''
Dim Buffer As Variant
Select Case MSComm1.CommEvent
Case comEvReceive
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeBinary‘此处及后3句用前2句不用后2句,反之亦然
Buffer = MSComm1.Input
MSComm1.InputMode = comInputModeText
Buffer = AscB(MSComm1.Input)
Text1.Text = Buffer
Case Else
End Select
''
End Sub
VB6.0MsComm控件可以利用OnComm事件连续获取来自外设发送的信号。
基于:
1)MsComm控件的RThreshold 属性不为0和恰当的接收代码。
2)使用电脑主板物理COM口或PCI多串口卡上的COM口COM,这样的COM口是全双工的,发送与接收不会冲突。
3)高质量的接收代码和符合通信协议和数据帧规约的接收处理代码。
实例代码:
Private Sub Form_Load()MSComm1.InputMode = comInputModeBinary '采用二进制传输
MSComm1.InBufferCount = 0 '清空接受缓冲区
MSComm1.OutBufferCount = 0 '清空传输缓冲区
MSComm1.RThreshold = 1 '产生MSComm事件
MSComm1.InBufferSize = 1024
TxtSend = ""
TxtSend = ""
txtReceive = ""
Text2 = ""
End Sub
Private Sub MSComm1_OnComm() '接收数据
Dim strBuff As String
Select Case MSComm1.CommEvent
Case 2
MSComm1.InputLen = 0
strBuff = MSComm1.Input
BytReceived() = strBuff
jieshou
lenInput = Len(strData)
Text2 = lenInput \ 2
'数据处理代码
End Select
End Sub
Public Function jieshou() '接收数据处理为16进制
Dim i As Integer
For i = 0 To UBound(BytReceived)
If Len(Hex(BytReceived(i))) = 1 Then
strData = strData & "0" & Hex(BytReceived(i))
Else
strData = strData & Hex(BytReceived(i))
End If
Next
txtReceive = strData
End Function
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)