串口通信,MSComm.Output无法读取数据解决思路
串口通信,MSComm.Output无法读取数据
Private Function sendData(ByVal data As Byte) As Boolean
Dim bytSendData(0) As Byte '发送的帧
Dim lngStartTime As Long
On Error GoTo sendData_Err_Handle
If Len(data) = 1 Then data = "0" & data '如果不足2位前面用0补足
bytSendData(0) = CByte("&H" & data) '转化数据类型为byte
MSComm1.Output = bytSendData(0)
lngStartTime = GetCurrentTime
Do
DoEvents
If Abs(GetCurrentTime - lngStartTime) >= DelayTime Then GoTo sendDataToSCM_Err_Handle
Loop Until (MSComm1.OutBufferCount = 0) '设置或返回发送缓冲区中等待计算机发送的字符数。当将其值设为0时,则输出寄存器发送数据完毕。
sendDataToSCM = True
Exit Function
sendDataT_Err_Handle:
sendData = False
MsgBox Err.Description, vbCritical, "提示"
End Function
MSComm1.Output=bytSendData(0)格式并无错误,但是每次调试都显示属性只写。
------解决方案--------------------
MSComm1.Output=bytSendData
Private Function sendData(ByVal data As Byte) As Boolean
Dim bytSendData(0) As Byte '发送的帧
Dim lngStartTime As Long
On Error GoTo sendData_Err_Handle
If Len(data) = 1 Then data = "0" & data '如果不足2位前面用0补足
bytSendData(0) = CByte("&H" & data) '转化数据类型为byte
MSComm1.Output = bytSendData(0)
lngStartTime = GetCurrentTime
Do
DoEvents
If Abs(GetCurrentTime - lngStartTime) >= DelayTime Then GoTo sendDataToSCM_Err_Handle
Loop Until (MSComm1.OutBufferCount = 0) '设置或返回发送缓冲区中等待计算机发送的字符数。当将其值设为0时,则输出寄存器发送数据完毕。
sendDataToSCM = True
Exit Function
sendDataT_Err_Handle:
sendData = False
MsgBox Err.Description, vbCritical, "提示"
End Function
MSComm1.Output=bytSendData(0)格式并无错误,但是每次调试都显示属性只写。
------解决方案--------------------
MSComm1.Output=bytSendData