关于车牌识别一体机的调研记录及总结
调查的目的是寻求兼容多浏览器内核的相机解决方案,记录了一些内容,对小白应该有些帮助
一、相关知识点
1,ActiveX控件
ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。 ActiveX 控件是用于互联网的很小的程序,有时称为插件程序。它们会允许播放动画,或帮助执行任务,如在 Microsoft Update 安装安全更新,因此可以增强您的浏览体验。
2,COM组件、ActiveX、OCX区别
COM 组件就是一组接口的集合,实现了 IDispath 接口的 COM 组件叫做 自动化组件。在自动化组件的基础上,在实现规定的接口就称为 ActiveX 组件,Ocx 是 Activex 的文件载体
一般来讲 ,一个 ActiveX 对应一个 Ocx 文件, 如果愿意, 一个Ocx 文件也可以包含多个 ActiveX 控件 相当于ActiveX
3,<object> 标签
定义一个嵌入的对象。请使用此元素向您的 XHTML 页面添加多媒体。此元素允许您规定插入 HTML 文档中的对象的数据和参数,以及可用来显示和操作数据的代码。
<object> 标签用于包含对象,比如图像、音频、视频、Java applets、ActiveX、PDF 以及 Flash。 object 的初衷是取代 img 和 applet 元素。不过由于漏洞以及缺乏浏览浏览器支持,这一点并未实现。 浏览器的对象支持有赖于对象类型。不幸的是,主流浏览器都使用不同的代码来加载相同的对象类型。 而幸运的是,object 对象提供了解决方案。如果未显示 object 元素,就会执行位于 <object> 和 </object> 之间的代码。通过这种方式,我们能够嵌套多个 object 元素(每个对应一个浏览器) object标签不在dom文档流里面,浏览器在解析的时候先把object放置在最上层,然后依次解析dom文档,放在下层,并且在这里使用z-index是无效的,会造成object内容区域遮住其它内容的问题
二、关于车牌识别一体机ocx控件的说明
此控件设备厂家提供的调用相机的程序,可以基于该控件二次开发,对于不同厂商,此控件会有不同,所以如果使用不同厂商提供的相机,要注册安装的控件也不同
三、.非ie浏览器如何支持activex控件
1,开发相关控件
基于 IE 的 插件 和 基于 webkit 的插件机制是不同的 , IE插件 遵循的是 ACTIVEX 标准, webkit族(FF,OPERA,CHROME,SAFARI) 是采用的 NPAPI 的标准 。
如果你要兼容多种浏览器 ,那么就要在你的 DLL 中公开 AX 和 NPAPI 的接口, AX dll 有四个标准接口,NPAPI 好像也有四个 ,你在你DLL 分别实现就可以了 ,codeproject 上有相关的文章,N多年前的 。 所幸,现在不用那么麻烦了 ,有好事者开发了 firebreath 框架,一次编写就可以实现两种方式的接口。 不过有个坏消息, CHROME 对NPAPI 的支持 是到 2015年9月, 也就是说 你用 NPAPI 或者 firebreath 编写的控件,在9月份之后就不可以在 CHROME 中运行了 。
参考:https://blog.csdn.net/xuebing1995/article/details/78189701?locationNum=5&fps=1
https://blog.csdn.net/johnson2008t/article/details/46126605
PPAPI插件开发指南:http://www.cnblogs.com/fangkm/p/6628425.html
结果:相关资料少,技术难度大,而且开发结果未知
2,安装相关插件
1)支持ocx的插件
https://blog.csdn.net/wangchao1988ok/article/details/45193489
https://www.cnblogs.com/lidabo/p/3580643.html
2)支持ie内核兼容插件
结果:相关插件都不起作用
总结:微软独有的东西,其它浏览器都不支持
四、JavaScript调用OCX
1、注册(安装)他们提供的控件,不是通过ie输入IP访问相机时提示要下载安装的控件,那是他们的配置相机的客户端, 而是他们发给我们的文件

2,、打开注册表,查找 “BRLPRClientCtrl” 控件的classid


HTML调用demo
<html> <head> <meta charset="UTF-8"> <title>demo</title> </head> <body> <div style="text-align:center;" > <div> <button onclick="load()">click</button> <object style="width: 400px;height: 400px;" classid="CLSID:3DBC7290-457B-48A4-8DCD-ADECC11E1228" id="inax0" > </object> </div> </div> <script> function load(){ //1、获取摄像头区域对象 var ocx = document.getElementById('inax0'); //2、打开摄像头,依次配置ip,端口,用户名,密码 var hader= ocx.BRLPRClientOpen ("192.168.2.208", 30000, "admin", "admin"); //3、播放视频 var result=ocx.BRLPRClientStartPlay(hader,0); //额外说明,不同厂商基本是2、3步骤调用的方法名不同,默认端口也不同 } </script> </body> </html>
注意:要使用正确的classid,并设置ie浏览器支持active控件
参考:https://www.cnblogs.com/techdreaming/p/7387925.html
五、整体总结
1、能支持active控件的只有ie浏览器,连他的自家兄弟edge也不行,测试结果是必须ie8以上
2、没有办法能让非ie浏览器支持active控件.
3、active控件是由具体的相机厂家提供的,我们可以根据控件做二次开发,但是不能跳过控件调用相机
所以,基于active控件调用的相机,暂时无法做到多浏览器的兼容,必须使用非active控件调用的相机
六、参考
车牌识别一体机OCX控件使用文档
https://wenku.baidu.com/view/14a249e3482fb4daa48d4bbc.html
车牌识别一体机配置指南:
https://wenku.baidu.com/view/63767e81b9f67c1cfad6195f312b3169a551ea56.html
浙公网安备 33010602011771号