主题:mscomm控件 接收数据结束的标志位是什么
Private Sub Timer1_Timer()
Dim Buffer As Variant
Dim Data() As Byte
Dim i%, j%
Dim xu(0) As Byte '发送缓冲
Dim str As String
'查询A参数-----------------------------------------------------------------
buff(0) = &H3B
buff(1) = &H20
buff(2) = &H11
i = CRC_CITT(1)
MSComm1.OutBufferCount = 0 '发送缓冲区的字节数清零
If MSComm1.PortOpen = True Then
For i = 0 To 4
xu(0) = buff(i)
MSComm1.Output = xu
Next i
End If
sleep 20
Buffer = MSComm1.Input
Data() = Buffer
For i = 0 To (UBound(Data) - 19)
'^^^^^处理第一次通讯的数据
Next
'----------------------------------------------------------------------------
'查询 B-----------------------------------------------------------------
buff(0) = &H3B
buff(1) = &H20
buff(2) = &H12
i = CRC_CITT(1)
MSComm1.OutBufferCount = 0 '发送缓冲区的字节数清零
If MSComm1.PortOpen = True Then
For i = 0 To 4
xu(0) = buff(i)
MSComm1.Output = xu
Next i
End If
Buffer = MSComm1.Input
Data() = Buffer
For i = 0 To (UBound(Data) - 9)
'处理第二次通讯的数据
Next
MSComm1.InBufferCount = 0
End Sub
但是 中间加上的
sleep 时间值
只是根据波特率和传输数据的个数 大概估计的时间 ,肯定这个估计的时间要比实际所需用的时间 长一些
这样 因为我的一个 timer 事件中 有许多个查询命令 势必造成 资源的浪费
有没有这样一种方法
当 发送查询命令后,等待 一直到 接收到数据为止 这样 就可以很好地利用时间,而且节省了资源。
现在的疑问是 ;1 如何检测到 接收到了数据,mscomm 控件 有没有检测这一状态的 属性?
2 这个等待函数 是什么?
请指教
Dim Buffer As Variant
Dim Data() As Byte
Dim i%, j%
Dim xu(0) As Byte '发送缓冲
Dim str As String
'查询A参数-----------------------------------------------------------------
buff(0) = &H3B
buff(1) = &H20
buff(2) = &H11
i = CRC_CITT(1)
MSComm1.OutBufferCount = 0 '发送缓冲区的字节数清零
If MSComm1.PortOpen = True Then
For i = 0 To 4
xu(0) = buff(i)
MSComm1.Output = xu
Next i
End If
sleep 20
Buffer = MSComm1.Input
Data() = Buffer
For i = 0 To (UBound(Data) - 19)
'^^^^^处理第一次通讯的数据
Next
'----------------------------------------------------------------------------
'查询 B-----------------------------------------------------------------
buff(0) = &H3B
buff(1) = &H20
buff(2) = &H12
i = CRC_CITT(1)
MSComm1.OutBufferCount = 0 '发送缓冲区的字节数清零
If MSComm1.PortOpen = True Then
For i = 0 To 4
xu(0) = buff(i)
MSComm1.Output = xu
Next i
End If
Buffer = MSComm1.Input
Data() = Buffer
For i = 0 To (UBound(Data) - 9)
'处理第二次通讯的数据
Next
MSComm1.InBufferCount = 0
End Sub
但是 中间加上的
sleep 时间值
只是根据波特率和传输数据的个数 大概估计的时间 ,肯定这个估计的时间要比实际所需用的时间 长一些
这样 因为我的一个 timer 事件中 有许多个查询命令 势必造成 资源的浪费
有没有这样一种方法
当 发送查询命令后,等待 一直到 接收到数据为止 这样 就可以很好地利用时间,而且节省了资源。
现在的疑问是 ;1 如何检测到 接收到了数据,mscomm 控件 有没有检测这一状态的 属性?
2 这个等待函数 是什么?
请指教