如题:身份证阅读器(读卡器)谷歌Chrome和火狐Firefox浏览器端网页开发接口控件分享,这个SDK开发包兼容支持谷歌Chrome浏览器和火狐Firefox浏览器,仅PC端使用,Android和iOS端浏览器不支持使用。



测试版本:
谷歌Chrome:58.0.3029.96
火狐Firefox:54.0.1
360安全浏览器:8.1.1.258
Internet Explorer:IE11

支持型号:华旭J15S、华旭J10-X

正在开发中型号:华视CVR-100U,神思SS628-100U、神盾ICR-100U、新中新DKQ-A16D,精伦IDR210、普天等;

以下贴出身份证阅读器谷歌和火狐浏览器控件部分代码,如需要完整版,请下载或联系我,QQ:313826379


<html>  
  <head>
  	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<style>
			td {background-color:#eeeeee}
			input {width:430px;}
			.butt {width:150px; height:30px}
			.title {padding-left:10px; width:130px}
		</style>  	
  </head>  
  <!--
  <object  class width=0 height=0"></object>
  -->
  <object  TYPE="application/hxgc-device.j10" width=0 height=0></object>
	<body> 
		<table width="750px" border="0" cellspacing="1" cellpadding="2" align="center" bgcolor="#FFFFFF">
			<tr>
				<td colspan="3" align="center">
					<input  type="button" name="OpenReader" value="打开设备" onClick="openReader();">
					<input  type="button" name="startReadCard" value="读二代证" onClick="startReadCard();">
					<input  type="button" name="CloseReader" value="关闭设备" onClick="closeReader();">
					<input  type="button" name="Clear" value="清空信息" onClick="clearText();">
				</td>
			</tr> 
			<tr> 
				  <td >照片保存路径:</td>
				  <td colspan="2">
					<input type="text" name="text_path"  value="">  注:路径结尾需添加""
				  </td>
			</tr>
	        <tr> 
	 			  <td >姓名:</td>
				  <td width="430px">
					<input type="text" name="text_name"  value="" readonly >
				  </td>
				  <td rowspan="5" align="center"><img  name="Photo" /></td>
			</tr>
			<tr> 
				  <td >性别:</td>
				  <td>
					<input type="text" name="text_sex"  value="" readonly >
				  </td>
			</tr>
			<tr> 
				  <td >民族:</td>
				  <td>
					<input type="text" name="text_nation"  value="" readonly >
				  </td>
			</tr>
			<tr> 
				  <td >出生:</td>
				  <td>
					<input type="text" name="text_birthday"  value="" readonly >
				  </td>
			</tr>
			<tr> 
				  <td >地址:</td>
				  <td>
					<input type="text" name="text_address"  value="" readonly >
				  </td>
			</tr>
			<tr> 
				  <td >身份证号:</td>
				  <td colspan="2">
					<input type="text" name="text_idNum"  value="" readonly >
				  </td>
			</tr>
			<tr> 
				  <td >签发机关:</td>
				  <td colspan="2">
					<input type="text" name="text_dept"  value="" readonly >
				  </td>
			</tr>
			<tr> 
				  <td >开始期限:</td>
				  <td colspan="2">
					<input type="text" name="text_effDate"  value="" readonly >
				  </td>
	 		</tr>
	 		<tr> 
				<td >结束期限:</td>
				<td colspan="2">
					<input type="text" name="text_expDate"  value="" readonly >
				</td>
	 		</tr>
	 		<tr> 
				<td >返回数据:</td>
			    <td colspan="2">
					<textarea  rows="10" name="text_result"   cols="70" readonly></textarea>
				</td>
	 		</tr>   
		</table>
		<script type="text/javascript" >  
			var socket;
			var sendFlag=0;
			var PhotoPath = "C:";
			var PhotoName = "";	
			document.getElementById("text_path").value = PhotoPath;
			function clearText()
			{
				PhotoPath = document.all("text_path").value;
				document.getElementById("text_name").value = "";
				document.getElementById("text_sex").value = "";
				document.getElementById("text_nation").value = "";
				document.getElementById("text_birthday").value = "";
				document.getElementById("text_address").value = "";
				document.getElementById("text_idNum").value = "";
				document.getElementById("text_dept").value = "";
				document.getElementById("text_effDate").value = "";
				document.getElementById("text_expDate").value = "";
				document.getElementById("text_result").value = "";
				document.getElementById("PhotoID").src = "";
			}
			function openReader() {
				var host = "";
				socket = new WebSocket(host);
				try {
					socket.onopen = function (msg) {
						openReaderStart(); //连接设备
					};
					socket.onerror = function(){
					};
					socket.onmessage = function (msg) {
						if (typeof msg.data == "string") {
						var msgM=msg.data+"";
							if(sendFlag==1){
								if(msgM[0]==0){
									resultMsg("错误:设备连接失败,"+msgM);
								}else if(msgM.indexOf("-1") >=0){
									resultMsg("该设备不支持谷歌");
								}else{
									resultMsg("设备已连接.");
								}
							}else if(sendFlag==2){
								if(msgM.indexOf("1") >=0){
									//resultMsg("身份证已放");
									getCardID();
								}else{
									resultMsg("请放身份证");
								}
							}else if(sendFlag==3&&!(msgM.indexOf("name") >=0)&& !(msgM[0].indexOf("1") >=0)){
								if(msgM[0]==0){
									resultMsg("读取身份证ID失败");
								}else{
									resultMsg("身份证ID:"+msgM);
									readIDCard();
								}
							}else if(sendFlag==4){
								if(msgM[0] == "0"){
									resultMsg("读取身份证信息失败:"+msgM);
								}else{
									//获得身份信息
									document.getElementById("text_name").value = msgM.match(/name(S*)name/)[1];   //姓名    
									document.getElementById("text_sex").value = msgM.match(/sex(S*)sex/)[1];   //性别             
									document.getElementById("text_nation").value = msgM.match(/nation(S*)nation/)[1];     //民族                      
									document.getElementById("text_birthday").value = msgM.match(/birthDate(S*)birthDate/)[1];       //出生日期                  
									document.getElementById("text_address").value = msgM.match(/address(S*)address/)[1];          //地址  
									document.getElementById("text_idNum").value = msgM.match(/IDCode(S*)IDCode/)[1];         //身份证号      
									document.getElementById("text_dept").value = msgM.match(/issuingAuthority(S*)issuingAuthority/)[1];  //签发机关                         
									document.getElementById("text_effDate").value = msgM.match(/beginPeriodOfValidity(S*)beginPeriodOfValidity/)[1];       //有效日期起始                   
									document.getElementById("text_expDate").value = msgM.match(/endPeriodOfValidity(S*)endPeriodOfValidity/)[1];        //有效日期截止
									saveJpgPhoto(msgM.match(/name(S*)name/)[1] + "_" + msgM.match(/IDCode(S*)IDCode/)[1]);
								}
							}else if(sendFlag==5){
								if(msgM.indexOf("1") >=0){
									resultMsg("保存JPG照片成功,路径 = " + PhotoPath + PhotoName + ".jpg");
									saveBmpPhoto();
								}else{
									resultMsg("错误:保存JPG照片失败," + msgM + ".");
								}
							}else if(sendFlag==6){
								document.all("PhotoID").src = "file:///"+ PhotoPath + PhotoName + ".jpg";
								if(msgM.indexOf("1") >=0){
									resultMsg("保存BMP照片成功,路径 = " + PhotoPath + PhotoName + ".bmp");
								}else{
									resultMsg("错误:保存BMP照片失败," + msgM + ".");
								}
							}else if(sendFlag==7){
								closeSocket();
								if(msgM.indexOf("1") >=0){
									resultMsg("关闭设备成功");
								}else{
									resultMsg("错误:关闭设备失败,"+msgM);
								}
							}

						}
						else{
							alert("连接异常,请检查是否成功安装华旭J15S驱动!");
						}
					};
				}
				catch (ex) {
					alert("连接异常,请检查是否成功安装华旭J15S驱动!");
				}
			}
			
			function resultMsg(msg) {
			   document.getElementById("text_result").value += "
" + msg;
			}
			
		</script>  
	</body>  
</html>