Private Sub MSComm1_OnComm()
Dim temp() As Byte
Dim rcv() As Byte
Dim rcvlenth As Integer
rcvlenth = -1
If Command2.Caption = "停止接受" Then
Select Case CommEvent
Case comEvReceive
temp = MSComm1.Input
ReDim Preserve temp(UBound(temp)) As Byte
For i = LBound(temp) To UBound(temp)
rcvlenth = rcvlenth + 1
rcv(i) = temp(i)
Next i
ReDim Preserve rcv(rcvlenth) As Byte
For i = LBound(rcv) To UBound(rcv)
Text2 = Text2 & str$(rcv(i)) & " "
Next i
End Select
End If
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
End Sub
代碼如上,請大家幫忙看看多謝~~
uj5u.com熱心網友回復:
temp = MSComm1.InputReDim Preserve temp(UBound(temp)) As Byte
假設你第一句已經接受到資料了, 第二句重定義長度還有何意義?
再說, redim也不能跟as Byte呀, 它只能改變長度,不能改變型別了(即使和之前的定義型別一樣)
uj5u.com熱心網友回復:
ReDim Preserve 的作用是重新定義,但是保留以前陣列內的內容,只可以擴充陣列的長度。
在Case comEvReceive這里設定斷點,是否可以停下來?
是否設定mscomm1.rthreshold=1(或者其他非0的值),你肯定沒有設定,因為我設定了。。。
此外在第一個回圈里面
rcvlenth = rcvlenth + 1
rcv(i) = temp(i)
這里rcv陣列沒有定義。
uj5u.com熱心網友回復:
Dim temp As Variant
Dim rcv() As Byte
Dim rcvlenth As Integer
rcvlenth = -1
If Command2.Caption = "停止接受" Then
Select Case CommEvent
Case comEvReceive
temp = MSComm1.Input
rcvlenth = UBound(temp)
Redim rcv(rcvlenth)
For i = 0 To rcvlenth
rcv(i) = temp(i)
Next i
For i = 0 To rcvlenth
Text2 = Text2 & CStr(rcv(i)) & " "
Next i
End Select
End If
uj5u.com熱心網友回復:
謝謝各位的幫忙,最后研究下來可能是PLC回送格式的問題,先是VB100,一直到VB102都是位元組數,和首字符等,VB103 開始才是真正資料區開始~特別感謝of123大神,兩次發帖都給與解答并給我很大幫助 謝謝轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/122879.html
標籤:VB基礎類
