InstrumentComponents.OpenTap
0.1.1
dotnet add package InstrumentComponents.OpenTap --version 0.1.1
NuGet\Install-Package InstrumentComponents.OpenTap -Version 0.1.1
<PackageReference Include="InstrumentComponents.OpenTap" Version="0.1.1" />
<PackageVersion Include="InstrumentComponents.OpenTap" Version="0.1.1" />
<PackageReference Include="InstrumentComponents.OpenTap" />
paket add InstrumentComponents.OpenTap --version 0.1.1
#r "nuget: InstrumentComponents.OpenTap, 0.1.1"
#:package InstrumentComponents.OpenTap@0.1.1
#addin nuget:?package=InstrumentComponents.OpenTap&version=0.1.1
#tool nuget:?package=InstrumentComponents.OpenTap&version=0.1.1
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)
- Install NI-VISA, Keysight IO Libraries, or another stack that provides VISA.NET compatible with
IviFoundation.Visa8.x. - 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 | Versions 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. |
-
net8.0
- InstrumentComponents (>= 0.1.1)
- OpenTAP (>= 9.32.2)
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 | 374 | 10/6/2026 |