Option ExplicitDim i As Integer
Dim iRecord As Integer
Dim iagain As Integer
Dim pic(0 To 31) As String
Const m_cardNO = 1
Const m_chCount As Long = 32 Private Sub Command1_Click()
'清零
Dim i As Integer
Call ZT8403_DOAll(m_cardNO, &H0)
For i = 0 To m_chCount - 1
ledDO(i).Value = 0
Next i
End SubPrivate Sub Command2_Click()
Call ZT8403_CloseDevice(m_cardNO)
Unload Me
End SubPrivate Sub Form_Load()
Me.Left = (Screen.Width - Me.Width) / 2
Me.Top = (Screen.Height - Me.Height) / 3
If ZT8403_GetCardCount() <= 0 Then
MsgBox "打开设备失败,找不到此类板卡。" & vbCrLf & _
"可能是未插卡或未安装驱动"
End
End If
Call doloop
'初始化开关量
Call ZT8403_OpenDevice(m_cardNO)
If ZT8403_OpenDevice(m_cardNO) <> 0 Then
MsgBox "打开设备失败,找不到指定的板卡。"
Exit Sub
End If
ZT8403_DOAll m_cardNO, &H0
pic(0) = App.Path & "\pic\1.gif": pic(1) = App.Path & "\pic\2.gif": _
pic(2) = App.Path & "\pic\3.gif": pic(3) = App.Path & "\pic\4.gif": _
pic(4) = App.Path & "\pic\5.gif": pic(5) = App.Path & "\pic\6.gif": _
pic(6) = App.Path & "\pic\7.gif": pic(7) = App.Path & "\pic\8.gif": _
pic(8) = App.Path & "\pic\9.gif": pic(9) = App.Path & "\pic\10.gif"
End SubPublic Sub doloop()
Call collect
iRecord = i
Do While True
Sleep 1000
Call collect
iagain = i
If iagain = iRecord Then
ledDI(iagain).Value = 1
ledDO(iagain).Value = 1
Exit Do
Else
iRecord = iagain
End If
Loop
End Sub Public Sub collect()
i = 0
Do Until ZT8403_DIBit(m_cardNO, i + 1) = 1
i = i + 1
If i = m_chCount Then i = 0
LoopEnd SubPublic Sub review()
Do Until ZT8403_DIBit(m_cardNO, iagain + 1) = 0
Loop
Call doloop
End Sub
Dim iRecord As Integer
Dim iagain As Integer
Dim pic(0 To 31) As String
Const m_cardNO = 1
Const m_chCount As Long = 32 Private Sub Command1_Click()
'清零
Dim i As Integer
Call ZT8403_DOAll(m_cardNO, &H0)
For i = 0 To m_chCount - 1
ledDO(i).Value = 0
Next i
End SubPrivate Sub Command2_Click()
Call ZT8403_CloseDevice(m_cardNO)
Unload Me
End SubPrivate Sub Form_Load()
Me.Left = (Screen.Width - Me.Width) / 2
Me.Top = (Screen.Height - Me.Height) / 3
If ZT8403_GetCardCount() <= 0 Then
MsgBox "打开设备失败,找不到此类板卡。" & vbCrLf & _
"可能是未插卡或未安装驱动"
End
End If
Call doloop
'初始化开关量
Call ZT8403_OpenDevice(m_cardNO)
If ZT8403_OpenDevice(m_cardNO) <> 0 Then
MsgBox "打开设备失败,找不到指定的板卡。"
Exit Sub
End If
ZT8403_DOAll m_cardNO, &H0
pic(0) = App.Path & "\pic\1.gif": pic(1) = App.Path & "\pic\2.gif": _
pic(2) = App.Path & "\pic\3.gif": pic(3) = App.Path & "\pic\4.gif": _
pic(4) = App.Path & "\pic\5.gif": pic(5) = App.Path & "\pic\6.gif": _
pic(6) = App.Path & "\pic\7.gif": pic(7) = App.Path & "\pic\8.gif": _
pic(8) = App.Path & "\pic\9.gif": pic(9) = App.Path & "\pic\10.gif"
End SubPublic Sub doloop()
Call collect
iRecord = i
Do While True
Sleep 1000
Call collect
iagain = i
If iagain = iRecord Then
ledDI(iagain).Value = 1
ledDO(iagain).Value = 1
Exit Do
Else
iRecord = iagain
End If
Loop
End Sub Public Sub collect()
i = 0
Do Until ZT8403_DIBit(m_cardNO, i + 1) = 1
i = i + 1
If i = m_chCount Then i = 0
LoopEnd SubPublic Sub review()
Do Until ZT8403_DIBit(m_cardNO, iagain + 1) = 0
Loop
Call doloop
End Sub
解决方案 »
- 急需帮忙,怎么实现关键字搜索并统计
- vb 执行网页脚本获得内容(不是读源代码获得)
- 关于Xtreme SuitePro ActiveX 2009 (13.2.1)
- 我用VB+SQL SERVER 2000编写的一个程序,在我的机器上运行正常,但打包后安装到与我在同一个局域网中的另一台机器时,报告“SQL SERVER
- &&&&&这个版块好冷清呀,怎么好象没人了&&&&&
- 求高手帮看下,上面代码实现10进制与16进制的互转,10转16没问题,现在就是16进制输入小写的时后转不过来,跪求啊!
- 怎么获得本地计算机名?
- 怎样取出当前系统所在的盘符呢?
- 请程序员进来看看,(进着有分)
- 这句话那错了?
- 请教高手解答!运行这段代码,就进入死循环!
- 关于利用MAPI发送邮件的问题
Me.Left = (Screen.Width - Me.Width) / 2
Me.Top = (Screen.Height - Me.Height) / 3
If ZT8403_GetCardCount() <= 0 Then
MsgBox "打开设备失败,找不到此类板卡。" & vbCrLf & _
"可能是未插卡或未安装驱动"
End ****这个是干嘛的
End If
回ldq,那个end是例程上拷过来的,我的那段程序也有,我的程序运行正常。
回clear_zero,不知道怎么加断点。
个人非常不喜欢sleep,会导致程序挂起
Call ZT8403_OpenDevice(m_cardNO)___________________!可能在这两处出错了,使程序一直在打开板卡中
If ZT8403_OpenDevice(m_cardNO) <> 0 Then_______!
MsgBox "打开设备失败,找不到指定的板卡。"
Exit Sub
End If
ZT8403_DOAll m_cardNO, &H0
pic(0) = App.Path & "\pic\1.gif": pic(1) = App.Path & "\pic\2.gif": _
pic(2) = App.Path & "\pic\3.gif": pic(3) = App.Path & "\pic\4.gif": _
pic(4) = App.Path & "\pic\5.gif": pic(5) = App.Path & "\pic\6.gif": _
pic(6) = App.Path & "\pic\7.gif": pic(7) = App.Path & "\pic\8.gif": _
pic(8) = App.Path & "\pic\9.gif": pic(9) = App.Path & "\pic\10.gif"
i = 0
Do Until ZT8403_DIBit(m_cardNO, i + 1) = 1
i = i + 1
If i = m_chCount Then i = 0
LoopEnd SubPublic Sub review()
Do Until ZT8403_DIBit(m_cardNO, iagain + 1) = 0
Loop
Call doloop
End Sub这里的ZT8403_DIBit()调用的返回值是否有问题?硬件相关API的设计,一般很少做成阻塞式的.PS:下断点,按F9键.
回ldq,我的程序里也有这两处,运行正常。
回myjian,周二到学校去下断点试试。因为家里的电脑没有板卡。
回xx22nn,我们用新学的VB编程做毕业设计,不知道如何从新设计代码,思路是不断循环扫描直到某一通道开关量为1,这时根据通道号做相应的动作。(要不然还有什么方法知道哪个通道有信号啊)
原程序比贴出来的这个还多加点东西(贴出来的也运行失败了),因为检测到某通道号信号为1后就退出循环了,对开关量变化不再做出响应,课题是轨道交通站点信号采集与展示,人踩在一个站点上得到相应信息后可能再踩在另一个站点上希望得到另一个站点的信息。和导师讨论一下,导师的意思是采集到信号后启动另一个程序不断检测刚才那个站点通道信号是否为0(人有没有离开那个站点),为0了再做doloop的那个循环。
总之循环套循环,难怪机器会想不开,有没有什么好的思路啊?
极个别的没有。用循环扫描几次还可以,一直扫描用Timer定时检查可以的。不断循环扫描直到某一通道开关量为1,这时根据通道号做相应的动作。(要不然还有什么方法知道哪个通道有信号啊)
一句一句运行发现程序直接从Do Until ZT8403_DIBit(m_cardNO, i + 1) = 1跳到End Sub而外部没有信号给它是低电平。