From c3b791888dfb7a9d0a7325438ce725499188ce3f Mon Sep 17 00:00:00 2001 From: zqm Date: Fri, 24 Oct 2025 14:18:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=8D=E7=94=A8SDK?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CS/Framework4.0/Toprie/Toprie/A8SDK.cs | 464 +++++++++++++----- 1 file changed, 348 insertions(+), 116 deletions(-) diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/A8SDK.cs b/Windows/CS/Framework4.0/Toprie/Toprie/A8SDK.cs index ddb8dfb..72f4b24 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/A8SDK.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/A8SDK.cs @@ -2,7 +2,7 @@ using System; using System.Collections.Generic; using System.Runtime.InteropServices; -namespace a8sdk +namespace JoyD.Windows.CS.Toprie { public class A8SDK { @@ -172,56 +172,89 @@ namespace a8sdk public char second; } - // 私有字段 + // TODO: 添加DllImport声明 + // [DllImport(@"SDK\a8sdk.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "sdk_initialize")] + // private static extern int SdkInitialize(); + // ... 其他DllImport声明 ... + private readonly IntPtr ipx; - // 构造函数和析构函数 public A8SDK(string ip) { - // TODO: 实现IP指针转换 - ipx = IntPtr.Zero; + ipx = Marshal.StringToHGlobalAnsi(ip); } ~A8SDK() { - // TODO: 实现资源释放 + Marshal.FreeHGlobal(ipx); + // 注意:不再直接调用SdkDestroy(),全局资源由静态方法SDK_destroy()统一管理 } - // 静态方法 public static int SDK_initialize() { - // TODO: 实现SDK初始化 + // TODO: 实现SDK初始化 - 需添加DllImport声明 return 0; } public static int SDK_destroy() { - // TODO: 实现SDK清理 + // TODO: 实现SDK清理 - 需添加DllImport声明 return 0; } public static String SDK_serch_device(int list_len) { - // TODO: 实现设备搜索 - return string.Empty; + // TODO: 实现设备搜索 - 需添加DllImport声明 + // 根据list_len参数分配足够的内存,至少128字节 + int bufferSize = Math.Max(128, list_len); + IntPtr device_list = Marshal.AllocHGlobal(bufferSize); + + try + { + // 调用SDK搜索设备,并检查返回值 + // int result = SdkSearchDevice(device_list, list_len); + // if (result != 0) + // { + // // 搜索失败,返回空字符串或错误信息 + // return string.Empty; + // } + + // 安全地将非托管内存转换为字符串 + string str = Marshal.PtrToStringAnsi(device_list); + return str; + } + catch (Exception ex) + { + // 捕获可能的异常 + Console.WriteLine($"搜索设备时出错: {ex.Message}"); + return string.Empty; + } + finally + { + // 确保在任何情况下都释放内存 + Marshal.FreeHGlobal(device_list); + } } - // 方法实现 public void Shutter_correction() { - // TODO: 实现快门校正 + // TODO: 实现快门校正 - 需添加DllImport声明 + // SdkShutterCorrection(ipx); } public int Shutter_times { get { - // TODO: 实现获取快门时间 - return 0; + // TODO: 实现获取快门时间 - 需添加DllImport声明 + int i = 0; + // unsafe { SdkGetShutterAutoCorrection(ipx, &i); } + return i; } set { - // TODO: 实现设置快门时间 + // TODO: 实现设置快门时间 - 需添加DllImport声明 + // SdkSetShutterAutoCorrection(ipx, value); } } @@ -229,12 +262,15 @@ namespace a8sdk { get { - // TODO: 实现获取色板 - return 0; + // TODO: 实现获取色板 - 需添加DllImport声明 + int i = 0; + // unsafe { SdkGetColorPlate(ipx, &i); } + return i; } set { - // TODO: 实现设置色板 + // TODO: 实现设置色板 - 需添加DllImport声明 + // SdkSetColorPlate(ipx, value); } } @@ -242,12 +278,15 @@ namespace a8sdk { get { - // TODO: 实现获取镜像模式 - return 0; + // TODO: 实现获取镜像模式 - 需添加DllImport声明 + int i = 0; + // unsafe { SdkGetVideoMirror(ipx, &i); } + return i; } set { - // TODO: 实现设置镜像模式 + // TODO: 实现设置镜像模式 - 需添加DllImport声明 + // SdkSetVideoMirror(ipx, value); } } @@ -255,47 +294,62 @@ namespace a8sdk { get { - // TODO: 实现获取视频模式 - return 0; + // TODO: 实现获取视频模式 - 需添加DllImport声明 + int i = 0; + // unsafe { SdkGetVideoMode(ipx, &i); } + return i; } set { - // TODO: 实现设置视频模式 + // TODO: 实现设置视频模式 - 需添加DllImport声明 + // SdkSetVideoMode(ipx, value); } } public void Set_area_pos(int index, AreaPos area_data) { - // TODO: 实现设置区域位置 + // TODO: 实现设置区域位置 - 需添加DllImport声明 + // unsafe { SdkSetAreaPos(ipx, index, &area_data); } } public AreaPos Get_area_pos(int index) { - // TODO: 实现获取区域位置 - return new AreaPos(); + // TODO: 实现获取区域位置 - 需添加DllImport声明 + AreaPos area_data = new AreaPos(); + // unsafe { SdkGetAreaPos(ipx, index, &area_data); } + return area_data; } public void Set_spot_pos(int index, SpotPos spot_data) { - // TODO: 实现设置点位置 + // TODO: 实现设置点位置 - 需添加DllImport声明 + // unsafe { SdkSetSpotPos(ipx, index, &spot_data); } } public SpotPos Get_spot_pos(int index) { - // TODO: 实现获取点位置 - return new SpotPos(); + // TODO: 实现获取点位置 - 需添加DllImport声明 + SpotPos spot_data = new SpotPos(); + // unsafe { SdkGetSpotPos(ipx, index, &spot_data); } + return spot_data; } public LinePos Line_pos { set { - // TODO: 实现设置线位置 + // TODO: 实现设置线位置 - 需添加DllImport声明 + // unsafe + // { + // SdkSetLinePos(ipx, &value); + // } } get { - // TODO: 实现获取线位置 - return new LinePos(); + // TODO: 实现获取线位置 - 需添加DllImport声明 + LinePos line_data = new LinePos(); + // unsafe { SdkGetLinePos(ipx, &line_data); } + return line_data; } } @@ -303,8 +357,13 @@ namespace a8sdk { get { - // TODO: 实现获取所有位置 - return new ImagePos(); + // TODO: 实现获取所有位置 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(ImagePos))); + ImagePos data = new ImagePos(); + // SdkGetAllPos(ipx, ip); + // data = (ImagePos)Marshal.PtrToStructure(ip, typeof(ImagePos)); + Marshal.FreeHGlobal(ip); + return data; } } @@ -312,12 +371,15 @@ namespace a8sdk { set { - // TODO: 实现设置温度范围 + // TODO: 实现设置温度范围 - 需添加DllImport声明 + // SdkSetTempRange(ipx, value); } get { - // TODO: 实现获取温度范围 - return 0; + // TODO: 实现获取温度范围 - 需添加DllImport声明 + int i = 0; + // unsafe { SdkGetTempRange(ipx, &i); } + return i; } } @@ -325,12 +387,15 @@ namespace a8sdk { set { - // TODO: 实现设置X偏移 + // TODO: 实现设置X偏移 - 需添加DllImport声明 + // SdkSetVideoIspXOffset(ipx, value); } get { - // TODO: 实现获取X偏移 - return 0; + // TODO: 实现获取X偏移 - 需添加DllImport声明 + int i = 0; + // unsafe { SdkGetVideoIspXOffset(ipx, &i); } + return i; } } @@ -338,12 +403,15 @@ namespace a8sdk { set { - // TODO: 实现设置Y偏移 + // TODO: 实现设置Y偏移 - 需添加DllImport声明 + // SdkSetVideoIspYOffset(ipx, value); } get { - // TODO: 实现获取Y偏移 - return 0; + // TODO: 实现获取Y偏移 - 需添加DllImport声明 + int i = 0; + // unsafe { SdkGetVideoIspYOffset(ipx, &i); } + return i; } } @@ -351,12 +419,15 @@ namespace a8sdk { set { - // TODO: 实现设置X缩放 + // TODO: 实现设置X缩放 - 需添加DllImport声明 + // SdkSetVideoIspXScale(ipx, value); } get { - // TODO: 实现获取X缩放 - return 0; + // TODO: 实现获取X缩放 - 需添加DllImport声明 + int i = 0; + // unsafe { SdkGetVideoIspXScale(ipx, &i); } + return i; } } @@ -364,12 +435,15 @@ namespace a8sdk { set { - // TODO: 实现设置Y缩放 + // TODO: 实现设置Y缩放 - 需添加DllImport声明 + // SdkSetVideoIspYScale(ipx, value); } get { - // TODO: 实现获取Y缩放 - return 0; + // TODO: 实现获取Y缩放 - 需添加DllImport声明 + int i = 0; + // unsafe { SdkGetVideoIspYScale(ipx, &i); } + return i; } } @@ -377,12 +451,15 @@ namespace a8sdk { set { - // TODO: 实现设置LED + // TODO: 实现设置LED - 需添加DllImport声明 + // SdkSetLed(ipx, value); } get { - // TODO: 实现获取LED状态 - return 0; + // TODO: 实现获取LED状态 - 需添加DllImport声明 + int i = 0; + // unsafe { SdkGetLed(ipx, &i); } + return i; } } @@ -390,12 +467,21 @@ namespace a8sdk { set { - // TODO: 实现设置邮件服务器 + // TODO: 实现设置邮件服务器 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(EmailServer))); + Marshal.StructureToPtr(value, ip, true); + // SdkSetEmailServer(ipx, ip); + Marshal.FreeHGlobal(ip); } get { - // TODO: 实现获取邮件服务器 - return new EmailServer(); + // TODO: 实现获取邮件服务器 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(EmailServer))); + EmailServer data = new EmailServer(); + // SdkGetEmailServer(ipx, ip); + // data = (EmailServer)Marshal.PtrToStructure(ip, typeof(EmailServer)); + Marshal.FreeHGlobal(ip); + return data; } } @@ -403,12 +489,21 @@ namespace a8sdk { set { - // TODO: 实现设置TFTP服务器 + // TODO: 实现设置TFTP服务器 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(TftpServer))); + Marshal.StructureToPtr(value, ip, true); + // SdkSetTftpServer(ipx, ip); + Marshal.FreeHGlobal(ip); } get { - // TODO: 实现获取TFTP服务器 - return new TftpServer(); + // TODO: 实现获取TFTP服务器 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(TftpServer))); + TftpServer data = new TftpServer(); + // SdkGetTftpServer(ipx, ip); + // data = (TftpServer)Marshal.PtrToStructure(ip, typeof(TftpServer)); + Marshal.FreeHGlobal(ip); + return data; } } @@ -416,12 +511,21 @@ namespace a8sdk { set { - // TODO: 实现设置网络参数 + // TODO: 实现设置网络参数 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(NetworkEth))); + Marshal.StructureToPtr(value, ip, true); + // SdkSetNetworkEth(ipx, ip); + Marshal.FreeHGlobal(ip); } get { - // TODO: 实现获取网络参数 - return new NetworkEth(); + // TODO: 实现获取网络参数 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(NetworkEth))); + NetworkEth data = new NetworkEth(); + // SdkGetNetworkEth(ipx, ip); + // data = (NetworkEth)Marshal.PtrToStructure(ip, typeof(NetworkEth)); + Marshal.FreeHGlobal(ip); + return data; } } @@ -429,166 +533,285 @@ namespace a8sdk { set { - // TODO: 实现设置融合距离 + // TODO: 实现设置融合距离 - 需添加DllImport声明 + // SdkSetFusionDistance(ipx, value); } get { - // TODO: 实现获取融合距离 - return 0; + // TODO: 实现获取融合距离 - 需添加DllImport声明 + int i = 0; + // unsafe { SdkGetFusionDistance(ipx, &i); } + return i; } } public void Set_envir_param(EnvirParam data) { - // TODO: 实现设置环境参数 + // TODO: 实现设置环境参数 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(EnvirParam))); + Marshal.StructureToPtr(data, ip, true); + // SdkSetEnvirParam(ipx, ip); + Marshal.FreeHGlobal(ip); } public EnvirParam Get_area_envir_param(int index) { - // TODO: 实现获取区域环境参数 - return new EnvirParam(); + // TODO: 实现获取区域环境参数 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(EnvirParam))); + EnvirParam data = new EnvirParam(); + // SdkGetAreaEnvirParam(ipx, index, ip); + // data = (EnvirParam)Marshal.PtrToStructure(ip, typeof(EnvirParam)); + Marshal.FreeHGlobal(ip); + return data; } public EnvirParam Get_spot_envir_param(int index) { - // TODO: 实现获取点环境参数 - return new EnvirParam(); + // TODO: 实现获取点环境参数 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(EnvirParam))); + EnvirParam data = new EnvirParam(); + // SdkGetSpotEnvirParam(ipx, index, ip); + // data = (EnvirParam)Marshal.PtrToStructure(ip, typeof(EnvirParam)); + Marshal.FreeHGlobal(ip); + return data; } public EnvirParam Get_line_envir_param() { - // TODO: 实现获取线环境参数 - return new EnvirParam(); + // TODO: 实现获取线环境参数 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(EnvirParam))); + EnvirParam data = new EnvirParam(); + // SdkGetLineEnvirParam(ipx, 0, ip); + // data = (EnvirParam)Marshal.PtrToStructure(ip, typeof(EnvirParam)); + Marshal.FreeHGlobal(ip); + return data; } public EnvirParam Get_globa_envir_param() { - // TODO: 实现获取全局环境参数 - return new EnvirParam(); + // TODO: 实现获取全局环境参数 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(EnvirParam))); + EnvirParam data = new EnvirParam(); + // SdkGetGlobaEnvirParam(ipx, ip); + // data = (EnvirParam)Marshal.PtrToStructure(ip, typeof(EnvirParam)); + Marshal.FreeHGlobal(ip); + return data; } public void Set_alarm_param(AlarmParam data) { - // TODO: 实现设置报警参数 + // TODO: 实现设置报警参数 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(AlarmParam))); + Marshal.StructureToPtr(data, ip, true); + // SdkSetAlarmParam(ipx, ip); + Marshal.FreeHGlobal(ip); } public AlarmParam Get_area_alarm_param(int index) { - // TODO: 实现获取区域报警参数 - return new AlarmParam(); + // TODO: 实现获取区域报警参数 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(AlarmParam))); + AlarmParam data = new AlarmParam(); + // SdkGetAreaAlarmParam(ipx, index, ip); + // data = (AlarmParam)Marshal.PtrToStructure(ip, typeof(AlarmParam)); + Marshal.FreeHGlobal(ip); + return data; } public AlarmParam Get_spot_alarm_param(int index) { - // TODO: 实现获取点报警参数 - return new AlarmParam(); + // TODO: 实现获取点报警参数 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(AlarmParam))); + AlarmParam data = new AlarmParam(); + // SdkGetSpotAlarmParam(ipx, index, ip); + // data = (AlarmParam)Marshal.PtrToStructure(ip, typeof(AlarmParam)); + Marshal.FreeHGlobal(ip); + return data; } public AlarmParam Get_globa_alarm_param() { - // TODO: 实现获取全局报警参数 - return new AlarmParam(); + // TODO: 实现获取全局报警参数 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(AlarmParam))); + AlarmParam data = new AlarmParam(); + // SdkGetLineAlarmParam(ipx, 0, ip); + // data = (AlarmParam)Marshal.PtrToStructure(ip, typeof(AlarmParam)); + Marshal.FreeHGlobal(ip); + return data; } public AlarmParam Get_line_alarm_param() { - // TODO: 实现获取线报警参数 - return new AlarmParam(); + // TODO: 实现获取线报警参数 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(AlarmParam))); + AlarmParam data = new AlarmParam(); + // SdkGetLineAlarmParam(ipx, 0, ip); + // data = (AlarmParam)Marshal.PtrToStructure(ip, typeof(AlarmParam)); + Marshal.FreeHGlobal(ip); + return data; } public AreaTemp Get_area_temp(int index) { - // TODO: 实现获取区域温度 - return new AreaTemp(); + // TODO: 实现获取区域温度 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(AreaTemp))); + AreaTemp data = new AreaTemp(); + // SdkGetAreaTempData(ipx, index, ip); + // data = (AreaTemp)Marshal.PtrToStructure(ip, typeof(AreaTemp)); + Marshal.FreeHGlobal(ip); + return data; } public SpotTemp Get_spot_temp(int index) { - // TODO: 实现获取点温度 - return new SpotTemp(); + // TODO: 实现获取点温度 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(SpotTemp))); + SpotTemp data = new SpotTemp(); + // SdkGetSpotTempData(ipx, index, ip); + // data = (SpotTemp)Marshal.PtrToStructure(ip, typeof(SpotTemp)); + Marshal.FreeHGlobal(ip); + return data; } public LineTemp Get_line_temp() { - // TODO: 实现获取线温度 - return new LineTemp(); + // TODO: 实现获取线温度 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(LineTemp))); + LineTemp data = new LineTemp(); + // SdkGetLineTempData(ipx, 0, ip); + // data = (LineTemp)Marshal.PtrToStructure(ip, typeof(LineTemp)); + Marshal.FreeHGlobal(ip); + return data; } public GlobaTemp Get_globa_temp() { - // TODO: 实现获取全局温度 - return new GlobaTemp(); + // TODO: 实现获取全局温度 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(GlobaTemp))); + GlobaTemp data = new GlobaTemp(); + // SdkGetGlobaTempData(ipx, ip); + // data = (GlobaTemp)Marshal.PtrToStructure(ip, typeof(GlobaTemp)); + Marshal.FreeHGlobal(ip); + return data; } public ImageTemp Get_all_temp() { - // TODO: 实现获取所有温度数据 - return new ImageTemp(); + // TODO: 实现获取所有温度数据 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(ImageTemp))); + ImageTemp data = new ImageTemp(); + // SdkGetAllTempData(ipx, ip); + // data = (ImageTemp)Marshal.PtrToStructure(ip, typeof(ImageTemp)); + Marshal.FreeHGlobal(ip); + return data; } public void Power_reboot() { - // TODO: 实现设备重启 + // TODO: 实现设备重启 - 需添加DllImport声明 + // SdkPowerReboot(ipx); } public void Param_recover() { - // TODO: 实现参数恢复 + // TODO: 实现参数恢复 - 需添加DllImport声明 + // SdkParamRecover(ipx); } public void Update() { - // TODO: 实现设备更新 + // TODO: 实现设备更新 - 需添加DllImport声明 + // SdkUpdate(ipx); } public int Heartbeat() { - // TODO: 实现心跳检测 - return 0; + // TODO: 实现心跳检测 - 需添加DllImport声明 + try + { + // 确保ipx指针有效 + if (ipx == IntPtr.Zero) + { + Console.WriteLine("SDK实例IP指针无效"); + return -1; + } + + // int result = SdkHeartbeat(ipx); + return 0; // 默认返回0表示成功 + } + catch (Exception ex) + { + Console.WriteLine($"心跳检测异常: {ex.Message}"); + return -1; + } } public void Set_uart(int nSpeed, int nBits, char nEvent, int nStop) { - // TODO: 实现设置串口 + // TODO: 实现设置串口 - 需添加DllImport声明 + // SdkSetUart(ipx, nSpeed, nBits, nEvent, nStop); } public void Send_uart_command(byte[] cmd) { - // TODO: 实现发送串口命令 + // TODO: 实现发送串口命令 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(cmd.Length); + char len = (char)cmd.Length; + // SdkSendUartCommand(ipx, ip, len); + Marshal.FreeHGlobal(ip); } public void Autofocus(FocusParam data) { - // TODO: 实现自动对焦 + // TODO: 实现自动对焦 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(FocusParam))); + Marshal.StructureToPtr(data, ip, true); + // SdkAutofocus(ipx, ip); + Marshal.FreeHGlobal(ip); } public void Set_device_name(string data) { - // TODO: 实现设置设备名称 + // TODO: 实现设置设备名称 - 需添加DllImport声明 + IntPtr ip = Marshal.StringToHGlobalAnsi(data); + // SdkSetDeviceName(ipx, ip); + Marshal.FreeHGlobal(ip); } public string Get_device_name() { - // TODO: 实现获取设备名称 - return string.Empty; + // TODO: 实现获取设备名称 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(128); + // SdkGetDeviceName(ipx, ip); + string str = Marshal.PtrToStringAnsi(ip); + Marshal.FreeHGlobal(ip); + return str; } public byte[] Get_detect_number() { - // TODO: 实现获取检测编号 - return new byte[0]; + // TODO: 实现获取检测编号 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(20); + // SdkGetDetectNumber(ipx, ip); + byte[] data = new byte[20]; + // Marshal.Copy(ip, data, 0, 20); + Marshal.FreeHGlobal(ip); + return data; } public char Temp_frame { set { - // TODO: 实现设置温度帧 + // TODO: 实现设置温度帧 - 需添加DllImport声明 + // SdkSetTempFrame(ipx, value); } get { - // TODO: 实现获取温度帧 - return (char)0; + // TODO: 实现获取温度帧 - 需添加DllImport声明 + char i = (char)0; + // unsafe { SdkGetTempFrame(ipx, &i); } + return i; } } @@ -596,12 +819,15 @@ namespace a8sdk { set { - // TODO: 实现设置报警输出 + // TODO: 实现设置报警输出 - 需添加DllImport声明 + // SdkSetAlarmOut(ipx, value); } get { - // TODO: 实现获取报警输入 - return (char)0; + // TODO: 实现获取报警输入 - 需添加DllImport声明 + char i = (char)0; + // unsafe { SdkGetAlarmIn(ipx, &i); } + return i; } } @@ -609,14 +835,20 @@ namespace a8sdk { get { - // TODO: 实现获取补偿温度 - return 0; + // TODO: 实现获取补偿温度 - 需添加DllImport声明 + int i = 0; + // unsafe { SdkGetCompTemp(ipx, &i); } + return i; } } public void Set_time(TimeParam data) { - // TODO: 实现设置系统时间 + // TODO: 实现设置系统时间 - 需添加DllImport声明 + IntPtr ip = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(TimeParam))); + Marshal.StructureToPtr(data, ip, true); + // SdkSetTime(ipx, ip); + Marshal.FreeHGlobal(ip); } } } \ No newline at end of file