ZahnerLink.Net 26.40.4

dotnet add package ZahnerLink.Net --version 26.40.4
                    
NuGet\Install-Package ZahnerLink.Net -Version 26.40.4
                    
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="ZahnerLink.Net" Version="26.40.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ZahnerLink.Net" Version="26.40.4" />
                    
Directory.Packages.props
<PackageReference Include="ZahnerLink.Net" />
                    
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 ZahnerLink.Net --version 26.40.4
                    
#r "nuget: ZahnerLink.Net, 26.40.4"
                    
#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 ZahnerLink.Net@26.40.4
                    
#: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=ZahnerLink.Net&version=26.40.4
                    
Install as a Cake Addin
#tool nuget:?package=ZahnerLink.Net&version=26.40.4
                    
Install as a Cake Tool

ZahnerLink.Net

NuGet version Documentation

ZahnerLink.Net is the C# / .NET edition of the zahner_link library, which provides comprehensive programmatic control of the Zahner IM7/c/x Electrochemical Workstations. This job-based library enables you to automate complex measurement protocols and integrate electrochemical experiments into your data analysis workflows.

What makes this library particularly powerful is that it uses the exact same C++ core library as Zahner Lab itself. This means you get identical functionality whether you're working in the GUI or writing code, no feature compromises or compatibility issues to worry about.

The same library is also available for Python (zahner_link on PyPI) and C++.

📚 Documentation

The complete documentation is available on the API documentation website, including:

  • A detailed reference for every job, class, and function
  • A dedicated section for the C# API
  • The C# examples, rendered for online browsing

✨ Features

  • Job-based API - build measurements from composable jobs instead of low-level commands
  • Identical core to Zahner Lab - uses the exact same C++ core library as the GUI, so results and capabilities match
  • Cross-platform - one package with the native library for Windows, Linux and macOS

Measurement Techniques

  • Electrochemical Impedance Spectroscopy (auto-generated or custom frequency tables)
  • Potentiostatic and galvanostatic polarization
  • Pulse voltammetry (NPV, DPV, SWV)
  • Current-voltage curves (e.g. Cyclic Voltammetry)
  • Measurements with arbitrary, freely defined excitation signals

Data and Control

  • Live DC and EIS data via .NET events
  • Stop conditions to extend measurement primitives
  • Access to raw EIS waveform data
  • Export to Zahner XML (.zmx), directly openable in Zahner Analysis
  • Encrypted and authenticated TLS connections

Supported Hardware

  • IM7/c/x Electrochemical Workstations
  • Extension cards: PAD42, TEMP-U2, RMUX16, MIO, EPC42

🔧 Installation

dotnet add package ZahnerLink.Net

✅ Requirements

  • .NET 8.0 or later, or .NET Framework 4.8

The package targets net8.0 and net48 and contains the native library for:

  • Windows: x86_64 and x86
  • Linux: x86_64 and ARM64
  • macOS: ARM64 (macOS 26 or later)

🔨 Basic Usage

Connect to the IM7, switch on the potentiostat, run a potentiostatic polarization, save the result as a Zahner XML file and switch off again. The complete, commented version of this example is BasicIntroduction.cs in the zahner_link repository.

using Zahner.Link;
using Zahner.Link.Jobs;

/*
 * Connect to the Zahner IM7 via its IP address and port.
 */
using var link = new ZahnerLink("192.168.1.100", "1994", ConnectionFlags.None, "", "");
link.Connect();

/*
 * Switch on the main potentiostat in potentiostatic mode at 1 V DC.
 * All values use SI base units (volts, amperes, seconds).
 */
using (var parameters = new SwitchOnParameters
       {
           Potentiostat = "MAIN:1:POT",
           Coupling = PotentiostatCoupling.Potentiostatic,
           Bias = 1.0,
           VoltageRangeIndex = 0,
           ComplianceRangeIndex = 0,
       })
using (var switchOn = new SwitchOnJob(parameters))
{
    link.DoJob(switchOn);
}

/*
 * Potentiostatic polarization at 1 V DC for 5 s, exported to Zahner XML format,
 * which can be opened in Zahner Analysis.
 */
using (var parameters = new PogaParameters
       {
           Bias = 1.0,
           Duration = 5.0,
           OutputDataRate = 25,
           Autorange = true,
           CurrentRange = 0.1,
       })
using (var polarization = new PogaJob(parameters))
{
    link.DoJob(polarization);

    using DataSet data = link.GetJobResultData(polarization);
    using var measurement = new Measurement();
    measurement.AppendDataset(data);

    using var exporter = new ZXmlExporter { CompactXml = false };
    exporter.SaveAsFileStandalone(measurement, "polarization.zmx");
}

/*
 * Switch off the potentiostat and disconnect.
 */
using (var parameters = new SwitchOffParameters { Potentiostat = "MAIN:1:POT" })
using (var switchOff = new SwitchOffJob(parameters))
{
    link.DoJob(switchOff);
}
link.Disconnect();

📖 Examples

The C# examples in the zahner_link repository are modelled on the Python notebooks there: each one follows the same steps in the same order, so the explanations in the corresponding notebook apply to them as well. They cover EIS, polarizations, pulse voltammetry, current-voltage curves, raw EIS waves, stop conditions, live data, capacitor cycling, secure communication and error handling. The header of each example shows how to run it, e.g. dotnet run -- <host> [port].

📧 Having a question?

Send a mail to our support team.

⁉️ Found a bug or missing a specific feature?

Feel free to create a new issue with an appropriate title and description in the zahner_link repository issue tracker. Or send a mail to our support team.

⚖️ License

ZahnerLink.Net is licensed under the Zahner Software License, included in the package as LICENSE.

This package also includes third-party software components. Their licenses are in the third_party_licenses folder of the package.

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. 
.NET Framework net48 is compatible.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 4.8

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
26.40.4 112 10/29/2026