Input 属性示例
该例子说明如何从接收缓冲区读取数据。Private Sub Command1_Click()
Dim InString as String
Dim bte() As Byte
Dim L As Long
Dim i As Long
' 读取所有可用数据。
MSComm1.InputLen = 0' 检查数据。
If MSComm1.InBufferCount Then
' Read data.
InString = MSComm1.Input
L=LenB(InString)-1
ReDim bte(L-1)
for i=0 to L-1
bte(i)=AscB(MidB(InString,i+1,1))
next
End If
End Sub
该例子说明如何从接收缓冲区读取数据。Private Sub Command1_Click()
Dim InString as String
Dim bte() As Byte
Dim L As Long
Dim i As Long
' 读取所有可用数据。
MSComm1.InputLen = 0' 检查数据。
If MSComm1.InBufferCount Then
' Read data.
InString = MSComm1.Input
L=LenB(InString)-1
ReDim bte(L-1)
for i=0 to L-1
bte(i)=AscB(MidB(InString,i+1,1))
next
End If
End Sub
L=LenB(InString)
Do Until MSComm.InBufferCount >= 10
DoEvents
Loop indata = MSComm.Input
bte = StringConv(indata, FromUnicode)
Text2 = ""
For i = 0 To 9
Text2 = Text2 & Right("0" & Hex(bte(i)), 2) & " "
Next i
End Select
End Sub
Dim indata As Variant
Dim bte() As Byte
ReDim bte(0 To 10)
Select Case MSComm.CommEvent
Case comEvReceive
'indata = MSComm.Input
bte=MSComm.Input
检测bte数组长度,数据一次性都接收到了
print bte(0),
print bte(1),
print hex(bte(2)
........
Dim bytesTotal As Long
Dim lnx As String
Dim iBuf() As Byte bytesTotal=5
ReDim iBuf(bytesTotal-1)
iBuf(0)=&h12
iBuf(1)=&h56
iBuf(2)=&hab
iBuf(3)=&h89
iBuf(4)=&hef '显示iBuf中每个字节
i = 0
lnx = "BYTE:" + Right("0000000" + Hex(i), 8) + "-"
For i = 0 To bytesTotal - 1
lnx = lnx + " " + Right("0" + Hex(iBuf(i)), 2)
If i Mod 16 = 15 Then
Debug.Print lnx
lnx = "BYTE:" + Right("0000000" + Hex(i + 1), 8) + "-"
End If
Next
i = bytesTotal - 1
If i Mod 16 <> 15 Then
Debug.Print lnx
End If
直接用bte(i)=Hex(bte(i))的话会提示下标越界
我要在text2里显示显示出来的话怎么写??
1 事先设置 MSComm1.RThreshold = 10,等接收到 10 个字节时再触发 OnComm 事件;
2 你在 OnComm 事件中等等缓存中接收到 10 个字节,如 4 楼代码;
3 indata = MSComm.Input 后测试 indata 的长度,只处理接收到的字节,如 1 楼代码。因为 On Comm 会反复触发,字符会不断被处理。当然了,如果发送端连续发送的话,信息会连在一起。