如何在 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 中創建和維護。