型号: 海康 DS-2DM7274-A
控制通过HTTP实现, pan 左右移动 titl 上下移动 zoom 缩放 看主要代码吧.
生成命令:
switch(iCommand)
{
case PTZ_LEFT:
sprintf(strXMLInfo, "
break;
case PTZ_RIGHT:
sprintf(strXMLInfo, "
break;
case PTZ_UP:
sprintf(strXMLInfo, "
break;
case PTZ_DOWN:
sprintf(strXMLInfo, "
break;
case PTZ_UP_LEFT:
sprintf(strXMLInfo, "
break;
case PTZ_UP_RIGHT:
sprintf(strXMLInfo, "
break;
case PTZ_DOWN_LEFT:
sprintf(strXMLInfo, "
break;
case PTZ_DOWN_RIGHT:
sprintf(strXMLInfo, "
break;
case PTZ_ZOOM_IN:
sprintf(strXMLInfo, "
break;
case PTZ_ZOOM_OUT:
sprintf(strXMLInfo, "
break;
case PTZ_FOCUS_FAR:
sprintf(strCommand, "PUT /PSIA/System/Video/inputs/channels/%d/focus HTTP/1.1", iChannel);
sprintf(strXMLInfo, "
break;
case PTZ_FOCUS_NEAR:
sprintf(strCommand, "PUT /PSIA/System/Video/inputs/channels/%d/focus HTTP/1.1", iChannel);
sprintf(strXMLInfo, "
break;
case PTZ_IRIS_INC:
sprintf(strCommand, "PUT /PSIA/System/Video/inputs/channels/%d/iris HTTP/1.1", iChannel);
sprintf(strXMLInfo, "
break;
case PTZ_IRIS_DEC:
sprintf(strCommand, "PUT /PSIA/System/Video/inputs/channels/%d/iris HTTP/1.1", iChannel);
sprintf(strXMLInfo, "
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, "
//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 实现