接到个模块,要在已有的web工程里集成身份证读卡器,高拍仪等硬件。一时摸不着头脑,网上搜了下,发现都写的高端到看不懂。后来找了个已成功集成的web工程研究了下,发现弱爆了。这种硬件设备都已经做好了对web支持的控件(如activeX),浏览器只需对activeX放行。然后在工程中加入厂家提供的web开发包,在需要集成硬件的web页面中引入硬件设备对应的classId,边完成了集成。
例如在页面中集成身份证读卡器:
在页面中添加读卡插件对应的<object>
<object id="CardReader1" codebase="FirstActivex.cab#version=1,3,2,1" classid="CLSID:F225795B-A882-4FBA-934C-805E1B2FBD1B"
width="102" height="126">
<param name="_Version" value="65536"/>
<param name="_ExtentX" value="2646"/>
<param name="_ExtentY" value="1323"/>
<param name="_StockProps" value="0"/>
</object>
在js中,根据id便可以取得读卡信息的对象,就可以取得具体的读卡信息了:
obj.nameL()便是身份证姓名,然后将值赋给对应的标签。
function cardMatch(){ var obj = byId("CardReader1"); if(false==isInit) { obj.setPortNum(0); isInit=true; } obj.Flag=0; //obj.BaudRate=115200; //设置照片保存路径,照片文件名:(身份证号).bmp。默认路径为系统临时目录,照片文件名:image.bmp //obj.PhotoPath=form1.photoPath.value; var rst = obj.ReadCard(); //获取各项信息 if(0x90==rst) { if(isExist("nameMatch")){ byName("nameMatch").value=obj.NameL(); } } }
想把硬件设备读到的图片提交到服务器,可以提交图片的base64码(一般设备的web开发包都已经帮我们转好了)。
后来见到了设备厂商,他们直接给了个web的demo,然后发现他们早都把web所有东西,都做好 了,我们只用粘贴进自己项目即可,早知道早联系他们了。不过因为一般web开发包都是以html为模版的,所以有时候我们把html改成用jsp集成设备,常常会出现activeX控件无法加载,造成设备用不了问题,但是用html则完全正常,这个还在想办法解决。