'添加 Command1 List1 MSComm1Dim Rcvdata$, Trec&, i&, Comrecno&, RcvStr&() Private Sub Form_Load() With MSComm1 .CommPort = 1 .Settings = "9600,n,8,1" '自己改为你的协议 .InputLen = 0 .InBufferSize = 1 .RThreshold = 17 .InputMode = comInputModeBinary End With Command1.Caption = "开始接收" Trec = 0 End SubPrivate Sub Form_Unload(Cancel As Integer) If MSComm1.PortOpen Then MSComm1.PortOpen = False End End SubPrivate Sub Command1_Click() ReDim RcvStr&(Trec) For i = 0 To Trec - 1 '每次开始时别忘了清空 RcvStr(i) = vbNull Next i If Not MSComm1.PortOpen Then MSComm1.PortOpen = True If MSComm1.PortOpen Then MSComm1.DTREnable = True List1.Clear End SubPrivate Static Sub MSComm1_OnComm() Dim okstring$, ReceivedLen%, Rx_buff() As Byte Select Case MSComm1.CommEvent Case comEvReceive '接收缓冲区收到Rthreshold 个字符时触发 If MSComm1.InBufferCount > 0 Then ReceivedLen = MSComm1.InBufferCount Rx_buff = MSComm1.Input Rcvdata = "" For i = 0 To UBound(Rx_buff) Rcvdata = Rcvdata & Trim(Chr(Rx_buff(i))) Next i RcvStr(Comrecno) = Val(Mid(Rcvdata, 2, 16)) '从第2位开始抓16位 List1.AddItem CStr(RcvStr(Comrecno)) '添加List1方便看数据 List1.Selected(List1.ListCount - 1) = True Me.Caption = CStr(RcvStr(Comrecno)) Comrecno = Comrecno + 1 If Comrecno > Trec Then Trec = Comrecno ReDim Preserve RcvStr&(Trec) End If End If End Select End Sub
Private Sub Command1_Click() ReDim RcvStr&(Trec) For i = 0 To Trec - 1 '每次开始时别忘了清空 RcvStr(i) = vbNull Next i If Not MSComm1.PortOpen Then MSComm1.PortOpen = True If MSComm1.PortOpen Then MSComm1.DTREnable = True List1.Clear trec=0 End Sub
Private Sub Form_Load()
With MSComm1
.CommPort = 1
.Settings = "9600,n,8,1" '自己改为你的协议
.InputLen = 0
.InBufferSize = 1
.RThreshold = 17
.InputMode = comInputModeBinary
End With
Command1.Caption = "开始接收"
Trec = 0
End SubPrivate Sub Form_Unload(Cancel As Integer)
If MSComm1.PortOpen Then MSComm1.PortOpen = False
End
End SubPrivate Sub Command1_Click()
ReDim RcvStr&(Trec)
For i = 0 To Trec - 1 '每次开始时别忘了清空
RcvStr(i) = vbNull
Next i
If Not MSComm1.PortOpen Then MSComm1.PortOpen = True
If MSComm1.PortOpen Then MSComm1.DTREnable = True
List1.Clear
End SubPrivate Static Sub MSComm1_OnComm()
Dim okstring$, ReceivedLen%, Rx_buff() As Byte
Select Case MSComm1.CommEvent
Case comEvReceive '接收缓冲区收到Rthreshold 个字符时触发
If MSComm1.InBufferCount > 0 Then
ReceivedLen = MSComm1.InBufferCount
Rx_buff = MSComm1.Input
Rcvdata = ""
For i = 0 To UBound(Rx_buff)
Rcvdata = Rcvdata & Trim(Chr(Rx_buff(i)))
Next i
RcvStr(Comrecno) = Val(Mid(Rcvdata, 2, 16)) '从第2位开始抓16位
List1.AddItem CStr(RcvStr(Comrecno)) '添加List1方便看数据
List1.Selected(List1.ListCount - 1) = True
Me.Caption = CStr(RcvStr(Comrecno))
Comrecno = Comrecno + 1
If Comrecno > Trec Then
Trec = Comrecno
ReDim Preserve RcvStr&(Trec)
End If
End If
End Select
End Sub
ReDim RcvStr&(Trec)
For i = 0 To Trec - 1 '每次开始时别忘了清空
RcvStr(i) = vbNull
Next i
If Not MSComm1.PortOpen Then MSComm1.PortOpen = True
If MSComm1.PortOpen Then MSComm1.DTREnable = True
List1.Clear
trec=0
End Sub