Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

312 righe
13 KiB

  1. #pragma once
  2. #ifndef _XNetSDK_H_
  3. #define _XNetSDK_H_
  4. #ifdef __cplusplus
  5. extern "C"{
  6. #endif
  7. #ifdef WIN32
  8. #ifdef XNETSDK_EXPORTS
  9. #define XSDK_API extern "C" __declspec(dllexport)
  10. #define CALLBACK __stdcall
  11. #else
  12. #define XSDK_API extern "C" __declspec(dllimport)
  13. #define CALLBACK __stdcall
  14. #endif
  15. #else
  16. #define XSDK_API
  17. #define CALLBACK
  18. #endif
  19. #include "XNetSDKDefine.h"
  20. #define XSDK_HANDLE int
  21. typedef int (CALLBACK *PXSDK_MessageCallBack) (XSDK_HANDLE hDevice, int nMsgId, int nParam1, int nParam2, int nParam3, const char *szString, void *pObject, int nSeq, void *pUserData);
  22. ////////////////////////////About XSDK////////////////////////////
  23. typedef struct SXSDKInitParam
  24. {
  25. int nLogLevel;
  26. PXSDK_MessageCallBack pMsgCallBack;
  27. void *pUserData;
  28. }SXSDKInitParam;
  29. ////////////////////////////About Device////////////////////////////
  30. typedef int (CALLBACK *PXSDK_MediaCallBack) (XSDK_HANDLE hMedia, const unsigned char *pData, int nDataLen, int nDataType, void *pDataInfo, int nDataInfoSize, void *pUserData);
  31. typedef struct SXMediaRealPlayReq
  32. {
  33. int nChannel;
  34. int nStreamType;
  35. int nRequestType; // 0:原始码流回调 1:按帧回调(见枚举:EXSDK_DATA_FORMATE)
  36. PXSDK_MediaCallBack pMediaCallback;
  37. void *pUserData;
  38. }SXMediaRealPlayReq;
  39. typedef struct SXMediaFaceImageReq
  40. {
  41. int nChannel;
  42. int nImgTypeMsk; // 3
  43. char szIntelType[64]; // Face
  44. PXSDK_MediaCallBack pMediaCallback;
  45. void *pUserData;
  46. }SXMediaFaceImageReq;
  47. typedef struct SXMediaRecordReq
  48. {
  49. int nChannel;
  50. int nStreamType;
  51. char sBeginTime[32];
  52. char sEndTime[32];
  53. char sFileType[64]; // 暂时无用
  54. int nRequestType; // 0:原始码流回调 1:按帧回调
  55. char sIntelligentPlayBackEvent[64];
  56. int nIntelligentPlayBackSpeed;
  57. PXSDK_MediaCallBack pMediaCallback;
  58. void *pUserData;
  59. }SXMediaRecordReq;
  60. typedef struct SXMediaRecordByFileReq
  61. {
  62. int nChannel;
  63. char sBeginTime[32];
  64. char sEndTime[32];
  65. char sFileName[64]; // 文件名称
  66. PXSDK_MediaCallBack pMediaCallback;
  67. void *pUserData;
  68. }SXMediaRecordByFileReq;
  69. typedef struct SXMediaTalkReq
  70. {
  71. int nBitRate; ///< 码流大小,kbps为单位,比如192kbps,128kbps
  72. int nSampleRate; ///< 采样率,Hz为单位,比如44100Hz
  73. int nSampleBit; ///< 采样的位深
  74. char nEncodeType[64]; ///< 编码方式,-------G711_ALAW
  75. int nRequestType; ///< 0:原始码流回调 1:按帧回调(见枚举:EXSDK_DATA_FORMATE)
  76. PXSDK_MediaCallBack pMediaCallback;
  77. void *pUserData;
  78. }SXMediaTalkReq;
  79. // SDK 初始化&反初始化
  80. XSDK_API int CALLBACK XSDK_Init(SXSDKInitParam *pParam);
  81. XSDK_API void CALLBACK XSDK_UnInit();
  82. XSDK_API int CALLBACK XSDK_SetSDKIntAttr(int nAttrKey, int nValue);
  83. XSDK_API int CALLBACK XSDK_GetSDKIntAttr(int nAttrKey, int nDefaultValue);
  84. XSDK_API int CALLBACK XSDK_SetSDKStrAttr(int nAttrKey, const char *szValue);
  85. XSDK_API const char *CALLBACK XSDK_GetSDKStrAttr(int nAttrKey, char *pResult, int nMaxSize);
  86. XSDK_API int CALLBACK XSDK_SetObjIntAttr(XSDK_HANDLE hObject, int nAttrKey, int nValue);
  87. XSDK_API int CALLBACK XSDK_GetObjIntAttr(XSDK_HANDLE hObject, int nAttrKey, int nDefaultValue);
  88. XSDK_API int CALLBACK XSDK_SetObjStrAttr(XSDK_HANDLE hObject, int nAttrKey, const char *szValue);
  89. XSDK_API const char *CALLBACK XSDK_GetObjStrAttr(XSDK_HANDLE hObject, int nAttrKey, char *pResult, int nMaxSize);
  90. // 设备登录、登出
  91. // MsgId:ESXSDK_DEV_LOGIN
  92. XSDK_API XSDK_HANDLE CALLBACK XSDK_DevLogin(SXSDKLoginParam *pParam, int nTimeout, int nSeq);
  93. XSDK_API void CALLBACK XSDK_DevLogout(XSDK_HANDLE hDevice);
  94. // 设备系统&通道配置相关
  95. //ESXSDK_DEV_GET_SYS_CONFIG = 12007, // 设备系统配置获取
  96. XSDK_API int CALLBACK XSDK_DevGetSysConfig(XSDK_HANDLE hDevice, const char *szCommandName, int nSeq, int nTimeout, int nCommand = EXCMD_CONFIG_GET);
  97. //ESXSDK_DEV_GET_CHN_CONFIG = 12009, // 设备通道配置获取
  98. XSDK_API int CALLBACK XSDK_DevGetChnConfig(XSDK_HANDLE hDevice, int nChannel, const char *szCommandName, int nSeq, int nTimeout, int nCommand = EXCMD_CONFIG_GET);
  99. // ESXSDK_DEV_SET_SYS_CONFIG = 12008, // 设备系统配置设置
  100. XSDK_API int CALLBACK XSDK_DevSetSysConfig(XSDK_HANDLE hDevice, const char *szCommandName, const char *pConfig, int nConfigLen, int nSeq, int nTimeout, int nCommand = EXCMD_CONFIG_SET);
  101. // ESXSDK_DEV_SET_CHN_CONFIG = 12010, // 设备通道配置设置
  102. XSDK_API int CALLBACK XSDK_DevSetChnConfig(XSDK_HANDLE hDevice, int nChannel, const char *szCommandName, const char *pConfig, int nConfigLen, int nSeq, int nTimeout, int nCommand = EXCMD_CONFIG_SET);
  103. // 向设备发送数据(异步)
  104. // nMsgId:用户自定义返回消息ID值 要求范围 nMsgId >= ESXSDK_DEV_USER_COMMAND_BEGIN && nMsgId <ESXSDK_DEV_GENERAL_COMMAND_END1 || nMsgId == ESXSDK_DEV_GENERAL_COMMAND
  105. XSDK_API int CALLBACK XSDK_DevSendData(XSDK_HANDLE hDevice, const char *szCommandName, const char *pConfig, int nConfigLen, int nSeq, int nTimeout, int nCommand, int nMsgId = ESXSDK_DEV_GENERAL_COMMAND);
  106. XSDK_API int CALLBACK XSDK_DevSendDataEx(XSDK_HANDLE hDevice, const char *szCommandName, const char *pConfig, int nConfigLen, int nSeq, int nTimeout, int nCommand, int nMsgId = ESXSDK_DEV_GENERAL_COMMAND, unsigned char nChannelOrTotalPacket = 0, unsigned char nEndFlagOrCurPacket = 0, unsigned char nReserved1 = 0, unsigned char nReserved2 = 0);
  107. // 开启或关闭设备报警回调
  108. // 结果在PXSDK_MessageCallBack函数中回调
  109. // MsgId:EXCMD_ALARM_REQ = 1504
  110. // szString:报警消息(Json格式)
  111. XSDK_API int CALLBACK XSDK_DevSetAlarmListener(XSDK_HANDLE hDevice, int bListener);
  112. // ESXSDK_ON_SEARCH_DEVICES = 13001, // 局域网设备搜索
  113. // param2:返回个数
  114. XSDK_API int CALLBACK XSDK_SearchDevices(int nTimeout);
  115. ////////////////////////////////////////////云台方向控制控制////////////////////////////////////////////
  116. // szPTZCommand:操作命令(枚举如下)
  117. #define S_XPTZ_DirectionLeftUp "DirectionLeftUp"
  118. #define S_XPTZ_DirectionUp "DirectionUp"
  119. #define S_XPTZ_DirectionRightUp "DirectionRightUp"
  120. #define S_XPTZ_DirectionLeft "DirectionLeft"
  121. #define S_XPTZ_DirectionRight "DirectionRight"
  122. #define S_XPTZ_DirectionLeftDown "DirectionLeftDown"
  123. #define S_XPTZ_DirectionDown "DirectionDown"
  124. #define S_XPTZ_DirectionRightDown "DirectionRightDown"
  125. #define S_XPTZ_IrisSmall "IrisSmall"
  126. #define S_XPTZ_IrisLarge "IrisLarge"
  127. #define S_XPTZ_FocusNear "FocusNear"
  128. #define S_XPTZ_FocusFar "FocusFar"
  129. #define S_XPTZ_ZoomWide "ZoomWide"
  130. #define S_XPTZ_ZoomTile "ZoomTile"
  131. // nStep:步长
  132. // bStop:开始/停止
  133. XSDK_API int CALLBACK XSDK_DevPtzControl(XSDK_HANDLE hDevice, int nChannel, const char *szPTZCommand, int nStep, bool bStop);
  134. /////////////////云台预置点操作/////////////////
  135. // szPTZCommand:操作命令(枚举如下)
  136. #define S_XPTZ_GotoPreset "GotoPreset"
  137. #define S_XPTZ_SetPreset "SetPreset"
  138. #define S_XPTZ_ClearPreset "ClearPreset"
  139. // nPreset:预置点值
  140. XSDK_API int CALLBACK XSDK_DevPtzPreset(XSDK_HANDLE hDevice, int nChannel, const char *szPTZCommand, int nPreset);
  141. /////////////////云台巡航操作/////////////////
  142. // nPreset:巡航点值
  143. XSDK_API int CALLBACK XSDK_DevPtzTour(XSDK_HANDLE hDevice, int nChannel, int nTourIndex, bool bStart);
  144. /////////////////云台巡航点获取/配置等其它通用操作示例/////////////////
  145. //#include "OPPTZControl.h"
  146. //XSDK_CFG::OPPTZControl ptz;
  147. //ptz.Command = "";
  148. //const char *pConfig = ptz.ToString();
  149. //return XSDK_DevSetSysConfig(hDevice, JK_OPPTZControl, pConfig, STRLEN(pConfig), nSeq, nTimeout, EXCMD_PTZ_REQ);
  150. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  151. // ESXSDK_DEV_FIND_FILE = 12011, // 设备录像查询
  152. // 注意函数一次最多返回64条()
  153. XSDK_API int CALLBACK XSDK_DevFindFile(XSDK_HANDLE hDevice, SXSDKQueryRecordReq *pParam, int nTimeout, int nSeq);
  154. // 时间同步
  155. // 时间格式:2018-07-25 17:20:37; == NULL或""时,默认为当前系统时间
  156. // 返回MsgID:ESXSDK_DEV_SET_SYS_CONFIG = 12008, // 设备系统配置设置
  157. // 返回nParam3:EXCMD_SYSMANAGER_RSP
  158. XSDK_API int CALLBACK XSDK_DevSynTime(XSDK_HANDLE hDevice, const char *szTime = "", int nSeq = 0);
  159. // 设备通道抓图
  160. // 功能说明:发送抓图命令给设备,设备抓图后回传。图片大小设备根据自身能力定义
  161. // nChannel:抓图通道号
  162. // szPicType:图片类型,暂时不用
  163. XSDK_API int CALLBACK XSDK_DevSnap(XSDK_HANDLE hDevice, int nChannel, const char *szPicType, int nSeq = 0);
  164. // 强制I帧
  165. // 功能说明:强制生成一个视频关键帧
  166. // nChannel:通道号
  167. // nStreamType:码流类型(0主码流,1子码流)
  168. XSDK_API int CALLBACK XSDK_MakeKeyFrame(XSDK_HANDLE hDevice, int nChannel, int nStreamType);
  169. // 实时媒体播放
  170. // MsgId:ESXSDK_MEDIA_START_REAL_PLAY
  171. // > 0 : 成功
  172. // <= 0 : 失败
  173. XSDK_API XSDK_HANDLE CALLBACK XSDK_MediaRealPlay(XSDK_HANDLE hDevice, SXMediaRealPlayReq *pParam, int nSeq = 0, int nTimeout = 0);
  174. // 录像回放
  175. // MsgId:ESXSDK_MEDIA_START_RECORD_PLAY
  176. // > 0 : 成功
  177. // <= 0 : 失败
  178. XSDK_API XSDK_HANDLE CALLBACK XSDK_MediaRecordPlay(XSDK_HANDLE hDevice, SXMediaRecordReq *pParam, int nSeq, int nTimeout = 0);
  179. // 录像下载
  180. // MsgId:ESXSDK_MEDIA_DOWN_RECORD_FILE
  181. // > 0 : 成功
  182. // <= 0 : 失败
  183. XSDK_API XSDK_HANDLE CALLBACK XSDK_MediaRecordDownload(XSDK_HANDLE hDevice, SXMediaRecordReq *pParam, int nSeq, int nTimeout = 0);
  184. // 按文件名称下载
  185. // MsgId:ESXSDK_MEDIA_DOWN_IMAGE_FILE
  186. // > 0 : 成功
  187. // <= 0 : 失败
  188. XSDK_API XSDK_HANDLE CALLBACK XSDK_MediaRecordDownloadByName(XSDK_HANDLE hDevice, SXMediaRecordByFileReq *pParam, int nSeq, int nTimeout = 0);
  189. // 录像回放/下载控制->暂停/继续
  190. XSDK_API int CALLBACK XSDK_MediaPause(XSDK_HANDLE hMedia, bool bPause);
  191. // 录像回放跳转
  192. // szTime:YYYY-MM-DD HH:mm:SS
  193. XSDK_API int CALLBACK XSDK_MediaSeekToTime(XSDK_HANDLE hMedia, const char *szTime);
  194. // 回放速度控制
  195. // -1~-4:慢放1~4档
  196. // 1~4:快放1~4档
  197. // 0:恢复
  198. XSDK_API int CALLBACK XSDK_MediaSetSpeed(XSDK_HANDLE hMedia, int nSpeed);
  199. // 人脸识别图片回调
  200. // MsgId:ESXSDK_MEDIA_START_FACE_IMAGE
  201. // > 0 : 成功
  202. // <= 0 : 失败
  203. XSDK_API XSDK_HANDLE CALLBACK XSDK_MediaGetFaceImage(XSDK_HANDLE hDevice, SXMediaFaceImageReq *pParam, int nSeq = 0, int nTimeout = 0);
  204. // 实时预览/录像回放/下载--停止
  205. XSDK_API void CALLBACK XSDK_MediaStop(XSDK_HANDLE nMediaId);
  206. //对密码进行MD5加密,适用于用户密码修改---加密密码长度最大512
  207. XSDK_API int CALLBACK XSDK_EncryptPassword(const char * inputPswBuf, signed char * outputPswBuf, int PswSize);
  208. //跨网段修改设备IP
  209. // lpInputbuffer-----需要发送的配置SXSDK_CONFIG_NET_COMMON_V2
  210. // > 0:成功
  211. // <= 0:失败
  212. XSDK_API int CALLBACK XSDK_ModifyDevIP(const char* lpInputbuffer, int buffersize, int nTimeout);
  213. //修改设备密码
  214. // pConfig-----需要发送的配置SXSDK_MODIFY_PSW
  215. // ESXSDK_DEV_SET_SYS_CONFIG = 12008, // 设备系统配置设置
  216. XSDK_API int CALLBACK XSDK_DevModifyIPConfig(XSDK_HANDLE hDevice, const char *pConfig, int nConfigLen, int nSeq, int nTimeout);
  217. //升级设备
  218. // MsgId:ESXSDK_DEV_UPGRADE
  219. // > 0 : 成功
  220. // <= 0 : 失败
  221. XSDK_API XSDK_HANDLE CALLBACK XSDK_DevUpgrade(XSDK_HANDLE hDevice, const char * fileName, int nSeq, int nTimeout);
  222. // 开启/关闭设备主动注册服务
  223. // szServerIP :服务器IP
  224. // nServerPort: 监听端口
  225. // MsgId:ESXSDK_ON_DAS_SERVER_START
  226. // 返回:此服务操作句柄,可用来关闭服务
  227. // 注意:如果端口被占用,SDK内部会不断重试,直到成功
  228. XSDK_API XSDK_HANDLE CALLBACK XSDK_StartDASServer(const char *szServerIP, int nServerPort);
  229. XSDK_API void CALLBACK XSDK_StopDASServer(XSDK_HANDLE hServer);
  230. // 通过设备DeviceId(可以在DAS配置中设置),获取设备登录句柄
  231. XSDK_API XSDK_HANDLE CALLBACK XSDK_GetDASDevHandle(const char *szDeviceId);
  232. // 打开对讲功能
  233. // MsgId:ESXSDK_MEDIA_START_TALK
  234. XSDK_API XSDK_HANDLE CALLBACK XSDK_StartTalk(XSDK_HANDLE hDevice, SXMediaTalkReq *pParam);
  235. //发送对讲数据
  236. // MsgId:ESXSDK_DEV_SET_SYS_CONFIG
  237. XSDK_API XSDK_HANDLE CALLBACK XSDK_SendTalkData(XSDK_HANDLE hMedia, const char *pBuffer, int nBufLen);
  238. /////////////////透明串口通道/////////////////
  239. // szComType:串口类型
  240. #define S_XTRANS_COMM_RS232 "RS232"
  241. #define S_XTRANS_COMM_RS485 "RS485"
  242. XSDK_API XSDK_HANDLE CALLBACK XSDK_OpenTransCom(XSDK_HANDLE hDevice, const char *szComType);
  243. //关闭透明串口
  244. XSDK_API void CALLBACK XSDK_CloseTransCom(XSDK_HANDLE hTranport);
  245. //向串口写数据
  246. //nSerialType---------0:RS232;1:RS485
  247. XSDK_API int CALLBACK XSDK_TransComWrite(XSDK_HANDLE hDevice, int nSerialType, const char *pBuffer, int nBufLen, int nSeq);
  248. //获取重置密码相关信息
  249. //
  250. XSDK_API int CALLBACK XSDK_GetResetPswInfo(int nDevPort, const char * sDevId, const char *szCommandName, int nSeq, int nTimeout);
  251. //设置重置密码相关信息
  252. //
  253. XSDK_API int CALLBACK XSDK_SetResetPswInfo(int nDevPort, const char * sDevId, const char *szCommandName, const char *pConfig, int nConfigLen, int nSeq, int nTimeout);
  254. #ifdef __cplusplus
  255. }
  256. #endif
  257. #endif //_XNetSDK_H_