VB开发道闸OCX的有关问题

VB开发道闸OCX的问题Private Function Execute(order As Variant)WriteLog (Time() & : Transmitting &

VB开发道闸OCX的问题


Private Function Execute(order As Variant)
    WriteLog (Time() & ": Transmitting " & order & "......")
    MSCom.OutBufferCount = 0            '清空等待传送的字符个数
    MSCom.Output = order                '向道闸发送指令
    WriteLog (Time() & ": Size of " & MSCom.InBufferCount & ".")
    inputStream = ""                    '清空上次状态
    inputStream = MSCom.Input           '获取本次状态
    WriteLog (Time() & ": Received " & inputStream & ".")
End Function

Public Function GetState() As String
'    inputStream = MSCom.Input
    If StrComp(inputStream, "#RR~") = 0 Then '已复位且准备好
        GetState = "Ready"
        Exit Function
    End If
    If StrComp(inputStream, "#VV~") = 0 Then '闸杆已达垂直位置
        GetState = "Vertical"
        Exit Function
    End If
    If StrComp(inputStream, "#MM~") = 0 Then '闸杆处于中间过渡位置
        GetState = "Midst"
        Exit Function
    End If
    If StrComp(inputStream, "#HH~") = 0 Then '闸杆已达水平位置
        GetState = "Horizontal"
        Exit Function
    End If
    If StrComp(inputStream, "#EE~") = 0 Then '闸杆因故超时(6秒)未动作到位
        GetState = "Overtime"
        Exit Function
    End If
    If StrComp(inputStream, "#CC~") = 0 Then '车辆进入感应区
        GetState = "InInduction"
        Exit Function
    End If
    If StrComp(inputStream, "#GG~") = 0 Then '车辆离开感应区
        GetState = "OutInduction"
        Exit Function
    End If
    GetState = "NULL"
End Function


为什么inputStream获取的状态为空呢?如何获取道闸状态呐???
[解决办法]
先检查硬件,再检查软件设置
[解决办法]
该回复于2010-10-26 10:45:00被版主删除
[解决办法]
引用:
先检查硬件,再检查软件设置



硬件没问题,可以控件道闸升落,但怎么不返回状态呐?
[解决办法]
你刚发完命令,就去收估计是收不到的。总要等个几十毫秒吧,你真把硬件当光脑了瞬时返回啊。
再说栏杆抬杆,落杆动作也是要时间的,这个时间一般至少要大于1秒吧。
建议,你用串口调试助手,发发命令,观察一下硬件是在什么时候回应的。
[解决办法]
mscom.output之后马上就用MSCom.Input去读状态,哪有那么快啊,还是等串口有数据返回以后再用mscom.input去读吧,读早了当然什么都没有了
[解决办法]
我觉得不完整,能不能提供完整的VB 代码道闸系统