海康 PTZ HTTP控制

来源:互联网 发布:linux at 编辑:程序博客网 时间:2024/05/16 05:03

    型号: 海康 DS-2DM7274-A

    控制通过HTTP实现,  pan 左右移动 titl 上下移动  zoom 缩放   看主要代码吧.

 

    生成命令:

 switch(iCommand)
 {
 case PTZ_LEFT:
  sprintf(strXMLInfo, "<PTZData><pan>-%d</pan><tilt>0</tilt></PTZData>", iRate);
  break;
 case PTZ_RIGHT:
  sprintf(strXMLInfo, "<PTZData><pan>%d</pan><tilt>0</tilt></PTZData>", iRate);
  break;
 case PTZ_UP:
  sprintf(strXMLInfo, "<PTZData><pan>0</pan><tilt>%d</tilt></PTZData>", iRate);
  break;
 case PTZ_DOWN:
  sprintf(strXMLInfo, "<PTZData><pan>0</pan><tilt>-%d</tilt></PTZData>", iRate);
  break;
 case PTZ_UP_LEFT:
  sprintf(strXMLInfo, "<PTZData><pan>-%d</pan><tilt>%d</tilt></PTZData>", iRate, iRate);
  break;
 case PTZ_UP_RIGHT:
  sprintf(strXMLInfo, "<PTZData><pan>%d</pan><tilt>%d</tilt></PTZData>", iRate, iRate);
  break;
 case PTZ_DOWN_LEFT:
  sprintf(strXMLInfo, "<PTZData><pan>-%d</pan><tilt>-%d</tilt></PTZData>", iRate, iRate);
  break;
 case PTZ_DOWN_RIGHT:
  sprintf(strXMLInfo, "<PTZData><pan>%d</pan><tilt>-%d</tilt></PTZData>", iRate, iRate);
  break;
 case PTZ_ZOOM_IN:
  sprintf(strXMLInfo, "<PTZData><zoom>-%d</zoom></PTZData>", iRate);
  break;
 case PTZ_ZOOM_OUT:
  sprintf(strXMLInfo, "<PTZData><zoom>%d</zoom></PTZData>", iRate);
  break;
 case PTZ_FOCUS_FAR:
  sprintf(strCommand, "PUT /PSIA/System/Video/inputs/channels/%d/focus HTTP/1.1", iChannel);
  sprintf(strXMLInfo, "<FocusData><focus>%d</focus></FocusData>", iRate);
  break;
 case PTZ_FOCUS_NEAR:
  sprintf(strCommand, "PUT /PSIA/System/Video/inputs/channels/%d/focus HTTP/1.1", iChannel);
  sprintf(strXMLInfo, "<FocusData><focus>-%d</focus></FocusData>", iRate);
  break;
 case PTZ_IRIS_INC:
  sprintf(strCommand, "PUT /PSIA/System/Video/inputs/channels/%d/iris HTTP/1.1", iChannel);
  sprintf(strXMLInfo, "<IrisData><iris>%d</iris></IrisData>", iRate);
  break;
 case PTZ_IRIS_DEC:
  sprintf(strCommand, "PUT /PSIA/System/Video/inputs/channels/%d/iris HTTP/1.1", iChannel);
  sprintf(strXMLInfo, "<IrisData><iris>-%d</iris></IrisData>", iRate);
  break;
 case PTZ_SAVE_PRESET:
  sprintf(strCommand, "PUT /PSIA/PTZ/channels/%d/presets/%d HTTP/1.1", iChannel, iPresetID);
  memset(szInfo, 0, 512);
  sprintf(szInfo, "<PTZPreset><id>%d</id><presetName>%s</presetName></PTZPreset>", iPresetID, strPresetName);
  //GB2312ToUTF_8(strXMLInfo, iLen, szInfo, strlen(szInfo));  //有中文需要转为UTF_8
  break;
 case    PTZ_LOAD_PRESET:    
  sprintf(strCommand, "PUT /PSIA/PTZ/channels/%d/presets/%d/goto HTTP/1.1", iChannel, iPresetID);
  break;
 case PTZ_HOME:
  sprintf(strCommand, "PUT /PSIA/Custom/SelfExt/PTZ/channels/%d/homePosition/goto HTTP/1.1", iChannel);
  break;
 case PTZ_GET_PRESET:
  sprintf(strCommand, "GET /PSIA/PTZ/channels/%d/presets HTTP/1.1", iChannel);
  break;
 default:
  break;
 }

 

发送命令:

int iSend = 0;
 char szInfo[512];

 iSend = SendString( m_hSocket,  strCommand);
 SendString( m_hSocket, "\r\n" );
 
 iSend = SendString( m_hSocket, "If-Modified-Since: 0"); 
 SendString( m_hSocket, "\r\n" );
 
 iSend = SendString( m_hSocket, "User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0) LBBROWSER");
 SendString( m_hSocket, "\r\n" );


 iSend = SendString( m_hSocket, "Content-Type: application/x-www-form-urlencoded");
 SendString( m_hSocket, "\r\n" );

 iSend = SendString( m_hSocket, "Accept: */*");
 SendString( m_hSocket, "\r\n" );


 memset(szInfo, 0, 512);
 sprintf(szInfo, "Authorization: Basic %s", strAuthorization);
 //iSend = SendString( m_hSocket, "Authorization: Basic YWRtaW46MTIzNDU=");  //用户名:密码   生成base64格式
 iSend = SendString( m_hSocket, szInfo);
 SendString( m_hSocket, "\r\n" );

 iSend = SendString( m_hSocket, "X-Requested-With: XMLHttpRequest");  //XMLCPTZHK
 SendString( m_hSocket, "\r\n" );


 memset(szInfo, 0, 512);
 sprintf(szInfo, "Referer: http://%s/doc/page/preview.asp?version=3.1.3.130905", m_strIP.c_str());
 //iSend = SendString( m_hSocket, "Referer: http://192.168.1.180/doc/page/preview.asp?version=3.1.3.130905");
 iSend = SendString( m_hSocket, szInfo);
 SendString( m_hSocket, "\r\n" );

 iSend = SendString( m_hSocket, "Accept-Language: zh-cn");
 SendString( m_hSocket, "\r\n" );

 iSend = SendString( m_hSocket, "Accept-Encoding: gzip, deflate");
 SendString( m_hSocket, "\r\n" );


 memset(szInfo, 0, 512);
 sprintf(szInfo, "Host: %s", m_strIP.c_str());
 //iSend = SendString( m_hSocket, "Host: 192.168.1.180");
 iSend = SendString( m_hSocket, szInfo);
 SendString( m_hSocket, "\r\n" );

 if (0 < strlen(strXMLInfo) )
 {
  int iLen = strlen(strXMLInfo) + strlen(xml_header) + 4;

  memset(szInfo, 0, 512);
  sprintf(szInfo, "Content-Length: %d", iLen);
  iSend = SendString( m_hSocket, szInfo);
  SendString( m_hSocket, "\r\n" );
 }
 else
 {
  iSend = SendString( m_hSocket, "Content-Length: 0");
  SendString( m_hSocket, "\r\n" );
 }


 iSend = SendString( m_hSocket, "Connection: Keep-Alive");
 SendString( m_hSocket, "\r\n" );

 iSend = SendString( m_hSocket, "Cache-Control: no-cache");
 SendString( m_hSocket, "\r\n" );

 memset(szInfo, 0, 512);
 sprintf(szInfo, "Cookie: updateTips=true; tabSystem_curTab=0; menu_onemenu=101; menu_twomenu=2_3; tabPtz_curTab=0; userInfo80=%s; language=zh", strAuthorization);
 //iSend = SendString( m_hSocket, "Cookie: updateTips=true; tabSystem_curTab=0; menu_onemenu=101; menu_twomenu=2_3; tabPtz_curTab=0; userInfo80=YWRtaW46MTIzNDU=; language=zh");  //(userInfo80=YWRtaW46MTIzNDU=)最好转为url编码 
 iSend = SendString( m_hSocket, szInfo);

 SendString( m_hSocket, "\r\n" );
 SendString( m_hSocket, "\r\n" );
 
  if (0 < strlen(strXMLInfo))
  {
  iSend = SendString( m_hSocket, xml_header);
  SendString( m_hSocket, "\r\n" );
  
  iSend = SendString( m_hSocket, strXMLInfo);
   SendString( m_hSocket, "\r\n" );
  }

 

源代码下载 : http://download.csdn.net/detail/chenzhjlf/6772563  

VC6 实现

0 0
原创粉丝点击