2

我正在使用专有协议通过 USB 进行通信,并使用我构建的一些自定义硬件。我有一个 GUI 可以处理与该硬件的所有通信/交互,还有一个 (C#) DLL,它公开了所有相关的 USB 功能。我需要编写一个LabVIEW驱动程序(VI)来与硬件通信。我的想法是,我只是使用 LabVIEW 来打开我的 GUI 并有一个套接字,通过它我可以向 LabVIEW 公开所有相关控件。是否可以在 LabVIEW 中打开套接字并与我的 GUI 通信?这是一种不好的方法,还是我应该尝试让 LabVIEW 调用 DLL 并处理硬件控制而不是我的 GUI(轮询通信、请求/主动命令等)?

4

3 回答 3

5

您是否有理由只想使用您的 GUI?就时间而言,我会说在 LabVIEW 中构建一个好的前面板,然后直接使用 DLL 与硬件通信。添加 GUI 只是增加了一层复杂性,以后可能难以维护?如果可以,为什么不在LabVIEW中做所有事情呢?

于 2011-04-15T06:02:40.443 回答
2

是的,LabVIEW 支持使用 TCP/IP 和 UDP 的套接字。

您应该能够创建一个作为 TCP/IP 服务器持续运行的程序/服务。您可以以字符串形式发送命令和接收响应。如果需要打包数据,可以使用 flatten to string 命令。

本质上,您的应用程序应该构造为一个运行 TCP/IP 服务器的循环,以及另一个与仪器实际通信的循环。如果您需要将数据从设备返回到 TCP 客户端,这可能会发生变化。生产者消费者模型,如果你愿意的话:)

首先,打开 NI Example Finder (Help -> Find Examples) 并浏览至 Networking->TCP and UDP-> Simple Data Server.vi

于 2011-04-14T21:08:18.870 回答
1

这取决于谁将使用 LabVIEW 驱动程序以及用于什么目的。如果您将此硬件移交给想要为其创建自己的应用程序的其他人,他们可能更愿意直接与 DLL 对话,而不是通过您的 GUI。例如,如果更多是关于通过 LabVIEW 自动化现有软件以在硬件上执行测试或重复性任务,那么从 LabVIEW 驱动 GUI 可能会减少工作量。

于 2011-04-15T12:03:16.783 回答