海康 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 实现
- 海康 PTZ HTTP控制
- .net实现PTZ云台控制
- RS485/云台控制(PTZ)学习文档
- RS485/云台控制(PTZ)学习文档
- 使用Onvif协议进行设备PTZ云台控制
- 初学小结使用Onvif协议进行PTZ控制
- 开源流媒体客户端EasyClient手机端控制摄像机EasyCamera云台PTZ控制实现
- EasyDarwin开源流媒体云平台之云台ptz控制设计与实现
- EasyDarwin开源流媒体云平台之云台ptz控制设计与实现
- Onvif PTZ简介
- axis ptz ros节点
- http控制内容-连接控制
- http控制内容-缓存控制
- http控制内容-状态控制
- http控制内容-传输控制
- http缓存控制
- 【HTTP协议】控制缓存
- HTTP 协议缓存控制
- php数据库操作类代码
- 【Unity3D】【NGUI】如何使用新的Event事件
- playframework中使用JsTree
- sublime下用快捷键直接运行cocos2dx项目
- Asp.net 获取服务器信息
- 海康 PTZ HTTP控制
- 程序代码,常量,局部变量,全局变量,在内存中的储存位置
- asp.net Linq 实现分组查询
- clr via C#笔记(2)
- 修改请求日志以网页形式显示
- 关于Oracle数据库优化的几点总结
- dede5.7当前位置{dede:field.position}的修改方法
- 广州传智播客无法超越的.Net培训
- 请为了家人把这个存下!绝对受用--于彤的养生理念中药秘诀