请问一下各位:
  VB是靠事件驱动机制运行的,比如click后执行某个函数,想请教一下有没有办法令该函数
在不影响其经操作的情况下一直执行?就是让程序在每个扫描周期都执行,如同像在DOS
下的BASIC编程一样,也就是和PLC一样的效果.
  我现在有一块I/O卡,要一直检测外部的的急停开关的状态,一直发现急停开关被按下,即
I/O卡读回来的数据为0,则要马上封锁输出。我有想过用timer用触发事件,但这样做太慢了。
我要马上读来I/O卡的电平变化。请问有什么办法?

解决方案 »

  1.   


    就一个I/O卡,没有什么通讯机机制,VB怎么实现多线程?
      

  2.   

    用Timer控件不行吗?
      

  3.   

    奇葩的解决思路, 只会让你钻牛角尖.
    time控件差不多最高能达到10ms的精度, 如果你还觉得来不及, 那就不要尝试用VB解决这个问题了. 一般而言, 实时系统你可以用C或C++之类的"低级语言"直接写控制层, 然后再另外写人机交互(但是这对于低级语言而言又太麻烦)实际上PLC运行也不是靠什么工控机里面的程序来控制的, 它自带存储和处理器, 工控机只是用来给使用者控制参数或者处理后期数据用的.你这个程序可以这样: C写个I/O卡的基本控制程序后台运行, 然后再通过其他方式和VB程序通讯, 用户只和VB程序打交道, 通讯方式非常多, 你甚至可以用网络协议从其他电脑来控制.
      

  4.   

    那你就直接DO WHILE ** LOOP吧,不停的处理,这样最快
    TIMER精度10毫秒,那你可以用SLEEP 1这样就 只停一秒,再检测
      

  5.   

    那你就直接DO WHILE ** LOOP吧,不停的处理,这样最快
    TIMER精度10毫秒,那你可以用SLEEP 1这样就 只停一毫秒,再检测
      

  6.   

    设计思路有问题,timer精度大约在15ms,连上代码时间大约在30ms以内,
    如果这样的时间精度还是不够的话,设备通讯上的时间也需要考虑进去了,来回一次通讯可能会占用5~10ms
    真时间要求这么高,可能用VB或者用PC都不合适了。