【问题标题】:Closing a COM port with command prompt使用命令提示符关闭 COM 端口
【发布时间】:2017-05-21 00:36:31
【问题描述】:

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

有人知道吗?如何在命令提示符下关闭 COM 端口,或者快速简便的关闭 COM 端口的方法,以便我可以重新建立与设备的连接?

干杯!

【问题讨论】:

  • 根据我的经验,只要应用程序正在运行,LabVIEW 就会保持 COM 端口打开(一旦打开)。您是否尝试过使用任务管理器杀死所有 LabVIEW 应用程序?
  • 不,您可以使用适当的关闭 VISA 会话命令关闭端口。但问题是通常将其放置在程序运行时间结束时,因此如果您的设备出现故障,那么程序当然永远不会到达其结束阶段事件。

标签: windows port command-prompt


【解决方案1】:

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

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

如果需要帮助发布您的 LabVIEW 代码,您基本上需要从源头解决问题。

假设你在一个while循环中从串口读取,只要发现错误就停止while循环,见代码sn-p。这将停止循环,并且无论错误如何,资源都将在循环外关闭。

【讨论】:

  • 当设备正常运行时,没有问题,当程序关闭并重新启动时,一切都可以与控制PC通信,没有问题。问题是如果设备出现故障并需要重新启动,那么 COM 就会卡在打开状态。当程序正常结束时,每个设备都有相应的关闭 VISA 会话。问题是当设备出现故障时,程序显然永远无法发送此命令。
  • 这就是超时出现的地方。我猜串行通信的超时现在设置为无穷大(或 LV 中的 -1),如果您添加超时,您可以在设备发生故障时捕获并从此类错误中优雅地恢复。
  • @D.J. Klomp 感谢您的建议,我会试试这个,看看会发生什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-16
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多