请教一个问题,我现在用labview做CAN板卡的驱动。该板卡的原驱动是用VC++写的,提供DLL,其中DLL中有发送和接收函数。
我的lv程序中主要是两个while循环,一个是发送循环、另一个是接收循环,分别包含发送和接收函数。 两个while循环中加100ms定时器后,连接板卡调试、运行lv程序、cpu利用率为2%。
停止运行、第二次继续运行lv程序时,cpu利用率为100%,初始化完板卡后、执行发送函数时,计算机会蓝屏;执行接收函数时,labview会死掉。
关闭lv重新打开运行,cpu利用率为2%,通信正常。不连接板卡时,没有上述问题。
1.请帮我分析一下上述的情况。 2.连接板卡、运行lv程序时,为什么会出现计算机蓝屏。谢谢!!!
我猜想是您的驱动没有释放对硬件的占用(一般不都有close释放的函数吗)。而关闭这个vi应该是对于DLL的占用完全的释放了,这样估计您的DLL对硬件的释放也就释放了,所以就没有问题了。
建议您查看一下您的驱动了,问题应该是那里的资源没有释放引起的。
rui_huang您让我查看的驱动指的是什么?我在lv程序的最后一步“复位并关闭了CAN设备”(和您说的close函数类似吧),那么lv程序停止后,CAN设备的硬件资源应该通过 复位并关闭CAN设备 而已经释放了呀?为什么要把VI关掉后,才会释放硬件资源呢?
如果我每次正常停止lv后关闭VI、再打开运行,这样有时会忘记。说服不了别人。
如果我把正常停止按钮去掉,每次要停lv时就把VI前面板直接关掉,这样会造成程序的中断,部分运行数据丢失。难呀!