VB中多媒体定时器用法提问
使用VB进行数据采集编程时,遇到问题。由于所采集的油压,位移量变化很快,使用系统定时器速度慢,所以用多媒体定时器编写定时采集程序,在多媒体体定时器的回调函数里,使用Active DAQ控件进行数据采集,
回调函数内的语句很简单,就两句数据采集语句。整个程序在编译集成环境内可以运行(即点编译集成环境内的启动按钮,程序可以稳定运行,采集数据),但是,将程序生成执行文件(exe文件),则程序运行至回调函数内的数据采集语句时,就报错,程序跳出来不能运行了。将多媒体定时器的间隔时间调长,10毫秒,500毫秒等都不行。后来,将多媒体定时器换成系统定时器,exe执行文件可以稳定运行,或者在多媒体定时器的回调函数内去掉Active DAQ控件数据采集语句,换成简单的语句(譬如某个变量值循环累加),exe执行文件任然可以稳定运行。 看来多媒体定时器不能与Active DAQ控件数据采集语句一起使用?那在VB里面怎么能实现快速数据采集呢?是否要将Active DAQ控件换成dll方式进行数据采集编程呢?大家在数据采集开发过程中遇到这种情况吗?请不吝赐教,非常感谢。 --------------------编程问答-------------------- VB使用多媒体定时器很讲究的,会玩VB多线程才能玩多媒体定时器,因为多媒体定时器是新线程回调函数,呵呵.研究一下VB多线程你就明白为什么EXE会崩溃了. --------------------编程问答-------------------- 如果你在IDE环境下运行不会有问题,那么可以尝试将工程编译为P代码看看.
P代码对于这种多线程情况下的支持比本地代码要好,不过会损失些性能,先让它能正常运行起来再说吧.
另外,高精度的定时,也可以自己使用GetTickCount来完成.
补充:VB , API