Skip to content

Streaming support for NI Drivers

Ayush Mehra edited this page Dec 5, 2024 · 1 revision

Currently, there are APIs in DAQMx and FPGA that support streaming functionality.

Ideally, Read and Write APIs supports streaming. Here are a few examples of streaming APIs:

DAQ:

  • BeginReadBinaryU16
  • BeginWriteAnalogF64
  • BeginReadPowerBinaryI16

FPGA:

  • BeginReadArrayI64
  • BeginWriteArrayI8
  • BeginReadI32

Check DAQMx and FPGA proto file to see full list of APIs supporting streaming. Streaming APIs have Begin as a prefix followed by the C API name.

Currently, we do not receive any response after calling the Write streaming APIs. However, for Read streaming APIs, we receive a response as part of PackedData. The response looks something like:

message BeginReadArrayI16Response { int32 status = 1; ni.data_monikers.Moniker moniker = 2; }

where status is the result of the API call and moniker is the structure passed in streaming API.

Types of streaming:

StreamRead, StreamWrite, and StreamReadWrite: These all use gRPC streaming to function.

BeginSidebandStream: This uses sideband streaming, which internally utilizes raw sockets for communication.

Check out how to setup a client for streaming here.

Table of Contents

Internal Development

Creating and Setting Up a gRPC Server

Server Security Support

Creating a gRPC Client

gRPC Client Examples

Session Utilities API Reference

Driver Documentation

gRPC API Differences From C API

Sharing Driver Sessions Between Clients

C API Docs
NI-DAQmx
NI-DCPOWER
NI-DIGITAL PATTERN DRIVER
NI-DMM
NI-FGEN
NI-FPGA
NI-RFmx Bluetooth
NI-RFmx NR
NI-RFmx WCDMA
NI-RFmx GSM
NI-RFmx CDMA2k
NI-RFmx Instr
NI-RFmx LTE
NI-RFmx SpecAn
NI-RFmx TD-SCDMA
NI-RFmx WLAN
NI-RFSA
NI-RFSG
NI-SCOPE
NI-SWITCH
NI-TCLK
NI-XNET
Clone this wiki locally