如何在 python 中为 labview 应用程序实现看门狗
how to implement a watchdog for a labview application in python
我有一个 labview 应用程序(2013 32 位)会 运行 很长一段时间,有时整个 labview 应用程序会因不明原因崩溃。我想做的是编写一个外部 python 脚本,作为这个 labview 应用程序的看门狗。
所以 labview 应用程序会定期向 python 脚本发送一个位,如果 python 脚本没有收到,它会向我发送一个警报。
问题是如何最轻松地实现这种单向通信。看起来我可以使用 dynamic data exchange,但这似乎有点矫枉过正。一种愚蠢的方法就是读取和写入文本文件。双方实际上都没有直接的沟通方式。但这似乎并不完全可靠。
有没有更好更简单的替代方案?
为什么要使用 IPC?根据您 运行 使用的系统,应该有监控 运行 进程的方法(例如 here)。您的 python 脚本可以检查您的 labview 应用程序是否为 运行。如果它检测到所需的进程已终止,您甚至可以重新启动。
如果我在你那里,我只会每 5 秒发送一次本地 UDP 数据包。
如果您的架构是模块化的,您可以从每个模块向看门狗模块发送信号(以确保每个模块都是 运行)。
我认为最好的方法是评估问题并使您的 LabVIEW 应用程序 运行 稳定。可以肯定的是,您的代码中有些东西会导致 LabVIEW 崩溃(例如,某些队列已满,您的编写器端点会无限等待)。
我有一个 labview 应用程序(2013 32 位)会 运行 很长一段时间,有时整个 labview 应用程序会因不明原因崩溃。我想做的是编写一个外部 python 脚本,作为这个 labview 应用程序的看门狗。
所以 labview 应用程序会定期向 python 脚本发送一个位,如果 python 脚本没有收到,它会向我发送一个警报。
问题是如何最轻松地实现这种单向通信。看起来我可以使用 dynamic data exchange,但这似乎有点矫枉过正。一种愚蠢的方法就是读取和写入文本文件。双方实际上都没有直接的沟通方式。但这似乎并不完全可靠。
有没有更好更简单的替代方案?
为什么要使用 IPC?根据您 运行 使用的系统,应该有监控 运行 进程的方法(例如 here)。您的 python 脚本可以检查您的 labview 应用程序是否为 运行。如果它检测到所需的进程已终止,您甚至可以重新启动。
如果我在你那里,我只会每 5 秒发送一次本地 UDP 数据包。
如果您的架构是模块化的,您可以从每个模块向看门狗模块发送信号(以确保每个模块都是 运行)。
我认为最好的方法是评估问题并使您的 LabVIEW 应用程序 运行 稳定。可以肯定的是,您的代码中有些东西会导致 LabVIEW 崩溃(例如,某些队列已满,您的编写器端点会无限等待)。