InstrumentComponents.OpenTap 0.1.1

dotnet add package InstrumentComponents.OpenTap --version 0.1.1
                    
NuGet\Install-Package InstrumentComponents.OpenTap -Version 0.1.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="InstrumentComponents.OpenTap" Version="0.1.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="InstrumentComponents.OpenTap" Version="0.1.1" />
                    
Directory.Packages.props
<PackageReference Include="InstrumentComponents.OpenTap" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add InstrumentComponents.OpenTap --version 0.1.1
                    
#r "nuget: InstrumentComponents.OpenTap, 0.1.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package InstrumentComponents.OpenTap@0.1.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=InstrumentComponents.OpenTap&version=0.1.1
                    
Install as a Cake Addin
#tool nuget:?package=InstrumentComponents.OpenTap&version=0.1.1
                    
Install as a Cake Tool

InstrumentComponents (.NET)

C# packages for instrument-components over vendor-neutral IviFoundation.Visa. Same discovery, SCPI, and typed-class contracts as the Rust crates.

See docs/dotnet-getting-started.md for the IVI-alternative pitch and full walkthrough.

Packages

Package Role
InstrumentComponents Discovery, typed classes (DMM, PSU, FGen, oscilloscope, switch, counter, power meter, spectrum analyzer), mocks — no VISA runtime (net8.0)
InstrumentComponents.OpenTap OpenTAP plugin: eight instrument types + typed function steps. Host injects IScpiIo; no VISA.
InstrumentComponents.OpenTap.Visa Optional companion: registers a VISA IOpenTapScpiIoProvider for TUI-without-host. Not in the TapPackage.
InstrumentComponents.Visa VISA transport via IviFoundation.Visa (net8.0; Windows or Linux with a vendor VISA install)

The net8.0 libraries can be consumed by .NET 10 projects. Hardware-free validation covers the .NET 10 runtime, a fresh net10.0 core/VISA NuGet consumer, and the OpenTAP package lifecycle. Native vendor VISA behavior still requires validation on the intended platform and runtime.

Install the core

dotnet add package InstrumentComponents

Mock quick start (CI, no VISA)

dotnet run --project dotnet/examples/MockFixtureCi
using InstrumentComponents.Catalog;
using InstrumentComponents.Kind;
using InstrumentComponents.Mock;

var fixture = ScriptedFixture.Builder()
    .Idn("Acme Corp", "SMU2602", "SN001", "1.0")
    .Kinds(InstrumentKind.Dmm, InstrumentKind.DcPowerSupply)
    .OnQuery(":MEAS:VOLT:DC?", "3.300")
    .Build();

var catalog = DeviceCatalog.FromFixture("mock://smu-1", fixture);
var dmm = catalog.OpenDmm("mock://smu-1");
var volts = dmm.MeasureVoltageDc();
Console.WriteLine($"{volts} V");

Install OpenTAP integration

For a C# host, install InstrumentComponents.OpenTap from NuGet. Standalone VISA hosts can also install InstrumentComponents.OpenTap.Visa.

For the OpenTAP Editor/TUI, download the versioned .TapPackage from the GitHub release and install it with tap package install <file>.TapPackage. Each release attaches this artifact automatically. It bundles the core library; the optional VISA companion is distributed separately through NuGet.

OpenTAP mock plan (no VISA)

dotnet run --project dotnet/examples/OpenTapMockPlan

See the C# OpenTAP pack guide.

Hardware quick start (Windows or Linux + VISA)

  1. Install NI-VISA, Keysight IO Libraries, or another stack that provides VISA.NET compatible with IviFoundation.Visa 8.x.
  2. Install the core and VISA packages from your chosen feed:
dotnet add package InstrumentComponents
dotnet add package InstrumentComponents.Visa

Repository examples (from a source checkout):

dotnet run --project dotnet/examples/Discover
using InstrumentComponents.Visa;

var catalog = VisaDiscovery.Create().Scan();
catalog.PrintSummary();

var dmm = catalog.OpenDmm(catalog.DevicesByKind(InstrumentComponents.Kind.InstrumentKind.Dmm)[0].Address.Raw);
var volts = dmm.MeasureVoltageDc();

Async quick start

var catalog = DeviceCatalog.FromFixture("mock://dmm", fixture);
var dmm = await catalog.Device("mock://dmm").OpenDmmAsync();
var volts = await dmm.MeasureVoltageDcAsync();

Note: VisaAsyncTransport is a sync bridge (thread-pool offload), not vendor APM. Details: docs/visa-async-csharp.md.

Examples

Project Requires VISA
examples/MockFixtureCi No
examples/MockFixtureCiAsync No
examples/Discover Yes
examples/DiscoverAsync Yes
examples/DmmMeasure Yes
examples/ManualTcpip Yes
examples/AssignInstruments Yes

Testing

cd dotnet
dotnet test tests/InstrumentComponents.Tests
dotnet test tests/InstrumentComponents.Visa.Tests --filter "Category!=Hardware"
dotnet test tests/InstrumentComponents.OpenTap.Tests
dotnet test tests/InstrumentComponents.OpenTap.Visa.Tests --filter "Category!=Hardware"

Registry / shared-table drift check

deno run --allow-read --allow-write dotnet/tools/gen-registry.ts
deno run --allow-read --allow-write tools/gen-shared-tables.ts
git diff --exit-code
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on InstrumentComponents.OpenTap:

Package Downloads
InstrumentComponents.OpenTap.Visa

Optional VISA I/O provider for standalone InstrumentComponents OpenTAP execution.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.1 375 10/6/2026