您的位置:首页 > 理论基础 > 计算机网络

海康 PTZ HTTP控制

2013-12-26 15:18 337 查看
型号: 海康 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 实现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: