8

我编写了一个独立的应用程序,通过 RS-232 端口控制设备,一些客户希望能够将设备与 LabVIEW 一起使用。我已经看到一些线程描述了学习使用 LabVIEW 时从哪里开始,但我想知道是否有人有为 LabVIEW 编写插件/驱动程序(这是正确的词吗?)的经验,也许会为我指明正确的方向。

现有的应用程序是 GUI,它允许人们使用更高级别的概念来控制设备 - 而不必知道串行端口通信的语法和协议。我也想把它抽象出来,以便用户可以将一些东西插入LabVIEW,我想它公开了一些允许操作设备并向客户端提供数据的动词和方法。

我认为 LabVIEW 有一个串行端口接口,但我确信使用此设备的人不想编写代码(解析器等)来与设备通信。

4

5 回答 5

8

如果您准备花一点时间学习如何在 LabVIEW 中编程,可以在此处此处找到有关如何开发仪器驱动程序的相关信息 。

本质上,您应该提供一组 VI(LabVIEW 代码单元)来实现您的设备支持的各种操作。LabVIEW 程序员将使用您的 VI 应提供的 VISA 资源(即串行端口)和错误输入/输出终端将这些序列链接在一​​起。有关示例,请参见第二个链接。

如果您不想学习如何正确地执行此操作(您的第二篇文章建议您不要这样做),请创建一个公开必要功能的 DLL,或委托 LabVIEW 程序员为您编写驱动程序。如果您可以提供足够的协议文档并且它不是非常复杂,那么应该花一个下午的时间。如果您有热衷于 LabVIEW 的用户,那么他们中的某个人可能会很乐意为您完成这项工作并获得适当的折扣或奖励 - 对于任何有 LabVIEW 能力的人来说,这样做真的不难,而且他们已经掌握了他们的手在您的设备上并了解它的作用。您可能想先与其他 LabVIEW 用户一起对结果进行 Beta 测试,因为您无法评估他们自己所做工作的质量。

如果你走 DLL 路线,你需要检查你需要的参数是否与 LabVIEW 数据类型兼容。我不是 C/C++ 程序员,所以我无法详细告诉您这意味着什么,但这可能会有所帮助(Rolf Kalbermatter 是 LabVIEW 与外部代码接口方面的专家)。

如果您想找一位 LabVIEW 程序员,那么 National Instruments 可以通过他们的联盟计划为您推荐一位。

(编辑添加了关于为 LabVIEW 编写 DLL 的 LAVA 论坛帖子的链接)

于 2008-10-27T16:03:20.193 回答
3

您尝试执行的操作有两种选择。

  • 创建设备用户可以从 LabVIEW 调用的 DLL 。

  • 在 LabVIEW 中重写您的应用程序。

为了吸引尽可能多的潜在客户,选项 #1 将是您的最佳解决方案。如果您的客户特别要求 LabVIEW 驱动程序,那么选项 #2 可能是该特定客户最省事的。这样做的原因是 LabVIEW 在很大程度上是一种小众语言(用于自动化和数据采集),对于许多 LabVIEW 开发人员来说,它是他们唯一知道的语言(或者他们唯一熟悉的语言)。

于 2008-10-22T20:27:11.107 回答
3

LabVIEW 可以轻松处理 RS232 通信——您只需向客户提供设备使用的命令和语法列表,或许还需要一个小型框架或具有基本功能的示例 VI。

我为你想要提供一个不需要用户解析他们自己的命令的更强大的驱动程序而鼓掌;大多数供应商通常所说的LabVIEW“驱动程序”只不过是捆绑在一个简单的GUI中的几个命令(“init”、“read”)。

您不必重新构建完整的应用程序,只需给他们足够的资源让他们自己开始 =)

首先,您可能需要在 LabVIEW 中使用 VISA

于 2008-10-23T19:42:54.173 回答
2

LabVIEW 程序员的最佳资源是National Instruments 知识库。由于 LabVIEW 仅在这么小的部分中流行,因此没有很多其他网络资源。

我在 LabVIEW 中编程时读过的一本书是LabVIEW Power Programming。它有很多很好的示例代码,如果我没记错的话,它向您展示了如何使用用 C++ 编写的 3rd 方 DLL。但是,它绝对没有向您展示如何编写这些 DLL。

于 2008-10-22T23:33:58.577 回答
0

您的客户希望在 LabVIEW 中使用您的代码。这并不意味着您必须编写 LabVIEW 代码。

LabVIEW 可以与 DLL 交互。这里的技巧是避免更复杂的数据结构。如果您继续按基本数据类型的值传递,您将没有问题。LabVIEW 也可以处理与 DLL 之间的数组。避免指向指针或指向结构的指针。

LabVIEW 还可以与 .NET 程序集交互。

也没有什么可以阻止您通过 TCP/IP 使用客户端/服务器模型。

于 2015-12-02T17:05:58.147 回答