You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

229 lines
5.4 KiB

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