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 代码道闸系统
