NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

运行Labview程序时,计算机蓝屏

请教一个问题,我现在用labview做CAN板卡的驱动。该板卡的原驱动是用VC++写的,提供DLL,其中DLL中有发送和接收函数。

 

我的lv程序中主要是两个while循环,一个是发送循环、另一个是接收循环,分别包含发送和接收函数。 两个while循环中加100ms定时器后,连接板卡调试、运行lv程序、cpu利用率为2%。

    停止运行、第二次继续运行lv程序时,cpu利用率为100%,初始化完板卡后、执行发送函数时,计算机会蓝屏;执行接收函数时,labview会死掉。

关闭lv重新打开运行,cpu利用率为2%,通信正常。不连接板卡时,没有上述问题。

 

1.请帮我分析一下上述的情况。 2.连接板卡、运行lv程序时,为什么会出现计算机蓝屏。谢谢!!!

0 项奖励
1 条消息(共 8 条)
6,382 次查看

感觉像是驱动的问题,会不会是在调用了硬件资源之后没有释放的原因啊

0 项奖励
2 条消息(共 8 条)
6,329 次查看

在程序的最后把CAN设备完毕了,硬件资源应该释放了吧!我现在把 while循环中的停止按钮去掉了,要停止程序时就关闭界面,这样第二次打开lv并运行时就不会蓝屏了。不知道直接关闭lv界面会有什么不良影响?

0 项奖励
3 条消息(共 8 条)
6,324 次查看

我猜想是您的驱动没有释放对硬件的占用(一般不都有close释放的函数吗)。而关闭这个vi应该是对于DLL的占用完全的释放了,这样估计您的DLL对硬件的释放也就释放了,所以就没有问题了。

建议您查看一下您的驱动了,问题应该是那里的资源没有释放引起的。

District Sales Manager | Shanghai Pudong, China
0 项奖励
4 条消息(共 8 条)
6,298 次查看
你指得得关闭界面是指关闭整个vi还是仅仅把vi的前面板隐藏了?如果是前者的话,觉得应该是被vi占用了一些资源,在关闭之后才能释放,要不就会出错;如果是后者的话,应该没有什么关系啊
0 项奖励
5 条消息(共 8 条)
6,291 次查看

我指的的是x调VI前面板,把VI给关了。我就是用调用库函数节点来调用厂商给提供的DLL,在程序的最后一步复位并关闭了CAN设备,程序停止后就应该把CAN设备的硬件资源释放了。没关闭VI时怎么会占用资源呢?

0 项奖励
6 条消息(共 8 条)
6,284 次查看

rui_huang您让我查看的驱动指的是什么?我在lv程序的最后一步“复位并关闭了CAN设备”(和您说的close函数类似吧),那么lv程序停止后,CAN设备的硬件资源应该通过 复位并关闭CAN设备 而已经释放了呀?为什么要把VI关掉后,才会释放硬件资源呢?

 

如果我每次正常停止lv后关闭VI、再打开运行,这样有时会忘记。说服不了别人。

如果我把正常停止按钮去掉,每次要停lv时就把VI前面板直接关掉,这样会造成程序的中断,部分运行数据丢失。难呀!

0 项奖励
7 条消息(共 8 条)
6,281 次查看
你有在别的环境下面试着调用这个dll进行操作吗?感觉是close函数有问题,或者程序中没有很好的执行到。
District Sales Manager | Shanghai Pudong, China
0 项奖励
8 条消息(共 8 条)
6,252 次查看