串口数据怎么接收????????

zhanshua 2005-07-13 03:02:18
接收的数据是二进制,以68开头,以16结尾,中间部分长度不固定,谁能告诉我怎么接收?
以前是这么写的:
Private Sub MSComm1_OnComm()

With MSComm1
Select Case .CommEvent
Case comEvReceive
ReDim ab(60) As Byte
.RThreshold = 0
TimeDelay 300 '等0.3秒,
av = .Input 'av为变体
ab = av ’ab为byte数组
.InBufferCount = 0 ’清空
.OutBufferCount = 0 '清空
End Select
.RThreshold = 1
End With
End Sub
中间用了延时,现在想不用延时,直接用看数据是不是16,是就结束,但不知道怎么写。
...全文
155 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanshua 2005-07-14
  • 打赏
  • 举报
回复
不知道怎么结帖
zhanshua 2005-07-13
  • 打赏
  • 举报
回复
谢谢上面的,可以了,还是你的方法好。
Wenking003 2005-07-13
  • 打赏
  • 举报
回复
试试这样,我没调试过:
Private Sub MSComm1_OnComm()
Dim Ss As Variant
Dim I As Integer

With MSComm1
Select Case .CommEvent
Case comEvReceive
ReDim ab(60) As Byte
.RThreshold = 0
.InputLen = 1

I = 0
While ab(I) <> 16
While .InBufferCount = 0 ' 要保证一定会收到16
DoEvents
Wend

Ss = .Input 'av为变体
I = I + 1
ab(I) = Ss(0)
Wend ’有用的数据是ab(1)--ab(N)

.InBufferCount = 0 '清空
.OutBufferCount = 0 '清空
End Select
.RThreshold = 1
End With
End Sub

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧