ZahnerLink.Net
26.40.4
dotnet add package ZahnerLink.Net --version 26.40.4
NuGet\Install-Package ZahnerLink.Net -Version 26.40.4
<PackageReference Include="ZahnerLink.Net" Version="26.40.4" />
<PackageVersion Include="ZahnerLink.Net" Version="26.40.4" />
<PackageReference Include="ZahnerLink.Net" />
paket add ZahnerLink.Net --version 26.40.4
#r "nuget: ZahnerLink.Net, 26.40.4"
#:package ZahnerLink.Net@26.40.4
#addin nuget:?package=ZahnerLink.Net&version=26.40.4
#tool nuget:?package=ZahnerLink.Net&version=26.40.4
ZahnerLink.Net
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 | 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. |
| .NET Framework | net48 is compatible. net481 was computed. |
-
.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 |