110,567
社区成员
发帖
与我相关
我的任务
分享
//先道个歉,只有85分了,很久不来了。
//以下是C++头文件
//回调函数定义;每个回调函数既是返回的一个事件点。
typedef struct {
//命令发送成功,目标设备有响应。
void (*PTK_UserCommandSuccessful)(const void* sender, uint receid, uchar hostid, uchar terid, uchar commandcode);
//命令发送失败,目标设备无响应。
void (*PTK_UserCommandDelete)(const void* sender, uint receid, uchar hostid, uchar terid, uchar commandcode);
//报警信息
void (*PTK_Alarm_Information)(const void* sender, uint receid, uchar hostid, uchar terid, uchar areaid, EPTK_Alarm_Event Eventcode);
// 键盘显示 需主机为V3.3以上版本才有响应
void (*PTK_Alarm_KpdDisplay)(const void* sender, uint receid, uchar hostid, uchar* Dis1, uchar* Dis2);
}SPTK_callbackFun;
//DLL初始化函数:完成内存分配,线程开启等操作,获取相应的充分的系统资源。
PTKALARMLIB_API void* Init_PTKAlarmlib(const void* sender, SPTK_callbackFun* CallBack);
/// Return Type: void
///sender: void*
///receid: int
///hostid: char
///terid: char
///commandcode: char
public delegate void _PTK_UserCommandSuccessful(System.IntPtr sender, int receid, byte hostid, byte terid, byte commandcode);
/// Return Type: void
///sender: void*
///receid: int
///hostid: char
///terid: char
///commandcode: char
public delegate void _PTK_UserCommandDelete(System.IntPtr sender, int receid, byte hostid, byte terid, byte commandcode);
/// Return Type: void
///sender: void*
///receid: int
///hostid: char
///Dis1: char*
///Dis2: char*
public delegate void _PTK_Alarm_KpdDisplay(System.IntPtr sender, int receid, byte hostid, System.IntPtr Dis1, System.IntPtr Dis2);
[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
public struct SPTK_callbackFun {
/// _PTK_UserCommandSuccessful
public _PTK_UserCommandSuccessful AnonymousMember1;
/// _PTK_UserCommandDelete
public _PTK_UserCommandDelete AnonymousMember2;
/// _PTK_Alarm_KpdDisplay
public _PTK_Alarm_KpdDisplay AnonymousMember3;
}
public partial class NativeMethods {
/// Return Type: void*
///sender: void*
///CallBack: SPTK_callbackFun*
[System.Runtime.InteropServices.DllImportAttribute("<Unknown>", EntryPoint="Init_PTKAlarmlib")]
public static extern System.IntPtr Init_PTKAlarmlib(System.IntPtr sender, ref SPTK_callbackFun CallBack) ;
//这里假定
//uint = unsigned int = 无符号32 = C# uint
//uchar = unsigned char = 无符号8 = C# byte
//实际你需要根据C++文件的实际定义查看然后转成对应的C#类型
public delegate void _PTK_UserCommandSuccessful(System.IntPrt sender,uint receid, byte hostid, byte terid, byte commandcode);
//其余省略...
[StructLayout( LayoutKind.Sequential )]
public struct SPTK_callbackFun {
public _PTK_UserCommandSuccessful PTK_UserCommandSuccessful;
//其余省略...
}
//回调函数定义;每个回调函数既是返回的一个事件点。
[StructLayout( LayoutKind.Sequential )]
public struct SPTK_callbackFun {
[DllImport( "AlarmSDK.dll", EntryPoint = "PTK_UserCommandSuccessful", CallingConvention = CallingConvention.StdCall )]
public static extern IntPtr PTK_UserCommandSuccessful( ref byte sender, System.UInt16 receid, int hostid, int terid, int commandcode );
[DllImport( "AlarmSDK.dll", EntryPoint = "PTK_UserCommandDelete", CallingConvention = CallingConvention.StdCall )]
public static extern IntPtr PTK_UserCommandDelete( ref byte sender, System.UInt16 receid, int hostid, int terid, int commandcode );
[DllImport( "AlarmSDK.dll", EntryPoint = "PTK_Alarm_Information", CallingConvention = CallingConvention.StdCall )]
public static extern IntPtr PTK_Alarm_Information( ref byte sender, System.UInt16 receid, int hostid, int terid, int areaid, EPTK_Alarm_Event Eventcode );
[DllImport( "AlarmSDK.dll", EntryPoint = "PTK_Alarm_KpdDisplay", CallingConvention = CallingConvention.StdCall )]
public static extern IntPtr PTK_Alarm_KpdDisplay( ref byte sender, System.UInt16 receid, int hostid, int Dis1, int Dis2 );
}
//PTKALARMLIB_API void* Init_PTKAlarmlib(const void* sender, SPTK_callbackFun* CallBack);
[DllImport( "AlarmSDK.dll", EntryPoint = "Init_PTKAlarmlib", CallingConvention = CallingConvention.StdCall )]
public static extern IntPtr P_Client_QueryRecord( ref byte zero, ref SPTK_callbackFun pInfo );