javascript调用c++写的ActiveX控件

 

 下面是一个用C++写的ActiveX控件,主要功能是提供播放摄像头录制录像的视频监控的接口

  用oleview软件来察看ActiveX控件的classid

<!--事件的定义 下面两个标签是定义ActiveX控件的事件RecListNotify(wVidChnId,wYear,wMonth,wDay,strRecList),ErrorMessage(strErrMsg)-->
<script for="Nvrctrl" language="JavaScript" event="RecListNotify(wVidChnId,wYear,wMonth,wDay,strRecList)" type="text/javascript">

<!--当事件RecListNotify(wVidChnId,wYear,wMonth,wDay,strRecList)触发时调用的js函数-->
  eventfunction(wVidChnId,wYear,wMonth,wDay,strRecList)
</script>
<script for="Nvrctrl" language="JavaScript" event="ErrorMessage(strErrMsg)" type="text/javascript">

<!--当事件ErrorMessage(strErrMsg)触发时调用的js函数-->
  ErrorMessageFunction(strErrMsg)
</script>

<script type="text/javascript" >
 var Nvrctrl;
 //事件触发的方法
 function eventfunction(param1,param2,param3,param4,param5) {

   //用alert方法显示出调用事件的参数
    alert("param1 = " + param1);
    alert("param2 = " + param2);
    alert("param3 = " + param3);
    alert("param4 = " + param4);
    alert("param5 = " + param5);
 }
 function ErrorMessageFunction(param1) {

    //用alert方法显示出调用事件的参数
    alert("strErrMsg = " + param1);
 }

 function init() {
  try {
  Nvrctrl = document.getElementById('Nvrctrl');//得到指定的ActiveX控件

  //调用ActiveX控件的方法来连接服务器

  var flage = Nvrctrl.ConnectServer( "172.16.31.20",1730,"admin","admin123",20000,"",0,"",0 );//调用ActiveX控件的方法

  //调用ActiveX控件的方法启动播放视频窗口

var flagePlayWndInit = Nvrctrl.PlayWndInit(1);

  //调用ActiveX控件的方法调出视频播放窗口

  var flagePlayWndChange = Nvrctrl.PlayWndChange(1);

  //调用ActiveX控件的方法开始播放视频监控的图像

  var flageStartMonitor = Nvrctrl.StartMonitor(1,0,0);

  }
  catch (e) {
   alert(e.message);
  } 
 }
</script>

<body onLoad="init()">
 <object id="Nvrctrl" width="400" height="400" classid="CLSID:B71147F5-7242-4623-9DA3-2ADB428D2B72"></object>
 </table>
 </body>
</html>

 

 

                                                                          ActiveX控件的接口说明

 

概述

本文档规定二次开发控件方法和事件,主要功能为提供控制接口和播放窗口

 

控件方法

1.1         ConnectServer

函数原型

short ConnectServer(LPCTSTR strServerIP, short wServerPort, LPCTSTR strUserName, LPCTSTR strPassWord, short wRcvStartPort, LPCTSTR strProxyIP, short wProxyPort, LPCTSTR strProxyUserName, LPCTSTR strProxyPassWord )

功能  

连接服务器

参数 

strServerIP            要与其建立连接的服务器的IP地址

        wServerPort           服务器端口,缺省为1730

        strUserName          连接服务器的用户名

        strPassWord           连接服务器的密码

        wRcvStartPort         本地接收起始端口号,缺省6000

strProxyIP            代理服务器的IP地址,无代理服务器填0

wProxyPort           代理服务器的端口号,无代理服务器填0

strProxyUserName      代理服务器的用户名

strProxyPassWord      代理服务器的密码

返回值:

成功返回0返回值非零为错误码,对应错误事件通知中的错误描述

 

1.2         PlayWndInit

函数原型

short  PlayWndInit(short wWndNum)

功能  

初始化,创建解码器及播放窗口(最多16个),一般为byWndNum=1

参数 

wWndNum  播放窗口数目

返回值:

成功返回0返回值非零为错误码,对应错误事件通知中的错误描述

 

1.3         PlayWndChange

函数原型

void  PlayWndChange (short wWndNum)

功能     

窗口切换

参数    

wWndNum, 窗口数, 一般为wWndNum =1

返回值:  

成功返回0返回值非零为错误码,对应错误事件通知中的错误描述

说明

在调用InitializeWnd后调用此函数,窗口数最多为16

 

1.4         DisConnectServer

函数原型

void  DisConnectServer()

功能     

退出

参数    

返回值:  

说明:

          初始化时调用顺序为InitApp, PlayWndInit, PlayWndChange,其中: PlayWndInit, PlayWndChange只能被调用一次,在调用DisConnect后可以再次调用ConnectServer

 

1.5         StartMonitor

函数原型

short StartMonitor (short wVidChnId, short wVidChnStreamId, short wLocalWndId)

功能:

开始监控 (将编码码流切换至客户端指定窗口解码播放)

   参数:

       wVidChnId 视频通道Id

       wVidChnStreamId 视频通道的码流ID0-主流, 1-辅流,缺省为0

       wLocalWndId  本地播放窗口号

 返回值:

成功返回0返回值非零为错误码,对应错误事件通知中的错误描述

      

1.6         StopMonitor

函数原型

        short StopMonitor(short wLocalWndId)

   功能:

       停止播放

   参数:

       wLocalWndId本地播放窗口号

 返回值:

成功返回0返回值非零为错误码,对应错误事件通知中的错误描述

 

 

1.7          GetRecMonthMap

函数原型

        long GetRecMonthMap(short wVidChnId, short wYear, short wMonth);

   功能:

        得到录像月历表(可以知道哪天有录像)

   参数:

       wVidChnId视频通道Id

       wYear

       wMonth

 返回值:

成功返回非0月历,失败返回0

       说明:

           若成功返回,返回值的0-31位表示当月的0-31日是否有录像,0表示没有,1表示有

 

1.8         QueryDayRecList

函数原型

        short QueryDayRecList(short wVidChnId, short wYear, short wMonth, short wDay)

   功能:

        查询日录像列表

   参数:

       wVidChnId视频通道Id

       wYear

       wMonth

       wDay

 返回值:

成功返回0返回值非零为错误码,对应错误事件通知中的错误描述

       说明:

                     按日查询当日的录像列表,与上一函数配合使用,先得到月历,再查询有录像的某天的录像列表,成功会产生RecListNotify事件

 

1.9         StartRecPlay

函数原型

        short StartRecPlay(short wVidChnId, short wRecListId, short wLocalWndId)

   功能:

        开始录像播放

   参数:

       wVidChnId视频通道Id

       wRecListId 录像列表Id

       wLocalWndId本地播放窗口号

 返回值:

成功返回0返回值非零为错误码,对应错误事件通知中的错误描述

       说明:

                      开始播放wRecListId标识的这段录像,从其开始时间按正常速度播放

 

1.10     StopRecPlay

short StopRecPlay(short wLocalWndId)

   功能:

       停止播放录像

   参数:

       wLocalWndId 本地播放窗口号

   返回值:

成功返回0返回值非零为错误码,对应错误事件通知中的错误描述

 

1.11     RecPlayControl

short RecPlayControl(short wLocalWndId, short wCommand, long dwParam) 

 功能:

       录像播放控制

   参数:

       wLocalWndId本地播放窗口号

wCommand 控制命令

dwParam 控制参数

   返回值:

成功返回0返回值非零为错误码,对应错误事件通知中的错误描述

       说明:

           有如下控制命令:

#define  RECPLAYCTRL_PAUSE                    1 //暂停

#define  RECPLAYCTRL_RESUME                  2 //继续

#define  RECPLAYCTRL_SETRATE                  3 //(),见放像速度参数

#define  RECPLAYCTRL_SEEK                     4 //拖拉,重新从一个绝对时间播放

#define  RECPLAYCTRL_ONEFRAME               5 //单帧

#define  RECPLAYCTRL_KEYFRAME               6 //关键帧放像

 

有如下放像速度参数:

#define  RECPLAYSPEED_SLOW16                 10//1/16速播放

#define  RECPLAYSPEED_SLOW8                    20//1/8速播放

#define  RECPLAYSPEED_SLOW4                    30//1/4速播放

#define  RECPLAYSPEED_SLOW2                    40//1/2速播放

#define  RECPLAYSPEED_NORMAL                50//正常速播放

#define  RECPLAYSPEED_FAST2                   60//2倍速播放

#define  RECPLAYSPEED_FAST4                   70//4倍速播放

#define  RECPLAYSPEED_FAST8                    80//8倍速播放

#define  RECPLAYSPEED_FAST16                   90//16倍速播放

 

1.12     PtzControl

函数原型

short PtzControl(short wVidChnId, short wCmdId, short wParam1, short wParam2) 

功能:

       摄像头的PTZ控制

   参数:

       wVidChnId视频通道Id

       wCmdId   摄像头控制命令

       wParam1  控制参数1

       wParam2  控制参数2

   返回值:

成功返回0返回值非零为错误码,对应错误事件通知中的错误描述

       说明:

           摄像头控制命令定义:

           const u8 CAMCTRL_COMMAND_MOVEUP      =      1 ;     //向上移动

const u8 CAMCTRL_COMMAND_MOVEDOWN       =  2;      //向下移动

const u8 CAMCTRL_COMMAND_MOVELEFT   =      3;      //向左移动

const u8 CAMCTRL_COMMAND_MOVERIGHT       =  4;      //向右移动

const u8 CAMCTRL_COMMAND_MOVEHOME =  5;      //回归

const u8 CAMCTRL_COMMAND_MOVESTOP  =      6;      //停止移动

const u8 CAMCTRL_COMMAND_ZOOMTELE   =      7;      //拉近摄像头

const u8 CAMCTRL_COMMAND_ZOOMWIDE  =      8;      //拉远摄像头

const u8 CAMCTRL_COMMAND_ZOOMSTOP   =      9;      //视野调节停止

const u8 CAMCTRL_COMMAND_FOCUSFAR   =      10 ;   //将焦距调远

const u8 CAMCTRL_COMMAND_FOCUSNEAR       =  11 ;   //将焦距调近

const u8 CAMCTRL_COMMAND_FOCUSAUTO       =  12 ;   //自动调焦

const u8 CAMCTRL_COMMAND_FOCUSSTOP =      13 ;   //调焦停止

const u8 CAMCTRL_COMMAND_PRESETSET  =      14 ;   //摄象头预存

const u8 CAMCTRL_COMMAND_PRESETCALL       =  15;    //调摄象头预存

const u8 CAMCTRL_COMMAND_CAMERASET       =  16 ;   //初始化摄像头

const u8 CAMCTRL_COMMAND_BRIGHTUP    =      17 ;   //画面调亮

const u8 CAMCTRL_COMMAND_BRIGHTDOWN     =  18 ;   //画面调暗

const u8 CAMCTRL_COMMAND_BRIGHTSTOP       =  19 ;   //停止调亮

          

控制参数的定义:

命令:CAM_COMMAND_MOVEUP,CAM_COMMAND_MOVEDOWN,

CAM_COMMAND_MOVELEFT,CAM_COMMAND_MOVERIGHT,

CAM_COMMAND_MOVEHOME,CAM_COMMAND_MOVESTOP

参数:(m_byParam1,m_byParam2都有意义)

   m_byParam1/水平运行速度,范围:0-15

   m_byParam2/垂直运行速度,范围:0-15

 

命令:CAM_COMMAND_ZOOMTELE,CAM_COMMAND_ZOOMWIDE

:(m_byParam1有意义)

   m_byParam1/视野变化速度,范围:0-15

 

命令:CAM_COMMAND_ZOOMSTOP,CAM_COMMAND_FOCUSFAR,

CAM_COMMAND_FOCUSNEAR,CAM_COMMAND_FOCUSAUTO,

CAM_COMMAND_FOCUSSTOP, CAM_COMMAND_CAMERASET

参数:(m_byParam1,m_byParam2都无意义)

 

命令:CAM_COMMAND_PRESETSET,CAM_COMMAND_PRESETCALL

参数:(m_byParam1有意义)

   m_byParam1/预置位范围号,范围:1-16

 

1.13     GetErrorDescription

BSTR GetErrorDescription(short wErrorNo);

   功能:

       得到错误描述

   参数:

       wErrorNo 错误号

   返回值:

返回对应错误事件通知中的错误描述

 

控件事件

1.14     OperateResult

参数:

long dwOperateResult1时表示与Server(服务器)断链通知

 

1.15     ErrorMessage

      控制错误信息通知

参数:

LPCTSTR strErrMsg 错误信息描述

 

1.16     NormalMessage

控制信息通知

参数:

short wMsgId 信息标识,

LPCTSTR strNomalMsg信息描述

 

1.17     NvtListNotify

发送端列表通知

参数:

LPCTSTR strNvtList XML字符串

<NVTs><NVT><Id></Id><State></State><IPV4></IPV4><Alias></Alias></NVT >…………</NVTs>

 

1.18     RecListNotify

录像列表通知

参数:

short wVidChnId 视频通道Id

short wYear

short wMonth

short wDay

LPCTSTR strRecList XML字符串,表示录像列表通知

<RecLists>

<RecInfo>

<NvtId></NvtId><RecNum></RecNum></RecInfo><RecList><RecListId></RecListId><StartTime></StartTime><EndTime></EndTime></RecList>......</RecLists>

 

  • 0
    点赞
  • 2
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 2 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

blueis

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值