更改
This commit is contained in:
@@ -2,10 +2,22 @@
|
||||
|
||||
namespace CapMachine.Wpf.CanDrive.ZlgCan
|
||||
{
|
||||
/// <summary>
|
||||
/// ZLG 原生驱动(zlgcan.dll)P/Invoke 映射层。
|
||||
/// 说明:
|
||||
/// - 本类仅负责将厂商 SDK 的函数/常量/结构体映射到 C#,不包含任何业务逻辑;上层 Driver/Service 会对这些 API 进行封装并提供线程安全与资源管理。
|
||||
/// - 互操作注意事项:
|
||||
/// 1) <c>zlgcan.dll</c> 必须随程序部署且位数与进程一致(x86/x64),否则会在加载/调用时失败。
|
||||
/// 2) 结构体需严格按 SDK 定义设置 <see cref="StructLayoutAttribute"/> 与 Pack;字段顺序与大小必须一致。
|
||||
/// 3) DllImport 的 CallingConvention 与 SetLastError 需与 SDK 匹配,否则可能出现栈不平衡或错误码不可用。
|
||||
/// - 约定:当前工程中通常由 <c>ZlgCanFd200uDriver</c> 负责检查 DLL 存在与架构匹配,并在打开设备前完成预检查。
|
||||
/// </summary>
|
||||
public class ZLGCAN
|
||||
{
|
||||
|
||||
#region 设备类型
|
||||
// 设备类型常量:用于 ZCAN_OpenDevice/ZCAN_OpenDeviceByName。
|
||||
// 说明:常量值来自厂商 SDK;此处保持原值以便与文档/示例对照。
|
||||
public static UInt32 ZCAN_PCI9810 = 2;
|
||||
public static UInt32 ZCAN_USBCAN1 = 3;
|
||||
public static UInt32 ZCAN_USBCAN2 = 4;
|
||||
@@ -82,12 +94,16 @@ namespace CapMachine.Wpf.CanDrive.ZlgCan
|
||||
#endregion
|
||||
|
||||
#region LIN事件
|
||||
// LIN 事件常量:用于接收/状态通知。
|
||||
public static UInt32 ZCAN_LIN_WAKE_UP = 1;
|
||||
public static UInt32 ZCAN_LIN_ENTERED_SLEEP_MODE = 2;
|
||||
public static UInt32 ZCAN_LIN_EXITED_SLEEP_MODE = 3;
|
||||
#endregion
|
||||
|
||||
#region 函数
|
||||
// 原生函数导入:
|
||||
// - 这里不逐个函数详注,具体语义以 SDK 文档为准;
|
||||
// - 上层 Driver 会封装为更易用的 C# API,并处理错误码、重试、线程模型等。
|
||||
[DllImport("zlgcan.dll", CallingConvention = CallingConvention.StdCall, SetLastError = true)]
|
||||
public static extern IntPtr ZCAN_OpenDevice(uint device_type, uint device_index, uint reserved);
|
||||
|
||||
@@ -230,6 +246,8 @@ namespace CapMachine.Wpf.CanDrive.ZlgCan
|
||||
#endregion
|
||||
|
||||
#region 结构体
|
||||
// SDK 结构体定义:用于与原生内存布局一致地传参/收参。
|
||||
// 说明:字段注释多数来自 SDK 示例或历史代码;这里主要保证布局与 Pack 正确。
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
public struct ZCAN_DEVICE_INFO
|
||||
{
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user