您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

227 行
5.4 KiB

  1. #include "XNetSDKTest.h"
  2. #include "XNetSDKSyn.h"
  3. XSDK_HANDLE g_hDevice ;
  4. SXMediaRecordByFileReq info = {0};
  5. bool bFindFile = false;
  6. #define TEST_DAS_SERVER 1
  7. int CALLBACK Main_MessageCallBack(XSDK_HANDLE hDevice, int nMsgId, int nParam1, int nParam2, int nParam3, const char *szString, void *pObject, int nSeq, void *pUserData)
  8. {
  9. int dPos = 0 ;
  10. switch(nMsgId)
  11. {
  12. case ESXSDK_DEV_FIND_FILE:
  13. {
  14. OnDevFindFile(nParam1, (SXSDKQueryRecordRes *)pObject, nParam2, nSeq);
  15. }
  16. break;
  17. case ESXSDK_DEV_LOGIN:
  18. {
  19. printf("ESXSDK_DEV_LOGIN_Ret[%d]\r\n", nParam1);
  20. if (nParam1 == EXSDK_ER_UserOrPassword)
  21. {
  22. XSDK_DevLogout(hDevice);
  23. }
  24. if (nParam1 < 0)
  25. {
  26. printf("ESXSDK_DEV_LOGIN__Error\r\n");
  27. }
  28. }
  29. break;
  30. case ESXSDK_ON_DEV_STATE:
  31. {
  32. printf("ESXSDK_ON_DEV_STATE[%s]\r\n", nParam1 == 6 ? "ESTATE_DEV_Logined" : "ESTATE_DEV_NetDisConnect");
  33. }
  34. break;
  35. case ESXSDK_DEV_GENERAL_COMMAND: // 通用交互返回
  36. case ESXSDK_DEV_GET_SYS_CONFIG: // 设备系统配置获取
  37. case ESXSDK_DEV_SET_SYS_CONFIG: // 设备系统配置设置
  38. case ESXSDK_DEV_GET_CHN_CONFIG: // 设备通道配置获取
  39. case ESXSDK_DEV_SET_CHN_CONFIG: // 设备通道配置设置
  40. {
  41. OnDevConfig(nMsgId, nParam1, szString, (const char *)pObject, nParam2, nSeq);
  42. }
  43. break;
  44. case ESXSDK_ON_SEARCH_DEVICES:
  45. {
  46. OnDevSearchResult(nParam1, (SXSDK_CONFIG_NET_COMMON *)pObject, nParam2);
  47. }
  48. break;
  49. case EXCMD_ALARM_REQ:
  50. {
  51. OnDevAlarmCallback(hDevice, szString);
  52. }
  53. break;
  54. case ESXSDK_DEV_UPGRADE:
  55. {
  56. OnUpgradeCallback((EUpgradeStep)nParam1, nParam2, nParam3);
  57. }
  58. break;
  59. case ESXSDK_ON_DAS_SERVER_START:
  60. {
  61. OnDASServerStart(hDevice, nParam1);
  62. }
  63. break;
  64. case ESXSDK_ON_DAS_DEVICE_REGIST:
  65. {
  66. #ifdef TEST_DAS_SERVER
  67. g_hDevice = hDevice;
  68. #endif
  69. {
  70. OnDASDeviceReg(hDevice, (SXSDKDASDeviceInfo *)pObject);
  71. hDeviceArr[dPos] = hDevice ;
  72. DeviceIdArr[dPos] = ((SXSDKDASDeviceInfo*)pObject)->sDevId ;
  73. dPos++ ;
  74. }
  75. }
  76. break;
  77. case ESXSDK_DEV_SNAP:
  78. {
  79. OnDevSnap(nParam1, (const char *)pObject, nParam2, nSeq);
  80. }
  81. break;
  82. case EXCMD_RS485_TRANSPARENT_DATA_REQ:
  83. case EXCMD_RS232_TRANSPARENT_DATA_REQ:
  84. {
  85. OnTransCommCallback(hDevice, szString);
  86. }
  87. break;
  88. default:
  89. printf("[Dev:%ld][MSG:%d][Ret:%d][Param2:%d][Param3:%d][szParam:%s][Seq:%d]\r\n", hDevice, nMsgId, nParam1, nParam2, nParam3, szString == NULL ? "" : szString, nSeq);
  90. break;
  91. }
  92. return 0;
  93. }
  94. /*****************************************************************************************************
  95. * *
  96. *注: *
  97. *获取到的数据或用于设置的数据可使用本的demo带有的JObject进行解析,也可自己网上找CJson源码集成进行解析*
  98. * *
  99. ******************************************************************************************************/
  100. int main(int argc, char *argv[])
  101. {
  102. SXSDKInitParam initParam = {0};
  103. //initParam.nLogLevel = 3;
  104. initParam.pMsgCallBack = Main_MessageCallBack;
  105. initParam.pUserData = (void *)0x123456;
  106. XSDK_Init(&initParam);
  107. // 测试主动注册
  108. #ifdef TEST_DAS_SERVER
  109. TestDASServer();
  110. #else
  111. printf("start login===============");
  112. const char *szDevID = "000002";
  113. int nDevPort = 8989;
  114. const char *szUser = "admin";
  115. const char *szPwd = "";
  116. if (false && argc > 4)
  117. {
  118. szDevID = argv[1];
  119. nDevPort = atoi(argv[2]);
  120. szUser = argv[3];
  121. szPwd = argv[4];
  122. }
  123. SXSDKLoginParam devParam = {0};
  124. strcpy(devParam.sDevId, szDevID);
  125. devParam.nDevPort = nDevPort;
  126. strcpy(devParam.sUserName, szUser);
  127. strcpy(devParam.sPassword, szPwd);
  128. g_hDevice = XSDK_DevLoginSyn(&devParam, 10000);
  129. // g_hDevice = XSDK_DevLogin(&devParam, 4000, 0);
  130. printf("g_hDevice::" + g_hDevice);
  131. #endif
  132. //// 测试设备配置
  133. //TestDevSystemConfig();
  134. ////测试相机相关配置
  135. //TestCameraConfig();
  136. ////测试编码格式配置
  137. // TestEncodeConfig();
  138. //// 测试设备云台功能
  139. //TestDevPTZ();
  140. //// 测试录像查询
  141. //TestDevFindFile();
  142. //// 设备设备报警回调
  143. //TestDevAlarmCallback();
  144. //// 测试实时视频
  145. TestMediaRealPlay();
  146. //// 设备录像回放
  147. // TestMediaRecordPlay();
  148. //// 测试人脸抓图(带有人脸功能的设备专用)
  149. //TestMediaFaceImage();
  150. //// 设备搜索并修改搜索到的设备IP(默认修改搜索到的第一个设备,密码是写死的需要再代码里修改)
  151. //TestDevSearch();
  152. //测试修改设备密码
  153. //TestModifyPassword();
  154. //测试恢复默认配置
  155. //TestSetDefaultConfig();
  156. //测试录像下载
  157. //TestDownload();
  158. //测试控制设备
  159. //TestOPMachine();
  160. // 测试设备通道抓图
  161. //TestDevSnap();
  162. //测试升级设备程序
  163. //TestUpgrade();
  164. //测试打开透明串口通道
  165. //TestOpenTransChannel();
  166. //测试向串口写数据
  167. //TestSerialWrite();
  168. ////测试对讲
  169. //TestDevTalk();
  170. //日志查询
  171. //TestOPLogQuery();
  172. ///视频叠加
  173. //TestOSDInfo();
  174. ////图像参数配置
  175. //TestVideoCfg();
  176. ////云台预置点及巡航
  177. //TestPTZPreset();
  178. /////按文件名称下载(一般用于下载存储在SD卡上的图片)
  179. //TestDownloadByName();
  180. if (g_hDasServer)
  181. {
  182. XSDK_StopDASServer(g_hDasServer);
  183. g_hDasServer = 0;
  184. }
  185. XSDK_DevLogout(g_hDevice);
  186. XSDK_UnInit();
  187. return 0;
  188. }