hufa_cpu 2017-03-29 03:32 采纳率: 0%
浏览 833

VB6.0 在开发串口时遇到下位机重启或者上电,就接不到数据了

今天在开发一个APP控制串口软件,用的是MSCOMM控件,存在一个问题就是下位机上电或者重启时,APP就接不到数据了,有遇到过的吗?程序如下:
Private Sub Command1_Click()
On Error Resume Next '//屏蔽错误
If MSC.PortOpen = False Then
MSC.CommPort = Combo1.ListIndex + 1
MSC.Settings = "9600,N,8,1"
MSC.RThreshold = 1
MSC.SThreshold = 0
MSC.InBufferSize = 512
MSC.OutBufferSize = 512
MSC.InputLen = 0
MSC.OutBufferCount = 0
MSC.InBufferCount = 0
MSC.PortOpen = True
'T1 = Combo1.ListIndex
Command1.Caption = "关闭串口"
LED.BorderColor = &HFF&
Else

    Dim buffer() As Byte, CharCount As Integer
    CharCount = MSC.InBufferCount
    If CharCount > 0 Then
        ReDim buffer(0 To CharCount - 1)
        MSC.InputLen = CharCount
        buffer = MSC.Input
    End If

    MSC.PortOpen = False

    Command1.Caption = "打开串口"
    LED.BorderColor = &H0&

End If
If Err Then '//如果端口不存在产生错误

    MsgBox "端口无效", 16, "错误提示"
     MSC.PortOpen = False
     Command1.Caption = "打开串口"
       LED.BorderColor = &H0&
Else '//端口存在返回当前端口号
' Command1.Caption = "关闭串口"

' LED.BorderColor = &HFF&

End If

End Sub

Private Sub MSC_OnComm()
On Error Resume Next '//屏蔽错误
Static blIsOnComm As Boolean
If blIsOnComm = True Then Exit Sub

blIsOnComm = True ' 正在执行MSComm11_OnComm,防止重入

If MSC.CommEvent <> comEvReceive Then Exit Sub ' 接收事件
Dim CharCount As Integer
Dim buffer() As Byte
CharCount = MSC.InBufferCount
ReDim buffer(0 To CharCount - 1)
MSC.InputLen = CharCount
buffer = MSC.Input
Dim i As Byte
For i = 0 To CharCount - 1 '数据多放了一位造成的 多一位现象
If receNum > 20 Then
receNum = 0
MsgBox "接收数据大于20个!", 16, "错误提示"
End If
receArray(receNum) = buffer(i)
receNum = receNum + 1
Next i
receTime = 6

'If Err Then '//如果端口不存在产生错误
' MsgBox MSC.CommEvent & " " & receNum, 16, "错误提示"
' Err.Clear

'End If
blIsOnComm = False
End Sub

  • 写回答

1条回答

  • Tiger_Zhao 2017-03-29 03:34
    关注

    CommEvent 还有其它取值,看看上电/重启时分别是什么值。
    然后在代码中进行对应:
    A)提示用户,由用户手工点击按钮进行重新连接。
    B)开启一个定时器,定时尝试连接。

    评论

报告相同问题?

悬赏问题

  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64