CanKit.Adapter.ZLG
0.5.3
See the version list below for details.
dotnet add package CanKit.Adapter.ZLG --version 0.5.3
NuGet\Install-Package CanKit.Adapter.ZLG -Version 0.5.3
<PackageReference Include="CanKit.Adapter.ZLG" Version="0.5.3" />
<PackageVersion Include="CanKit.Adapter.ZLG" Version="0.5.3" />
<PackageReference Include="CanKit.Adapter.ZLG" />
paket add CanKit.Adapter.ZLG --version 0.5.3
#r "nuget: CanKit.Adapter.ZLG, 0.5.3"
#:package CanKit.Adapter.ZLG@0.5.3
#addin nuget:?package=CanKit.Adapter.ZLG&version=0.5.3
#tool nuget:?package=CanKit.Adapter.ZLG&version=0.5.3
CanKit.Adapter.ZLG
用于 CanKit 的 ZLG 适配器。通过 zlgcan.dll 为周立功(ZLG)的 USBCAN/PCIe 系列设备(支持 CAN 与 CAN FD)提供统一的 .NET API。
- 代码仓库:https://github.com/pkuyo/CanKit
- 包名:
CanKit.Adapter.ZLG - 依赖:
CanKit.Core
系统要求
- Windows,已安装 ZLG 驱动(zlgcan 运行时,通常随 ZLGCAN 或 USBCAN FD 安装包一并安装)。
- 确保运行时能够加载到
zlgcan.dll(放在应用目录或加入系统 PATH)。 - 强烈建议将应用编译为 x86。对部分老设备(如 USBCAN1/2),未编译为 x86 可能导致设备无法正常启动。
安装
# Core + ZLG 适配器
dotnet add package CanKit.Core
dotnet add package CanKit.Adapter.ZLG
端点格式
zlg://USBCANFD-200U?index=0#ch1zlg://ZCAN_USBCANFD_200U?index=0#ch1zlg://ZLG.ZCAN_USBCANFD_200U?index=0#ch1
说明
index选择设备索引(从 0 开始)。#chX选择通道索引(例如#ch0、#ch1)。type映射到 ControlCAN 的设备类型。若省略,默认USBCAN2。
快速上手
using CanKit.Core;
using CanKit.Core.Definitions;
// 打开设备 USBCANFD-200U,设备索引 0,通道 1;设置 CAN FD 500k/2M
using var bus = CanBus.Open(
"zlg://USBCANFD-200U?index=0#ch1",
cfg => cfg.Fd(500_000, 2_000_000)
);
// 发送一个经典 CAN 帧(ID 0x123)
var tx = CanFrame.Classic(0x123, new byte[] { 1, 2, 3 });
bus.Transmit(tx);
// 接收(带超时,单位毫秒)
foreach (var rx in bus.Receive(1, 100))
{
var f = rx.CanFrame;
Console.WriteLine($"RX id=0x{f.ID:X}, dlc={f.Dlc}");
}
支持设备 (未完全测试)
- UUSBCAN-I/I+、USBCAN-I-MINI
- USBCAN-II/II+、MiniPCIeCAN-II
- PCI-9820、PCI-9820I
- PCI-5010-U、PCI-5020-U、USBCAN-E-U、USBCAN-2E-U、USBCAN-4E-U、USBCAN-8E-U
- USBCANDTU-100UR、CANDTU-200UR
- USBCANFD-100U、USBCANFD-200U、USBCANFD-400U、USBCANFD-800U、USBCANFD-MINI
- PCIE-CANFD-100U、PCIE-CANFD-200U-EX、PCIE-CANFD-400U、M/2CANFD、MiniPCIeCANFD
- PCIE_CANFD_200U
备注
- 速率配置:经典 CAN 用
cfg.Baud(...),CAN FD 用cfg.Fd(abit, dbit, ...)。 - 实际可接受的比特率与时序取决于具体设备与驱动能力。
- 如需可调整轮询间隔:
cfg.Custom("PollingInterval", 10)(毫秒)。
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. 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. net8.0-windows7.0 is compatible. 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 Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- CanKit.Core (>= 0.5.3)
-
net8.0
- CanKit.Core (>= 0.5.3)
-
net8.0-windows7.0
- CanKit.Core (>= 0.5.3)
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 | |
|---|---|---|---|
| 0.5.4 | 189 | 12/14/2025 | |
| 0.5.3 | 365 | 12/8/2025 | |
| 0.5.2 | 699 | 12/2/2025 | |
| 0.5.1 | 281 | 11/10/2025 | |
| 0.5.0 | 157 | 11/1/2025 | |
| 0.4.0.1 | 205 | 10/28/2025 | |
| 0.4.0 | 211 | 10/27/2025 | |
| 0.3.3.1 | 208 | 10/23/2025 | |
| 0.3.3 | 197 | 10/23/2025 | |
| 0.3.2 | 201 | 10/21/2025 | |
| 0.3.1 | 153 | 10/18/2025 | |
| 0.2.1 | 248 | 10/13/2025 | |
| 0.2.0 | 310 | 10/12/2025 | |
| 0.1.2 | 316 | 10/8/2025 | |
| 0.1.1 | 328 | 10/8/2025 |
## 0.5.3
### Added
* None.
### Changed
* **Receive path validation**: Tightened frame-length validation across all adapters so that incoming frames cannot exceed the underlying buffer or protocol limits. Invalid frames are now handled defensively instead of propagating unexpected sizes to the application.
### Fixed
* **`ArrayPoolBufferAllocator` `Memory` length**: Fixed an issue where the created `Memory` slice could expose a `Length` greater than the size of the rented buffer.
* **SocketCAN Classic receive payload size**: Corrected the maximum application data length for Classic CAN frames in the SocketCAN receive path from 64 bytes to 8 bytes.
* **Adapter receive robustness**: Added length constraints to the `Receive` implementations of other adapters to prevent exceptions when the underlying interface returns malformed or oversized data.
### Performance
* None.
### Breaking changes
* None. (Only invalid / over-sized frames are now rejected more defensively instead of causing exceptions.)