【问题标题】:LabVIEW "driver" - getting startedLabVIEW“驱动程序” - 入门
【发布时间】:2015-12-03 01:05:58
【问题描述】:

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

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

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

【问题讨论】:

    标签: labview


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 谢谢。当我们有时间去做的时候,我一定会以正确的方式去做。我只是假设让它工作起来相当简单。
    【解决方案2】:

    对于您想要做的事情有两种选择。

    • 创建一个 DLL,您的设备用户可以call from LabVIEW

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

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

    【讨论】:

      【解决方案3】:

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

      我赞赏您希望提供一个更强大的驱动程序,该驱动程序不需要用户解析自己的命令;大多数供应商通常所说的 LabVIEW“驱动程序”只不过是捆绑在一个简单 GUI 中的几个命令(“init”、“read”)。

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

      要开始使用,您可能需要使用VISA in LabVIEW

      【讨论】:

      • 谢谢 - 我了解 LV 支持 rs232,就像你说的,我想让设备的使用变得非常简单。 (我不是设备 mnfgr - 只是满足(微小)需求的开发人员)
      【解决方案4】:

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

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

      【讨论】:

      • 是的 - 这就是我发现的问题。我会尝试在该网站上查找更多信息。
      【解决方案5】:

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

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

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

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

      【讨论】:

      • Hallo Jeffry,你知道如何通过 TCP/IP 编写 Siemens S7 电报头吗,是否只是在 labview 中打开 TCP/IP 并编写 S7 Fetch/Write 电报并发送它?整个 Fetch 或 Write 标头包含数据将是 ADU(应用程序数据单元)?还是在通过 tcp/IP 发送之前有更多标头?欣赏,真诚。
      猜你喜欢
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多