Private Sub Form_Load()
With MSComm1
.CommPort = 1
.Settings = "9600,n,8,1" '设置通信口参数
.InputMode = comInputModeBinary '设置接收数据模式为二进制形式
.InBufferSize = 4
.OutBufferSize = 5
.InputLen = 1 '设置Input 一次从接收缓冲读取字节数为1
.SThreshold = 1 '设置Output 一次从发送缓冲读取字节数为1
.RThreshold = 1 '设置接收一个字节产生OnComm事件
.InBufferCount = 0 '清除接收缓冲区
.OutBufferCount = 0 '清除发送缓冲区
If .PortOpen = False Then '判断通信口是否打开
.PortOpen = True '打开通信口
End If
End With
End SubPrivate Sub MSComm1_OnComm()
Dim ab(2) As Byte '字节数据类型数组,用来存储接收到的一组字节数据
Dim av As Variant '用来从接收缓冲区读取数据 With MSComm1
Select Case .CommEvent '判断MSComm1通信事件
Case comEvReceive '收到Rthreshold个字节产生的接收事件
av = .Input '读取一个接收字节
ab(0) = av(0) '转换保存到字节数据类型数组
av = .Input '读取第二个数据字节(BCD码高位字节)
ab(1) = av(0) '转换保存到字节数据类型数组
Case Else
End Select
End With
Text2.Text = CStr(ab(0)) + CStr(ab(1))
End SubPrivate Sub sendReadDec()
Dim zh As String
On Error GoTo errhandle
arrSend0(0) = &H1
MSComm1.Output = arrSend0 arrSend1(0) = &H0
MSComm1.Output = arrSend1 arrSend2(0) = &H0
MSComm1.Output = arrSend2 arrSend3(0) = &HC
MSComm1.Output = arrSend3 arrSend4(0) = &HC
MSComm1.Output = arrSend4
errhandle:
If Err.Number = 8018 Then
MsgBox "端口已经被其它应用程序打开,系统不能正常运行!", vbOKOnly + vbCritical, "端口错误"
End If
End Sub请大家帮忙看看这段代码,我用串口的调试软件发送01 00 00 12 12时,可以有数据返回,为什么我上面的这段程序不行呢?请指教谢谢大家。
Dim arrsend1() As byte
Dim arrsend2() As byte
.
.
.
dim arrSend(4) as byte
arrSend(0) = &H1
arrSend(1) = &H0
arrSend(2) = &H0
arrSend(3) = &HC
arrSend(4) = &HC
MSComm1.Output = arrSend
你那样发送每发1个就会进入mscomm1_oncomm()事件中,数据取出缓冲区自动清空