如何在 NI 软件和硬件中使用 gRPC

更新 Sep 30, 2023

环境

操作系统

  • Windows
  • Linux
  • LabVIEW Real-Time (NI Linux Real-Time)

程式语言

  • LabVIEW G
  • Python
  • C# .NET

其他

gRPC

本文旨在解释 NI 如何使用 gRPC,gRPC 是什么,它如何适应 NI 生态系统,当前的可能性和选项是什么,NI 提供哪些支持。

什么是 gRPC?


“gRPC 是一种现代开源高性能远程过程调用 (RPC)框架,可以在任何环境中运行。它可以有效地连接数据中心内和跨数据中心的服务,并提供对负载平衡、跟踪、健康检查和身份验证的可插拔支持。它也是适用于分布式计算的最后一英里,将设备、移动应用程序和浏览器连接到后端服务。”

grpc.png
1. 为什么使用 gRPC
在 gRPC 中,客户端应用程序可以像本地对象一样直接调用不同机器上的服务器应用程序上的方法,使您可以更轻松地创建分布式应用程序和服务。与许多 RPC 系统一样,gRPC 是基于定义服务的思想,指定可以使用参数和返回类型远程调用的方法。在服务端,服务端实现了这个接口,运行一个gRPC服务端来处理客户端调用。在客户端,客户端有一个存根(在某些语言中简称为客户端),它提供与服务器相同的方法。

服务.png
2. gRPC 概述

如需更多信息和更完整的深入了解,请访问 gRPC Link的官方网站。

gRPC 如何融入 NI 生态系统?


gRPC 可用于控制不需要持续物理存在的远程系统。使用基于 gRPC 的服务器可以从许多不同的编程环境、平台和操作系统访问和控制测试和测量。

服务.png
3. NI系统的gRPC
随着 NI 成长为一家“软件连接”公司,我们正在利用最佳工具和方法进行数据共享和过程控制,以满足客户的要求和需求。通过使用 gRPC 作为 NI 的 Remote-Ability 工具,可以带来以下好处:
  • 远程控制 NI 硬件和软件。
  • 尽量缩短首次测量的时间。
  • 利用现有的工作流程。
  • 避免在客户端系统上安装驱动程序。

当前的可能性和选择


目前,根据硬件和软件使用的类型,有多种方法可以将 gRPC 与 NI 仪器一起使用:
  1. 自定义 - 具有自定义第 3 方编程语言的 NI 硬件
  2. NI gRPC 设备服务器和客户端 API
  3. gRPC 与 LabVIEW

自定义 - 具有自定义第 3 方编程语言的 NI 硬件


如果您打算使用官方支持 gRPC 的编程语言,如 Python、C#(.NET) 等,那么您可以在 NI Python 或 .NET 驱动程序的帮助下构建您的服务器:

grpcustom.png
4. gRPC 自定义解决方案

这个选项非常简单,因为 gRPC 工具和 NI 驱动程序都是本地的,并且得到官方支持和维护。您可以从一个环境创建和实施 gRPC 服务器和仪器控制。唯一的限制是并非每个驱动程序都直接支持 Python 或 .NET。
服务器客户
由客户创建和维护,编程语言也由客户选择。由客户创建和维护,编程语言也由客户选择。

NI gRPC 设备服务器和客户端 API


grpc设备.png
5. NI gRPC 设备

NI gRPC 设备服务器和客户端 API

“服务器和客户端 API 允许使用客户端/服务器架构通过预定义 API 通过远程接口访问和控制 NI 的仪器。API 不是驱动程序,而是现有驱动程序 C API 之上的一层,提供远程功能。它提供软件功能,允许使用客户端/服务器架构在多个平台上通过预定义的 API 通过远程接口访问和控制 NI 的仪器。它包含 NI 设备 gRPC 服务器和 .proto 文件,可以用于生成客户端与服务器交互所需的接口以及连接到服务器的支持设备。”

该解决方案由NI R&D创建并提供支持,这意味着NI技术支持有能力帮助客户解决问题,并不断维护和开发。
服务器客户
由 NI 创建和维护/支持。由客户使用客户选择的编程语言创建和维护

gRPC 与 LabVIEW


LabVIEW 的 gRPC 支持

此 repo 包含必要的 C++ 代码和支持 VI,以在 LabVIEW 中实现 gRPC 服务器和客户端。您可以使用定义的服务通过 gPRC 实现通用服务器,也可以使用该实现作为模式来实现您设计的 gRPC 服务。它支持 Windows、Linux 和 Linux RT 目标。

grpclabview.png
6. LabVIEW 中的 gRPC
这个工具让你有可能像 Python 和其他支持的语言的工具一样创建你的 gRPC API。局限性在于它是由 NI 创建的“按原样”工具,但不提供直接支持。
服务器客户
由客户在 LabVIEW 中创建和维护。由客户在 LabVIEW 中创建和维护。