2017-05-21 375 views
0

我需要能够通过命令提示符(Windows 7操作系统)关闭COM端口。原因是我使用了很多实验设备,并使用称为LabVIEW的语言进行控制,并且与这些设备的通信有时会丢失。现在唯一的解决方法是在设备管理器中重命名COM,或重启。理想情况下,我想关闭命令提示符下的端口,我可以在我的控制软件中以编程方式实现该端口。用命令提示符关闭COM端口

有谁知道;如何在命令提示符下关闭COM端口,或者关闭COM端口的快捷方式,那么我可以重新建立与设备的连接?

干杯!

+0

从我的经验的LabVIEW叶COM端口打开(打开一次),只要的applcation运行。您是否尝试过使用任务管理器来清除所有LabVIEW应用程序? –

+0

不,您可以使用适当的关闭VISA会话命令关闭端口。但问题通常是在程序运行时间结束时放置它,所以如果你的设备出现故障,那么程序当然永远不会到达最终阶段的事件。 – QuantumPenguin

回答

0

我不认为你可以简单地关闭另一个程序正在使用的资源,这无疑会导致错误。正确编程LabVIEW不应该让端口处于打开状态,即使端口处于打开状态,只需关闭labview就足够了。

在LabVIEW中以编程方式打开和关闭COM端口,不要依赖于VISA系统的自动关闭。同时为串行连接添加超时,比你应该得到一个连接错误超时并能够清理资源。

基本上你需要在原点解决你的问题,如果需要帮助发布你的LabVIEW代码。

假设您在while循环中从串行端口读取数据,只要在发现错误时停止while循环,请参阅代码片段。这会停止循环,并且不管错误如何,资源都将在循环外部关闭。

enter image description here

+0

当设备正常工作时,没有问题,当程序关闭并再次重新启动时,所有设备都可以与控制PC进行通信,而不会出现任何问题。问题是如果一个设备出现故障并需要重新启动,那么COM就会被打开。当程序正常结束时,每个设备都有相应的关闭VISA会话。问题是,当一个设备发生故障时,程序显然永远不能发送这个命令。 – QuantumPenguin

+0

这就是超时进入的地方。如果你添加一个超时,你可以在设备发生故障时捕获超时,并且从这样一个错误中正常恢复,那么串行通信的超时时间现在设置为无穷大(或LV为-1) 。 –

+0

@ D.J. Klomp谢谢你的建议,我会试试看看会发生什么。 – QuantumPenguin