25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

221 lines
5.2 KiB

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