精华内容
下载资源
问答
  • 多功能读写器使用方法
    千次阅读
    2021-08-13 15:28:39

        T10-F 多功能读卡器|读写器是在原 T10 产品基础上加配了扫码模组。同时支持扫码和读写卡的多功能读写机。T10-F 即可以支持接触式 IC 卡和非接触式 IC 卡的读写功能,又可以支持读取磁条卡和居民二代身份证,其中磁条 卡可以支持读取 1、2、3 轨。

        T10-F 多功能读卡器|读写器可广泛用于药店、医院、宾馆、网吧等既需要识别二代证、社保卡、市 民卡、银行卡等实体卡,又需要支持电子虚拟证照(二维码)及二维码支付的高端应用场合。

          T10-F 多功能读写器有一定内置存储器,可用于系统设计中的配置数据存储,机内支持 PSAM 安全认证,以便用于具 有高安全要求的身份认证场合,接口方式可配置支持 USB、RS232。 该产品符合的银行卡检测中心、EMV、卫健委、人社部检测认证标准,支持银联二维码、支付宝、微信 等二维码的识读和支付应用。 


     

    二、产品特点 

     集成接触式智能卡、非接触式智能卡的读写功能 

    支持扫一维码、二维码功能 

     内置公安部的二代证阅读模块,可阅读二代证信息 

    通过人社部检测认证和卫健委居民健康卡产品备案 

    通过 EMV L1 的接触和非接认证,通过银行卡检测中心 PBOC3.0 L1 和 Qpboc3.0 L1 检测认

    三、技术规格 

    产品名称 :T10-F 型多合一读写机 

    接触式卡:支持符合 ISO 7816 标准的接触式卡,采用下降式卡座 ;卡槽寿命≥20 万次 

    非接触式 :支持读写 ISO14443 Type A/B 标准的非接触卡 

    扫码模块:支持扫一维码、二维码

    PSAM 卡:同时可附加 4 个符合 GSM 11.11 的 SAM 卡座,可支持 Sim 卡尺寸 

    状态显示: 4 个 LED 指示灯,指示电源、通讯、读卡、交易等状态 

    打印接口:串行接口 1 个,可外接串行票据打印机 

    操作系统:支持 Windows、Linux、Android、iOS 

    内部时钟:支持内部实时时钟,支持远程同步时间功能 

    与 PC 通讯类型:USB 接口,采用无驱模式

    电 源:采用 USB 接口供电或电源适配器供电 

    USB 供电电压:为 5V,具有过压保护 

    按 键:可外接密码键盘

    外形规格:175×95×50mm 

    重 量: 800g 

    外观颜色 :通用如图,可定制 

    工作温 度 :-20℃~60℃ 

    工作湿 度: 95% 

    所遵循的标准: ISO7816、IS014443、GSM11.11、FCC、ROHS、CE、CCC 

    其他特性:提供通用接口函数库,可支持多种操作系统和语言开发平台

     

    更多相关内容
  • 精伦多功能读写器OCX插件配置使用教程一、简介二、配置使用三、接口文档说明四、代码示例 一、简介 精伦多功能射频卡读写器iDR210是最新推出销售的一款多功能、免装驱动程序的射频卡读写器,可根据需求配置不同部件...

    精伦多功能读写器OCX插件配置使用教程

    一、简介

    精伦多功能射频卡读写器iDR210是最新推出销售的一款多功能、免装驱动程序的射频卡读写器,可根据需求配置不同部件实现不同射频卡的读取和写入功能。当配置了专用身份证安全控制模块(SAM)时,可作为第二代居民身份证阅读器使用。

    产品内置部授权的专用身份证安全控制模块(SAM),采用国际上先进的TypeB非接触IC卡阅读技术,完成对身份证有效性验证和信息的实时读取,并通过通讯口将身份证信息上传到计算机进行解码、显示、存储和查询等处理。同时可兼容读写其他行业定制的基于Type A、Type B规范的行业非接触卡(包括但不限于公交卡、员工卡等),也可单独作为TYPE A卡的射频卡读写器使用。

    可选配两个内置PSAM卡座,实现自定义的卡片认证和管理方式。

    ■ 身份证信息的读取、显示和保存

    与随机阅读软件配合,可自动找卡、实时读取和显示第二代身份证的文字和照片信息,具有黑名单检索和实时报警功能。具备保存、查找、删除、导出、打印等多种功能,可灵活设置信息滞留时间、保存方式、相同记录保存时间间隔等。

    ■ 操作简单

    采用HID USB接口,无需安装驱动、无需外接电源,可直接使用。客户也可以根据需要定制使用RS232接口。
      随机阅读软件自动设置通讯口和通讯参数,自动找卡和读卡。

    ■ 行业应用扩展功能

    可根据不同行业应用需求提供WindowsXP、WindowsCE、Linux和UNIX等不同操作系统下的二次开发支持。可兼容读取其他行业定制的基于Type A、Type B规范的行业非接触卡(包括但不限于公交卡、员工卡等)。

    二、配置使用

    读卡器图片,如下图

    在这里插入图片描述


    注意:安装前先把360等杀毒软件退出,否则可能会影响读卡器的正常使用 准备:先将读卡机设备连接到电脑usb接口,确定连接成功之后在进行一下操作
    以管理员身份运行SetupOCXv4.1.0.5.exe,如下图

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    9.硬件配置已完成接下来就可以使用啦!


    三、接口文档说明

    1.概述 精伦电子股份有限公司开发的二代身份证读卡系列机具适用于相关行业的联机型应用。产品提供了完善的二次软件开发接口(API)。本手册针对提供的ActiveX控件,对开发接口的文件组成、方法定义格式、调用方法及返回值等进行了详细的说明。

    2.接口文件说明 接口文件包括: IdrControl.ocx Dewlt.dll Savephoto.dll Wltrs.dll
    适用开发语言: 网络脚本开发
    第一次使用时,需要以管理员身份运行SetupOCX.exe对控件进行安装注册。

    更新说明:
    V4.1.0.1增加了Routon_ReadForeignBaseInfos、Routon_DecideIDCardType、DecideReadCardType、GetenName、GetcnName、GetNation方法,修改了ReadCard方法,可读取外国人永久居留证。
    V4.0.1.0增加对编码设备支持,可设置日志文件。
    V4.0.0.6增加RepeatRead 方法,可设置后进行连续读身份证。
    V4.0.0.0增加对210-P的支持。
    V3.4.1.4解决和13002相关在20130726的读卡体管理号问题。
    V3.4.1.3解决一个潜在导致内存泄漏的问题。
    V3.4.1.2增加GetCardPhotobuf方法,用于获取身份证正反面图片JPG格式Base64编码信息。
    V3.4.1.0增加ExportPhoto方法,可在读卡结束后生成指定照片和卡图片文件名。

    3.接口方法说明

    3.1.身份证方法
    3.1.1.读身份证方法
    原 型:short ReadCard(long iPort,BSTR PhotoPath)
    说 明:本方法将打开端口、找卡、读卡等功能进行了集成,可用于打开串口或USB口,并判断卡片类型以读取二代证卡内信息和外国人居留证卡内信息。
    参 数:
    1、iPort: 设置串口、USB或iDR210免驱动 USB-HID。
    普通串口 1 – 16(十进制) 例如:
    1:串口1(COM1)
    2:串口2(COM2)
    USB
    USB-HID
    (iDR210) 1001 例如:
    1001:USB
    2、PhotoPath:生成图片文件的绝对路径,包括生成的照片文件photo.bmp,photo.jpg和指定文件名的照片文件,和身份证正反面图片card.jpg。该参数为"“时,默认将照片文件保存到Windows系统临时文件目录(GetTempPath())。也可自行设置保存的路径,比如: “d:\photos\photo.bmp”,注意文件参数必须设置正确,才能正确地将相片文件放在指定位置(相片文件夹若不存在,将会自动生成新文件夹)。
    返 回 值:
    值 说明
    1 正确
    -1 端口初始化失败
    -2 卡认证失败(请重新将卡放到读卡器)
    -3 读取数据失败
    -4 生成照片文件失败(请检查设定路径和磁盘空间)
    注:如果读卡机具连接的端口是确定的,可以直接使用相应端口号调用本方法。否则,可以采用循环查找的方式调用本方法。
    3.1.2.端口初始化方法 原 型:short InitComm(long iPort) 说 明:本方法用于打开串口或USB并检测读卡设备是否就绪。 参 数:iPort: 设置串口或USB(目前串口和USB都只支持16个,即串口1~16和USB1001-1016)
    普通串口 1 – 16(十进制) 例如: 1:串口1(COM1) 2:串口2(COM2) USB USB-HID (iDR210) 1001 例如: 1001:USB
    返 回 值:
    值 意义
    1 正确
    其它 错误
    注:如果读卡机具连接的端口是确定的,可以直接使用相应端口号调用本方法。否则,可以采用循环查找的方式调用本方法。
    3.1.3.端口关闭接口
    原 型:int CloseComm(void)
    说 明:本方法用于关闭已打开的端口,一般在调用InitComm成功并完成读卡任务后调用。
    参 数:无
    返 回 值:
    值 意义
    1 正确
    其它 错误
    3.1.4.卡认证接口
    原 型:short Authenticate (void)
    说 明:本方法用于发现身份证卡并选择卡。
    参 数:无
    返 回 值:
    值 意义
    1 正确
    0 错误
    注:认证卡时,需要将身份证放置于读卡机具上方并做稍许时间的停留。如果方法返回错误表示没有发现卡或者卡停留时间太短。
    3.1.5.读卡信息接口
    原 型:short ReadBaseMsg();
    说 明:本函数用于读取卡中基本信息,包括文字信息与图像信息。
    返 回 值:
    值 意义
    1 正确
    -1 错误,缺少照片解码DLL库文件
    -2 生成wlt文件错
    -4 读基本信息错
    -5 照片解码错
    注:读卡基本信息时,需要将身份证置于读卡机具上方做稍许时间的停留。
    调用返回正确后,可进行下一步获取身份证个人姓名、性别等信息获取调用,
    照片文件photo.bmp放置在当前系统的临时文件目录(GetTempPath())。
    3.1.6.读卡信息并设定照片文件接口
    原  型:short ReadBaseMsgP(BSTR photopath);
    说  明:本函数用于读取卡中基本信息,包括文字信息与图像信息。
    参  数:BSTR photopath 放置照片信息绝对路径名
    返 回 值:
    值 意义
    1 正确
    -1 缺少照片解码DLL库文件
    -2 生成wlt文件错
    -3 照片文件名错
    -4 读基本信息错
    -5 照片解码错
    -6 缺少生成正反面图片DLL库文件
    -7 生成正反面图片错
    注:和ReadBaseMsg功能相仿(读卡实现中两个函数只需调用一个),参数为相片信息文件绝对路径名,可根据开发人员需要放置相片为指定目录文件,如"d:\photos\photo.bmp”,注意文件参数必须设置正确,才能正确地将相片文件放在指定位置(相片文件夹若不存在,将会自动生成新文件夹)
    3.1.7.获得身份证信息个人姓名
    原 型:BSTR GetName();
    说 明:本方法用于获取身份证个人姓名信息。
    返 回 值:个人姓名信息
    注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人姓名信息
    3.1.8.获得身份证个人性别信息(汉字)
    原 型:BSTR GetSex();
    说 明:本方法用于获取身份证个人性别信息。
    返 回 值:个人性别信息,“男"或"女”。
    注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人性别信息
    3.1.9.获得身份证个人性别信息(数字)
    原 型:short GetSexN();
    说 明:本方法用于获取身份证个人性别代码。
    返 回 值:
    值 说明
    1 男
    2 女
    注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人性别信息
    3.1.10.获得身份证信息个人民族(汉字)
    原 型:BSTR GetFolk();
    说 明:本方法用于获取身份证个人民族信息。
    返 回 值:个人民族信息
    注:必须在读卡方法或读卡信息方法调用并调用并返回正确的情况下方能正确获得身份证个人民族信息
    3.1.11.获得身份证信息个人民族(数字)
    原 型:Short GetFolkN();
    说 明:本方法用于获取身份证个人民族数字代码。
    返 回 值:个人民族信息数字代码
    返回值以代码表示,下列是民族编码顺序,汉族编码为1,蒙古为2,依次递推。
    “汉”,“蒙古”,“回”,“藏”,“维吾尔”,“苗”,“彝”,“壮”,“布依”,“朝鲜”,“满”,“侗”,“瑶”,“白”,“土家”,“哈尼”,“哈萨克”,“傣”,“黎”,“傈僳”,“佤”,“畲”,“高山”,“拉祜”,“水”,“东乡”,“纳西”,“景颇”,“柯尔克孜”,“土”,“达斡尔”,“仫佬”,“羌”,“布朗”,“撒拉”,“毛南”,“仡佬”,“锡伯”,“阿昌”,“普米”,“塔吉克”,“怒”,“乌孜别克”,“俄罗斯”,“鄂温克”,“德昂”,“保安”,“裕固”,“京”,“塔塔尔”,“独龙”,“鄂伦春”,“赫哲”,“门巴”,“珞巴”,“基诺”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“芒人”,“摩梭人”,“革家人”,“穿青人”,“入籍”,“其他”
    注:必须在读卡方法或读卡信息方法调用并调用并返回正确的情况下方能正确获得身份证个人民族信息
    3.1.12.获得身份证个人身份证号信息
    原 型:BSTR GetCode();
    说 明:本方法用于获取身份证个人身份证号信息。
    返 回 值:个人身份证号信息
    注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人身份证号信息
    3.1.13.获得身份证个人出生年信息
    原 型:BSTR GetBirthYear();
    说 明:本方法用于获取身份证个人出生年信息。
    返 回 值:个人出生年信息
    注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人出生年信息
    3.1.14.获得身份证个人出生月信息
    原 型:BSTR GetBirthMonth();
    说 明:本方法用于获取身份证个人出生月信息。
    返 回 值:个人出生月信息
    注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人出生月信息
    3.1.15.获得身份证个人获得出生日信息
    原 型:BSTR GetBirthDay();
    说 明:本方法用于获取身份证个人获得出生日信息。
    返 回 值:个人出生日信息
    注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人获得出生日信息
    3.1.16.获得身份证个人地址信息
    粗体 型:BSTR GetAddress();
    说 明:本方法用于获取身份证个人地址信息。
    返 回 值:个人地址信息
    注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人地址信息
    3.1.17.获得身份证个人发证机关信息
    原 型:BSTR GetAgency();
    说 明:本方法用于获取身份证个人发证机关信息。
    返 回 值:个人发证机关信息
    注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人发证机关信息
    3.1.18.获得身份证个人有效日期信息
    原 型:BSTR GetValid();
    说 明:本方法用于获取身份证个人有效日期信息。
    返 回 值:个人有效日期信息
    注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人有效日期信息
    3.1.19.读追加地址信息
    原 型:short ReadNewAppMsg();
    说 明:读附加地址信息。
    返 回 值:
    值 意义
    0-4 附加地址数目
    -1 错误
    注:读追加地址信息时,需要将身份证置于读卡机具上方做稍许时间的停留。附加地址数目一般有0-4个,获得具体哪个附加地址信息可在调用此方法获得附加地址数目后调用GetNewAddress(short i)获得
    3.1.20.获得身份证个人获得附加地址信息
    原 型:BSTR GetNewAddress(short i);
    说 明:本方法用于获取身份证个人附加地址信息。
    参数: i附加地址序号
    返 回 值:附加地址
    注:必须在读卡基本信息ReadNewAppMsg()方法调用并返回正确的情况下方能正确获得身份证个人附加地址信息
    3.1.21.获得身份证照片Base64编码
    原 型:BSTR GetPhotobuf ();
    说 明:本方法用于获取身份证照片Base64编码信息。
    参数: 无
    返 回 值:身份证照片Base64编码信息
    注:必须在读卡方法调用并返回正确的情况下方能正确获得身份证照片信息
    3.1.22.获得阅读器安全模块号
    原 型:BSTR GetSAMID ();
    说 明:本方法用于获取阅读器安全模块号。
    参数: 无
    返 回 值:阅读器安全模块号
    注:
    3.1.23.获得身份证照片JPG格式Base64编码
    原 型:BSTR GetJPGPhotobuf ();
    说 明:本方法用于获取身份证照片JPG格式Base64编码信息。
    参数: 无
    返 回 值:身份证照片Base64编码信息
    注:必须在读卡方法调用并返回正确的情况下方能正确获得身份证照片信息
    3.1.24.获得身份证正反面图片JPG格式Base64编码
    原 型:BSTR GetCardPhotobuf ();
    说 明:本方法用于获取身份证正反面图片JPG格式Base64编码信息。
    参数: 无
    返 回 值:身份证照片Base64编码信息
    注:必须在读卡方法调用并返回正确的情况下方能正确获得身份证照片信息
    3.1.25.获得身份证卡号
    原 型:BSTR GetIDCardSN();
    说 明:本方法用于获取身份证卡号。
    返 回 值:身份证卡号
    注:必须在读卡方法调用并返回正确的情况下方能正确获得身份证照片信息
    3.1.26.输出指定照片文件和正反面图片
    原 型:Short ExportPhoto(BSTR PhotoFile,BSTR CardFile);
    说 明:本方法用于生成指定的照片和正反面图片文件名。
    返 回 值:
    值 意义
    1 成功
    -3 未调用ReadCard指定照片文件名
    -1 生成照片文件错
    -2 生成正反面图片文件错
    注:必须在ReadCard读卡方法调用并返回正确的情况下方能正确获得身份证照片信息
    3.1.27.设置是否可连续读身份证
    原 型:short RepeatRead (short isRepeat);
    说  明:本函数用于设置在不从阅读器上移开身份证的情况下连续读身份证。
    参  数:short isRepeat,1为连续读,0为不连续读。
    返 回 值:
    值 意义
    1 正确
    其他 错误
    注:默认是不连续读身份证
    3.1.28. 判断卡片类型
    原 型:short Routon_DecideIDCardType();
    说 明:本函数用于判断当前证件类型是身份证,还是外国人居留证
    返 回 值:
    值 意义
    100 中国身份证
    101 外国人居留证
    其他 其他错误
    注:该函数需在调用Authenticate函数后再调用。
    3.1.29. 读外国人永久居留证信息
    原 型:short Routon_ReadForeignBaseInfos(char enName,char Gender,char Code, char Nation, char cnName,char BirthYear,char BirthMonth,char BirthDay,char Valid);
    说 明:本函数用于读取外国人永久居留证基本信息,包括文字信息和图像信息。
    参 数:
    char
    enName, 指向外国人英文姓名信息。需要在调用时分配内存,字节数不小120。
    char
    Gender, 指向外国人的性别信息。需要在调用时分配内存,字节数不小于3;
    char
    Code,指向外国人永久居留证号码信息。需要在调用时分配内存,字节数不小于30;
    char
    Nation,指向外国人国籍或所在地区代码。需要在调用时分配内存,字节数不小于6;
    char
    cnName,指向外国人中文姓名信息。需要在调用时分配内存,字节数不小于31;
    char
    BirthYear,指向出生年份信息。需要在调用时分配内存,字节数不小于5;
    char
    BirthMonth,指向出生月份信息。需要在调用时分配内存,字节数不小于3;
    char
    BirthDay,指向出生日信息。需要在调用时分配内存,字节数不小于3;
    char
    Valid,指向外国人居留证有效日期。需要在调用时分配内存,字节数不小于32。
    返 回 值:
    值 意义
    1 正确
    0 错误
    -4 缺少dewlt.dll、savephoto.dll等DLL
    已废弃,如需使用该功能,请使用3.1.35接口Routon_ReadAllForeignBaseInfos
    注:读卡基本信息时,需要将身份证置于读卡机具上方做稍许时间的停留。
    调用返回正确后,可进行下一步获取身份证个人姓名、性别等信息获取调用,
    照片文件photo.bmp放置在当前系统的临时文件目录(GetTempPath())。
    返回的有效日期是以“XXXX.XX.XX-XXXX.XX.XX”的格式存放的。
    3.1.30. 判断读取的卡片类型
    原 型:short DecideReadCardType()
    说 明:在卡片读取完成之后,返回一个卡片类型的标志。
    返 回 值:
    值 说明
    1 身份证
    2 外国人居留证
    注:调用该函数之前必须调用ReadCard()函数,读取卡片成功之后,在调用该函数以返回卡片类型。
    3.1.31. 获取外国人居留证信息英文名字
    原 型:BSTR GetenName();
    说 明:本方法用于获取外国人永久居留证个人英文姓名信息。
    返 回 值:个人英文姓名信息
    注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人英文姓名信息
    3.1.32. 获取外国人居留证信息英文名字
    原 型:BSTR GetcnName();
    说 明:本方法用于获取外国人永久居留证个人中文姓名信息。
    返 回 值:个人中文姓名信息
    注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人中文姓名信息
    3.1.33 获得外国人居留证国籍或所在地区代码
    原 型:Short GetNation();
    说 明:本方法用于获取外国人永久居留证国籍或所在地区代码。
    返 回 值:外国人国籍或所在地区代码。
    3.1.34. 读外国人永久居留证信息带照片路径
    原 型:short Routon_ReadForeignBaseInfosP(char enName,char Gender,char Code, char Nation, char cnName,char BirthYear,char BirthMonth,char BirthDay,char Valid,BSTR photopath);
    说 明:本函数用于读取外国人永久居留证基本信息,包括文字信息和图像信息,并保存到指定路径中。
    参 数:
    char
    enName, 指向外国人英文姓名信息。需要在调用时分配内存,字节数不小120。
    char
    Gender, 指向外国人的性别信息。需要在调用时分配内存,字节数不小于3;
    char
    Code,指向外国人永久居留证号码信息。需要在调用时分配内存,字节数不小于30;
    char
    Nation,指向外国人国籍或所在地区代码。需要在调用时分配内存,字节数不小于6;
    char
    cnName,指向外国人中文姓名信息。需要在调用时分配内存,字节数不小于31;
    char
    BirthYear,指向出生年份信息。需要在调用时分配内存,字节数不小于5;
    char
    BirthMonth,指向出生月份信息。需要在调用时分配内存,字节数不小于3;
    char
    BirthDay,指向出生日信息。需要在调用时分配内存,字节数不小于3;
    char
    Valid,指向外国人居留证有效日期。需要在调用时分配内存,字节数不小于32。
    BSTR photopath 放置照片信息绝对路径名。
    返 回 值:
    值 意义
    1 正确
    0 错误
    -4 缺少dewlt.dll、savephoto.dll等DLL
    已废弃,如需使用该功能,请使用3.1.36接口Routon_ReadAllForeignBaseInfosP
    注:读卡基本信息时,需要将身份证置于读卡机具上方做稍许时间的停留。
    调用返回正确后,可进行下一步获取身份证个人姓名、性别等信息获取调用,
    照片文件photo.bmp放置在当前系统的临时文件目录(GetTempPath())。
    返回的有效日期是以“XXXX.XX.XX-XXXX.XX.XX”的格式存放的。
    3.1.35读外国人永久居留证全部信息
    原 型:short Routon_ReadAllForeignBaseInfos(char EnName,char Gender,char Code, char Nation, char CnName,char BirthYear,char BirthMonth,char BirthDay,char Valid,char CardVersion,char Agency,char CardType, char FutureItem);
    说 明:本函数用于读取外国人永久居留证基本信息,包括文字信息和图像信息。
    参 数:
    char
    EnName, 指向外国人英文姓名信息。需要在调用时分配内存,字节数不小120。
    char
    Gender, 指向外国人的性别信息。需要在调用时分配内存,字节数不小于3;
    char
    Code,指向外国人永久居留证号码信息。需要在调用时分配内存,字节数不小于30;
    char
    Nation,指向外国人国籍或所在地区代码。需要在调用时分配内存,字节数不小于6;
    char
    CnName,指向外国人中文姓名信息。需要在调用时分配内存,字节数不小于31;
    char
    BirthYear,指向出生年份信息。需要在调用时分配内存,字节数不小于5;
    char
    BirthMonth,指向出生月份信息。需要在调用时分配内存,字节数不小于3;
    char
    BirthDay,指向出生日信息。需要在调用时分配内存,字节数不小于3;
    char
    Valid,指向外国人居留证有效日期。需要在调用时分配内存,字节数不小于32。
    char
    CardVersion,指向外国人居留证证件版本号。需要在调用时分配内存,字节数不小于5。
    char
    Agency,指向外国人居留证当次申请受理机关代码。需要在调用时分配内存,字节数不小于9。
    char
    CardType,指向外国人居留证证件类型标识。需要在调用时分配内存,字节数不小于2。
    char
    FutureItem,指向外国人居留证预留项。需要在调用时分配内存,字节数不小于7。
    返 回 值:
    值 意义
    1 正确
    0 错误
    -4 SDT_ReadBaseMsg读卡失败
    注:读卡基本信息时,需要将身份证置于读卡机具上方做稍许时间的停留。
    调用返回正确后,可进行下一步获取身份证个人姓名、性别等信息获取调用,
    照片文件photo.bmp放置在当前系统的临时文件目录(GetTempPath())。
    返回的有效日期是以“XXXX.XX.XX-XXXX.XX.XX”的格式存放的。
    补充说明:1、Agency是机关代码,其对应的机关全称未知。
    2、FutureItem是预留项,未存放实际内容。
    3.1.36. 读外国人永久居留证全部信息带照片路径
    原 型:short Routon_ReadAllForeignBaseInfosP(char EnName,char Gender,char Code, char Nation, char nName,char BirthYear,char BirthMonth,char BirthDay,char Validchar CardVersion,char Agency,char CardType, char FutureItem,LPCTSTR photopath);
    说 明:本函数用于读取外国人永久居留证基本信息,包括文字信息和图像信息,并保存到指定路径中。
    参 数:
    char
    EnName, 指向外国人英文姓名信息。需要在调用时分配内存,字节数不小120。
    char
    Gender, 指向外国人的性别信息。需要在调用时分配内存,字节数不小于3;
    char
    Code,指向外国人永久居留证号码信息。需要在调用时分配内存,字节数不小于30;
    char
    Nation,指向外国人国籍或所在地区代码。需要在调用时分配内存,字节数不小于6;
    char
    CnName,指向外国人中文姓名信息。需要在调用时分配内存,字节数不小于31;
    char
    BirthYear,指向出生年份信息。需要在调用时分配内存,字节数不小于5;
    char
    BirthMonth,指向出生月份信息。需要在调用时分配内存,字节数不小于3;
    char
    BirthDay,指向出生日信息。需要在调用时分配内存,字节数不小于3;
    char
    Valid,指向外国人居留证有效日期。需要在调用时分配内存,字节数不小于32。
    char
    CardVersion,指向外国人居留证证件版本号。需要在调用时分配内存,字节数不小于5。
    char
    Agency,指向外国人居留证当次申请受理机关代码。需要在调用时分配内存,字节数不小于9。
    char
    CardType,指向外国人居留证证件类型标识。需要在调用时分配内存,字节数不小于2。
    char
    FutureItem,指向外国人居留证预留项。需要在调用时分配内存,字节数不小于7。
    LPCTSTR photopath 放置照片信息绝对路径名。
    返 回 值:
    值 意义
    1 正确
    0 错误
    -4 缺少dewlt.dll、savephoto.dll等DLL
    -5 获取接口SaveForeignCardAllJPG地址失败
    -6 接口SaveForeignCardAllJPG调用失败
    注:读卡基本信息时,需要将身份证置于读卡机具上方做稍许时间的停留。
    调用返回正确后,可进行下一步获取身份证个人姓名、性别等信息获取调用,
    照片文件photo.bmp放置在当前系统的临时文件目录(GetTempPath())。
    返回的有效日期是以“XXXX.XX.XX-XXXX.XX.XX”的格式存放的。
    补充说明:1、Agency是机关代码,其对应的机关全称未知。
    2、FutureItem是预留项,未存放实际内容。
    3.2.TypeA 非接触IC卡方法
    3.2.1.读TypeA卡

    原 型:short ReadICCard(long iPort)
    说 明:本方法用于打开串口并读取卡内信息。
    参 数:
    1、iPort: 设置串口(目前串口只支持16个,即串口1~16)
    普通串口 1 – 16(十进制) 例如:
    1:串口1(COM1)
    2:串口2(COM2)
    USB-HID
    (iDR210) 8159(十进制)
    返 回 值:
    值 说明
    1 正确
    -1 端口初始化失败
    -2 读卡失败
    注:如果读卡机具连接的端口是确定的,可以直接使用相应端口号调用本方法。否则,可以采用循环查找的方式调用本方法。
    3.2.2.获得TypeA卡序列号
    原 型:BSTR GetICCardSN();
    说 明:本方法用于获取IC卡序列号。
    返 回 值:IC卡序列号
    注:必须在ReadICCard方法调用并返回正确的情况下方能使用
    3.2.3.读TypeA卡块内容
    原 型:BSTR ReadTypeABlock(short SID, short BID, short KeyType, LPCTSTR Key);
    说 明:本方法用于读取指定扇区的指定块的内容。
    参 数:
    SID为扇区号,0-15(对M1S50卡)。
    BID为块号,0-3。
    KeyType为密钥类型,两种:1 keyA,2 keyB。
    Key为密钥,12个字节的字符串。
    返 回 值:
    值 说明
    32个字节字符串 正确。每两个字节对应块内的一个字节内容。
    0 失败
    注:必须在ReadICCard方法调用并返回正确的情况下方能使用
    3.2.4.写TypeA卡块内容
    原 型:BSTR WriteTypeABlock(short SID, short BID, short KeyType, LPCTSTR Key, LPCTSTR Data);
    说 明:本方法用于写入指定扇区的指定块的内容。
    参 数:
    SID为扇区号,0-15(对M1S50卡)。
    BID为块号,0-3。注意:若写每个扇区的3号块的数据不正确,卡将无法正常读写。
    KeyType为密钥类型,两种:1 keyA,2 keyB。
    Key为密钥,12个字节的字符串。
    Data为写入的内容,32个字节的字符串。
    返 回 值:
    值 说明
    1 正确。
    0 失败
    注:必须在ReadICCard方法调用并返回正确的情况下方能使用
    3.3.CPU卡方法
    注意:在读市民卡信息和发送第一条APDU命令前,必须先找卡。
    3.3.1.找CPU卡
    原 型:int FindICCard (void)
    说 明:本方法用于查找当前卡片类型。在做CPU卡相关操作前(比如读市民卡信息、发APDU命令等),必须先调用本方法找到CPU卡。
    参 数:无
    返 回 值:
    值 意义
    1 M1-S50卡
    2 CPU卡
    3 M1-S70卡
    0 未找到卡
    其他 不明卡错误码
    3.3.2.读顺德市民卡信息
    原 型:int ReadCitizenCard (void)
    说 明:本方法用于读出顺德市民卡信息。在调用本方法前,必须先使用FindICCard找到CPU卡。
    参 数:无
    返 回 值:
    值 意义
    1 成功
    -1 解密失败
    -2 读数据错
    -3 设备类型错
    3.3.3.取顺德市民卡卡号信息
    原 型:BSTR GetCityCardNO (void)
    说 明:本方法用于读出顺德市民卡卡号信息。在调用本方法前,必须先使用ReadCitizenCard方法。
    参 数:无
    返 回 值:顺德市民卡卡号
    3.3.4.取顺德市民卡姓名信息
    原 型:BSTR GetCityCardName (void)
    说 明:本方法用于读出顺德市民卡姓名信息。在调用本方法前,必须先使用ReadCitizenCard方法。
    参 数:无
    返 回 值:顺德市民卡姓名
    3.3.5.取顺德市民卡证件类型信息
    原 型:BSTR GetCityCardIDType (void)
    说 明:本方法用于读出顺德市民卡证件类型信息。在调用本方法前,必须先使用ReadCitizenCard方法。
    参 数:无
    返 回 值:顺德市民卡证件类型
    3.3.6.取顺德市民卡证件号码信息
    原 型:BSTR GetCityCardIDCode(void)
    说 明:本方法用于读出顺德市民卡证件号码信息。在调用本方法前,必须先使用ReadCitizenCard方法。
    参 数:无
    返 回 值:顺德市民卡证件号码
    3.3.7.取顺德市民卡附加信息
    原 型:BSTR GetCityCardAppInfo(void) 说 明:本方法用于读出顺德市民卡附加信息。在调用本方法前,必须先使用ReadCitizenCard方法。 参 数:无 返 回 值:顺德市民卡附加信息
    3.3.8.APDU命令及应答
    原 型:BSTR Routon_APDU (BSTR APDU_CMD) 说 明:本方法用于CPU卡的APDU命令交互。 参 数:BSTR APDU_CMD,APDU命令字符串 返 回 值: 值 意义 字符串 成功 -1 APDU_CMD不正确 -2 读数据错
    4.接口使用流程及示例
    实现请参照例程 test.htm
    提示:
    一 例程只是控件开发的简单示范,具体二次开发功能实现,由开发人员进行设计和开发
    二 调试过程中请注意 找卡过程中包含选卡,目前公安部安全模块只支持一次选卡,因此如果找卡成功后,若想再次进行找卡读卡流程需将机具上卡拿开后再次放置到机具上
    三ActiveX控件在网页上运行以及下载受到安全级别的限制(开发人员请注意)

    四、代码示例

    jl_card.js的代码内容如下:

    /**
     * 精伦电子控件。读身份证 参数 deviceObjectId 控件id 必须 photonPath 头像输出路径 可为空 cardPath 身份证正反面输出路径 可为空<br>
     * 返回:{type:类型, idCardNum:身份证号,realname:姓名,gender:性别文字,genderNum:性别数字,<br>
     * nation:民族,address:地址,photoBase64:照片(Base64编码),cardPhotoBase64:身份证正反面照片(Base64编码), <br>
     * birthYear:生日年,birthMonth:生日月,birthDay:生日日,agency:签发机关,valid:有效日期,samId:安全模块号,idCardSN:身份证卡号 <br>
     * code = 1:正常,code = -1:端口初始化失败,code =-2:请重新将卡片放到读卡器上,code = -3:读取数据失败,code = -4:生成照片文件失败,请检查设定路径和磁盘空间,code = 500:控件未安装}
     */
    function tg_readIdCard4JLDZ(deviceObjectId, photonPath, cardPath) {
        var result = { // 返回结果
            code : 1,
            type : 'idCard' // 身份证
        };
        try {
            var ax = new ActiveXObject("IDRCONTROL.IdrControlCtrl.1");
        } catch (e) {
            console.log("控件未安装");
            result.code = 500;
        }
        var code = deviceObjectId.ReadCard("1001", ""); // 注意:第一个参数为对应的设备端口,USB型为1001,串口型为1至16
        result.code = code;
        if (code == 1) {
            var cardtype = deviceObjectId.DecideReadCardType(); // 判断卡类型 1-身份证 2-外国居留证
            if (cardtype == 1) {
                deviceObjectId.setMute(0); // 设置是否静音读卡 0-不静音 1-静音
                deviceObjectId.RepeatRead(1); // 设置是否重复读卡 0-不重复 1-重复
                result.success = true;
                result.realname = deviceObjectId.GetName(); // 姓名
                result.nation = deviceObjectId.GetFolk(); // 民族
                result.gender = deviceObjectId.GetSex(); // 性别 文字
                result.genderNum = deviceObjectId.GetSexN(); // 性别 数字
                result.birthYear = deviceObjectId.GetBirthYear(); // 出生日期 年
                result.birthMonth = deviceObjectId.GetBirthMonth() // 出生日期 月
                result.birthDay = deviceObjectId.GetBirthDay() // 出生日期 日
                result.idCardNum = deviceObjectId.GetCode(); // 公民身份证号码
                result.idCardSN = deviceObjectId.GetIDCardSN(); // 身份证卡号
                result.address = deviceObjectId.GetAddress(); // 地址
                result.agency = deviceObjectId.GetAgency(); // 签发机关
                result.valid = deviceObjectId.GetValid(); // 有效日期
                result.samId = deviceObjectId.GetSAMID(); // 安全模块号
                result.photoBase64 = deviceObjectId.GetJPGPhotobuf(); // 照片(Base64编码)
                result.cardPhotoBase64 = deviceObjectId.GetCardPhotobuf(); // 身份证正反面照片(Base64编码)
                result.returnMsg = 1;
                if (photonPath == null) {
                    photonPath = "d:\\idcard\\" + "Z" + "+" + deviceObjectId.GetIDCardSN() + deviceObjectId.GetName() + ".jpg"; // 照片输出路径
                    if (cardPath == null) {
                        cardPath = "d:\\idcard\\" + "Z" + "+" + deviceObjectId.GetIDCardSN() + deviceObjectId.GetName() + "card.jpg"; // 正反面输出路径
                    }
                    deviceObjectId.ExportPhoto(photonPath, cardPath); // 输出照片接口
                } else {
                    console.log("当前卡片不是身份证,请将身份证放到读卡器上!");
                }
            }
        } else if (code == -1) {
            result.returnMsg = -1;
            console.log("端口初始化失败!");
        } else if (code == -2) {
            result.returnMsg = -2;
            console.log("请重新将卡片放到读卡器上!");
        } else if (code == -3) {
            result.returnMsg = -3;
            console.log("读取数据失败!");
        } else if (code == -4) {
            result.returnMsg = -4;
            console.log("生成照片文件失败,请检查设定路径和磁盘空间!");
        }
        return result;
    }
    

    以上就是华大多功能四合一HD-100多功能智能卡读写器配置的使用教程,希望可以帮助到你,如有疑问欢迎私信探讨交流。

    展开全文
  • 华大多功能四合一HD-100多功能智能卡读写器配置使用教程一、简介二、配置使用三、代码分享 一、简介 华大HD-100多功能智能卡读写器作为IC卡系统集成必备的前端处理设备,极大地提高了系统的安全性和应用的方便性,能...

    华大多功能四合一HD-100多功能智能卡读写器OCX插件配置使用教程

    一、简介

    华大HD-100多功能智能卡读写器作为IC卡系统集成必备的前端处理设备,极大地提高了系统的安全性和应用的方便性,能更加优秀的服务于卫生、社保、二代证查询、工商、电信、邮政、税务、银行、保险、医疗以及各种收费、储值、查询等智能卡管理应用行业。

    1.HD-100有几种不同配置,功能分别如下:
    四合一:身份证、社保卡、磁条卡、就诊卡 (此次教程叫的就是四合一)
    三合一:社保卡、磁条卡、就诊卡

    2.华大HD-100多功能读卡器产品特点:

    • 支持 ISO/IEC 7816-1/2/3 标准 CPU 卡,T=0、T=1、逻辑加密卡及memory卡,社保卡、医保卡等

    • 支持 Mifare 卡和符合 ISO14443 标准的 A 类和 B 类卡,ISO 15693 等卡片, 通讯速率最高支持 424 Kbps

    • 支持身份证卡片

    • 支持 4个 PSAM 卡安全模块、支持高速 PSAM 卡安全交易认证,符合 ISO7816 标准

    • 安装方便,可靠性高,适合联机使用

    • 全速 USB 接口, RS232,以太网等

    • 人机界面:一个指示灯,指示电源和操作状态

    • 支持在线程序升级,提供 Windows/Linux/Unix 等各种平台下的应用程序标 准 DLL 动态库接口

    二、配置使用

    读卡器图片,如下图

    在这里插入图片描述


    注意:安装前先把360等杀毒软件退出,否则可能会影响读卡器的正常使用
    准备:先将读卡机设备连接到电脑usb接口,确定连接成功之后在进行一下操作

    1.以管理员点击运行(华大多合一控件安装.exe)文件,如下图

    在这里插入图片描述

    2. 安装时一直点击下一步即可,安装成功会显示以下页面

    在这里插入图片描述

    3.完成安装之后打开页面时需要使用 360浏览器或者IE浏览器 打开浏览器–>工具–>Internet选项–>自定义级别 (Internet和本地Internet都需要设置),如下图

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    4.选择启用

    在这里插入图片描述


    5.选择 是,之后打开页面之后选择兼容模式

    在这里插入图片描述

    6.选择允许阻止内容

    在这里插入图片描述

    7.选择 是

    在这里插入图片描述

    8.选择 是

    在这里插入图片描述

    9.硬件配置已完成接下来就可以使用啦!


    三、代码分享

    1.华大读卡器会给一套js代码,首先,需要引入到页面中进行调用。

    <script th:src="@{/js/common/hd_card.js}"></script>
    

    hd_card.js的代码内容如下:

    // version:2019011
    // 华大读卡器 head 中加 <OBJECT classid=clsid:A02C6AFF-89E7-41232-9DF3-508DD546543F9E2 width=0 height=0 align="center" id="bsHDdev" HSPACE=0 VSPACE=0></OBJECT>
    /** ***************基础工具*********************** */
    
    /**
     * 华大读卡器。读身份证或社保卡。返回:{type:类型, realname:姓名,gender:性别,nation:民族,brithday:出生日期,address:家庭住址,idCardNum:身份证号, sidCardNum:社保号, photoBase64: 照片base64字符串}
     */
    function tg_readCard4HD(deviceObjectId, slot) {
        var result = tg_readIdCard4HD(deviceObjectId); // 先读身份证
        if (!result.success) { // 身份证读取失败
            result = tg_readSidCard4HD(deviceObjectId, slot); // 读取社保卡
        }
        return result;
    }
    /**
     * 华大读卡器。读身份证 返回:{type:类型, realname:姓名,gender:性别,nation:民族,brithday:出生日期,address:家庭住址,idCardNum:身份证号, photoBase64: 照片base64字符串}<br>
     * 相片显示:document.getElementById("photo").src="https://img-blog.csdnimg.cn/2022010711192871364.png"+photoBase64;
     */
    function tg_readIdCard4HD(deviceObjectId) {
        var result = { // 返回结果
            type : 'idCard' // 身份证
        };
        var deviceObject = document.getElementById(deviceObjectId); // 得到设备控件 deviceObjectId
        var readResult = deviceObject.iReaderIDCard("C:\\zp.jpg"); // 读卡,传入照片路径
        if (readResult == 0) { // 读卡成功
            var cardInfo = deviceObject.pOutInfo;
            var base64Str = deviceObject.base64Data;
            var idCardInfo = cardInfo.split('|').slice(0, 6);
            result.success = true;
            result.realname = idCardInfo[0];
            result.gender = idCardInfo[1];
            result.nation = idCardInfo[2];
            result.brithday = idCardInfo[3];
            result.address = idCardInfo[4];
            result.idCardNum = idCardInfo[5];
            result.photoBase64 = base64Str;
        } else { // 读卡失败
            console.log(deviceObject.pMsgErr);
        }
        return result;
    }
    
    /**
     * 华大读卡器。读社保卡 返回:{type:类型, sidCardNum:社保号,idCardNum:身份证号,realname:姓名,gender:性别,nation:民族,brithday:生日}
     */
    function tg_readSidCard4HD(deviceObjectId, slotParm) {
        var result = { // 返回结果
            type : 'sidCard' // 社保卡
        };
        var deviceObject = document.getElementById(deviceObjectId); // 得到设备控件 deviceObjectId
        var slot = 17; // 传入卡座号 17 -20
        if (slotParm) {
            slot = slotParm;
        }
        var readResult = deviceObject.iReadSicard(slot); // 读卡
        if (readResult == 0) { // 读卡成功
            var cardInfo = deviceObject.pOutInfo;
            var scardInfo = cardInfo.split('|').slice(0, 6);
            result.success = true;
            result.sidCardNum = scardInfo[0];
            result.idCardNum = scardInfo[1];
            result.realname = scardInfo[2];
            result.gender = scardInfo[3];
            result.nation = scardInfo[4];
            result.brithday = scardInfo[5];
        } else { // 读卡失败
            console.log(deviceObject.pMsgErr);
        }
        return result;
    }
    
    

    2.会有一个object classid 需要引入,下面的是我乱写的classid,每个设备都不一样。

    <object classid="clsid:A02C6AFF-89E7-41232-9DF3-508DD546543F9E2" id="bsHDdev" width="0" height="0" hspace="0" vspace="0" />
    

    3.页面使用代码示例(会自带测试页面也可以使用)

    <div class="layui-card layadmin-header">
        <div class="layui-breadcrumb" lay-filter="breadcrumb">
            <a lay-href="">主页</a> <a><cite>会员业务</cite></a> <a href="#/manage/member/"><cite>挂号</cite></a>
        </div>
        <object classid="clsid:A02C6AFF-89E7-41232-9DF3-508DD546543F9E2" id="bsHDdev" width="0" height="0" hspace="0" vspace="0" />
    </div>
    <!--/*******页面内容*******/-->
    <div class="layui-fluid">
        <div class="layui-card">
            <div class="layui-card-body">
                <form id="tg_member_add_form" lay-filter="tg_member_add_form_filter" class="layui-form layui-form-pane">
                    <!--/*防止重复提交*/-->
                    <!--<input name="tgAvoidRepeatSubmitToken" th:value="" type="text" hidden="true" />-->
                    <div class="layui-form-item">
                        <div class="layui-inline">
                            <div class="layui-input-inline">
                                <img src="" id="photoBase64" />
                            </div>
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <div class="layui-inline">
                            <label class="layui-form-label">姓名<span style="color: red"> *</span></label>
                            <div class="layui-input-inline">
                                <input name="realname" id="realname" disabled placeholder="请输入姓名"  required maxlength="31" autocomplete="off" autofocus="autofocus" class="layui-input" type="text" />
                            </div>
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <div class="layui-inline">
                            <label class="layui-form-label">性别<span style="color: red"> *</span></label>
                            <div class="layui-input-inline">
                                <input id="genderStr" disabled placeholder="请输入性别"  required maxlength="31" autocomplete="off" autofocus="autofocus" class="layui-input" type="text" /> 
                                <input id="gender" name="gender" type="text" hidden="true" />
                            </div>
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <div class="layui-inline">
                            <label class="layui-form-label">民族<span style="color: red"> *</span></label>
                            <div class="layui-input-inline">
                                <input name="nation" id="nation" disabled placeholder="请输入民族"  required maxlength="31" autocomplete="off" autofocus="autofocus" class="layui-input" type="text" />
                            </div>
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <div class="layui-inline">
                            <label class="layui-form-label">出生日期<span style="color: red"> *</span></label>
                            <div class="layui-input-inline">
                                <input name="brithday" id="brithday" disabled placeholder="请输入出生日期"  required maxlength="31" autocomplete="off" autofocus="autofocus" class="layui-input" type="text" />
                            </div>
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <div class="layui-inline">
                            <label class="layui-form-label">身份证号<span style="color: red"> *</span></label>
                            <div class="layui-input-inline">
                                <input name="idCardNum" id="idCardNum" disabled placeholder="请输入身份证号"  required maxlength="31" autocomplete="off" autofocus="autofocus" class="layui-input" type="text" />
                            </div>
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <div class="layui-inline">
                            <label class="layui-form-label">社保号<span style="color: red"> *</span></label>
                            <div class="layui-input-inline">
                                <input name="sidCardNum" id="sidCardNum" disabled placeholder="请输入社保号"  required maxlength="31" autocomplete="off" autofocus="autofocus" class="layui-input" type="text" />
                            </div>
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">地址<span style="color: red"> *</span></label>
                        <div class="layui-input-block">
                            <input name="address" id="address" disabled placeholder="请输入地址"  required maxlength="31" autocomplete="off" autofocus="autofocus" class="layui-input" type="text" />
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <div class="layui-input-block">
                            <div class="layui-footer">
                                <input type="button" id="tg_readCard_add_submit_but" value="读卡" class="layui-btn layui-btn-lg layui-btn-normal" lay-submit="" lay-filter="tg_readCard_add_submit_but_filter">
                                <button id="tg_member_add_form_submit_but" lay-filter="tg_member_add_form_submit_but_filter" class="layui-btn layui-btn-lg" lay-submit="">挂号</button>
                            </div>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>
    <!--/*******当前页js*******/-->
    <script>
        layui.use([ 'member', 'form', 'layer' ], function() {
            var member = layui.member, form = layui.form, $ = layui.$, layer = layui.layer;
            form.render(null, 'tg_member_add_form_filter'); // 渲染该模板动态表单
            // 监听读卡 
            form.on('submit(tg_readCard_add_submit_but_filter)', function(data) {
                var result = tg_readCard4HD("bsHDdev", 17);
                if (result.success) {
                    // 设置input值
                    $("#realname").attr("value", result.realname); // 姓名
                    $("#genderStr").attr("value", result.gender); // 性别
                    if(result.gender == "男"){
                        $("#gender").attr("value", 1);
                    } else {
                        $("#gender").attr("value", 2);
                    }
                    var year = result.brithday.substr(0, 4);
                    var month = result.brithday.substr(4, 2);
                    var day = result.brithday.substr(6, 2);
                    $("#nation").attr("value", result.nation); // 民族
                    $("#brithday").attr("value", year + "-" + month + "-" + day); // 出生日期
                    $("#address").attr("value", result.address); // 地址
                    $("#idCardNum").attr("value", result.idCardNum); // 身份证号
                    $("#sidCardNum").attr("value", result.sidCardNum); // 社保号
                    if( result.photoBase64 != null ){
                        $("#photoBase64").attr("src", 'data:image/jpeg;base64,' + result.photoBase64); // 照片base6
                    }
                    // 读卡提交到后台的值
                    data.field.realname = result.realname; // 姓名
                    data.field.gender = $("#gender").val(); // 性别
                    data.field.nation = result.nation; // 民族
                    data.field.brithday = year + "-" + month + "-" + day; // 出生日期
                    data.field.address = result.address; // 地址
                    data.field.idCardNum = result.idCardNum; // 身份证号
                    data.field.sidCardNum = result.sidCardNum; // 社保号
                    data.field.photoBase64 = result.photoBase64; // 照片base6
                 tg_submitForm('tg_readCard_add_submit_but', BASE_URL + 'm/cardRecord/add.htm', data.field, function(d) {
                }); 
                return false; // 阻止form跳转
                }
            });
            // 监听提交 
            form.on('submit(tg_member_add_form_submit_but_filter)', function(data) {
                if(data.field.realname != ""){
                    tg_submitForm('tg_member_add_form_submit_but', BASE_URL + 'm/signRecord/add.htm', data.field, function(d) {
                        tg_alert_success_location('/manage/member/show/id=' + data.field.idCardNum); // 成功提醒并跳转
                    });
                }else{
                    layer.msg("请读取卡片");
                }
                return false; // 阻止form跳转
            }); 
        });
    </script>
    

    以上就是华大多功能四合一HD-100多功能智能卡读写器配置的使用教程,希望可以帮助到你,如有疑问欢迎私信探讨交流。

    展开全文
  • CK-LR12-E00支持标准工业通讯协议Modbus TCP、同时也支持自由协议通信,方便用户通集成到PLC等控制系统中。读卡器内部集成了射频部分...本文将重点介绍CK-LR12-E00低频工业读写器|读卡器的IO接线方式与配置使用说明。

    CK-LR12-E00低频工业读写器|读卡器是一款基于射频识别技术的低频RFID标签读卡器。RFID 工作频率为134K,支持对FDX-B标准协议格式标签的读取。

    CK-LR12-E00支持标准工业通讯协议Modbus TCP、同时也支持自由协议通信,方便用户通集成到PLC等控制系统中。读卡器内部集成了射频部分通信协议,用户只需通过通信接口接收数据便能完成对标签的读取操作,而无需理解复杂的射频通信协议。

    拥有两路可配置的IO,可同时配置为两路输入、两路输出或一路输入一路输出。

    本文将重点介绍CK-LR12-E00低频工业读写器|读卡器的IO接线方式与配置使用说明。

    项目

    技术参数

    最大承载电压

    DC 30V

    最大输出电流

    100mA

    输出电路保护

    自恢复保险丝

    输出关断漏电电流

    12v/2ma,24v/4.6ma

    输入高电平电位

    ≥3.0v

    输入高电平电流

    24v/4.6ma

    表 IO电气属性

    1、  接线方式

    1.1、输出模式接线图如下:

     图  输出模式接线图

    1.2、输入模式下,接线图如下

    注意!请在配置中改为输入模式后,再闭合按钮。否则,在输出模式高电平时按下按钮将发生短路!

    图  输入模式接线图

    1.3、同时使用输入输出模式

    注意!请在配置中改为输入模式后,再闭合按钮。否则,在输出模式高电平时按下按钮将发生短路!

    图   输入输出接线图

    2、IO配置

    CK-LR12-E00可使用上位机软件来进行快速配置IO,详情请转到“CK-LR12-E00配置软件使用说明”。

    如需使用PLC之类进行IO配置请根据通信协议参考“MODBUS TCP开发手册”或“自由协议开发手册”内的IO配置部分。

    更多关于CK-LR12-E00低频工业读写器|读卡器的IO接线方式与配置使用说明,华翔天诚科技欢迎您的咨询与交流!

    展开全文
  • 以太网工业RFID读写器|读卡器CK-FR12-E01家族强大,涵盖CK-FR12-A01、CK-FR12-B01、CK-FR12-AB、CK-FR12-E00、CK-FR12-E01、CK-FR12-E02、CK-FR12-E03等型号,广泛应用于工业自动化生产领域。 本文将重点介绍以太网...
  • rfid读写器的主要功能有哪些?

    千次阅读 2020-12-20 05:46:01
    原标题:rfid读写器的主要功能有哪些?rfid(射频识别)是一种无线通信技术,可以通过无线电讯号识别目标并读写相关数据,而无需识别系统与目标之间建立机械或者光学接触。rfid读写器通过天线与rfid电子标签进行无线...
  • 一文读懂RFID标签和读写器

    千次阅读 2021-05-31 11:00:27
    RFID标签和读写器介绍
  • Profinet协议以太网工业读写器CK-FR08-E02是一款13.56MHZ高频一体式读写设备,可节省时间...本文重点介绍Profinet协议以太网工业读写器CK-FR08-E02与西门子S7-1200 PLC控制器的例程使用说明,例程提供如何文件供参考。
  • 西门子S7200,S7300,S7400系列PLC控制器,通过简单的转换即可不要在PLC里面编程也支持modbusTCP通讯。本文将重点介绍西门子PLC控制器在工业自动化应用领域与ModbusTCP工业RFID读写器CK-FR08-E00的通信操作。
  • IC卡读写器开发说明

    千次阅读 2018-09-15 15:41:32
    动态库简介 动态库OUR_MIFARE.dll用VC开发,编译成32位Release实体或64位...本动态库是本公司USB接口IC卡读写器的配套文件,必须和读写器一起使用。 OUR_MIFARE.dll支持在软件运行中可以随时更换USB接口。本公司免...
  • 门禁|梯控管理系统CPU卡读写器发卡器HX-WR03是一款支持CPU卡读写、加密等功能读写设备,专用CPU卡门禁管理系统、CPU卡通道管理系统、CPU卡梯控管理系统发卡、加密等应用。本文将重点介绍门禁|梯控管理系统CPU卡读写...
  • python 进程读写文件

    千次阅读 2020-12-08 21:44:50
    JoinableQueue, cpu_countimport csv####处理一条数据的方法def deal_line(line, writer, csv_file):writer.writerow((line[3], line[1]))csv_file.flush()#重点,在进程中写文件需要尽快...
  • 日前,德卡科技T10型合一读写器通过社保读写器检测,成为德卡科技社保读写器家族中的第四款产品,继续保持社保读写器供应商中通过检测最多的一家。T10是一款可读取第二代身份证卡的高端读写器,除可读取二代身份证...
  • RFID技术、RFID电子标签、读写器

    万次阅读 2013-10-15 17:43:13
    DK,即设备套件(用户软件应用程序),它可以控制一个固定式读写器,也可以同时控制读写器同时工作,而对于这些读写器的识别,会通过调用相应方式的初始化API,而该函数是需要提供一个初始化句柄参数返回对应的句柄,则...
  • ReentrantLock属于排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时刻可以允许个线程访问,但是在写线程访问时,所有的读和其他写线程都被阻塞。读写锁维护了一对锁,一个读锁和一个写锁,通过...
  • 本文为了更清晰展现,RS485(MODBUS RTU)协议工业高频RFID读写器与西门子PLC S7-1200握手联机与应用操作,特使用了工业RFID读写器CK-LR08-A01作为案例工具。 一、工具准备 1、软件:博图v14 2、PLC:西门子S7-1200 ...
  • id=41901622939 ... IC-10MRW型MODBUS读写器能通过MODBUS-RTU方式与PLC通信,MODBUS读写器为从站(出厂一般默认站号为2)、PLC为主站,通讯参数:波特率,N,8,1(出厂默认19200,波特率有4800,9600,1...
  • 软硬件准备 NFC Reader Tool 手机上的IC卡读写编辑软件,搭配蓝牙或者OTG读卡器使用,可实现在手机上破解门禁卡的功能,是本文的主角。软件付费使用,一次注册终身可用,注册是作者持续更新的动力。该软件功能稳定...
  • IO接口以太网低频工业RFID读写器|读取器CK-LR12-E00是一款支持Modbus TCP通讯协议的工业以太网RFID数据读取设备,广泛应用于自动化MES系统领域,其MODBUS 寄存器为16bit宽度,占用2 bytes内存空间,采用大端数据存储...
  • 本文以工业级RFID读写器CK-LR08-E00和汇川PLC控制器H5U是实例介绍工业级RFID读写器CK-LR08-E00通过以太网TCPIP自由协议与汇川PLC控制器联机与通讯方案。
  • 数据库主从和读写分离的配置和使用方法 TP: ThinkPHP是一个开源的PHP框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。ThinkPHP可以支持windows/Unix/Liunx等服务器环境,正式版需要PHP5.0以上版本支持...
  • 大文件线程读写操作

    千次阅读 2018-07-03 00:52:40
    对于一个比较大的数据文件, 如:20G, 每一行为一个数据单元,在不进行文件切割的前提下, 想利用线程处理文件中的每行数据。 如果依次读取文件中每一行并处理则处理速度较慢较慢; 全部读取再处理机器的内存不能...
  • NFC应用(二)读写器模式

    千次阅读 2013-05-07 13:02:46
    既然有卡,当然就会有读写器,这两种模式是配合在一起使用的。两个卡放一起不能通信,两个读写器模式的设备也不能通信。 NFC读写器一般支持以下一种或多种协议:Mifare、ISO 14443 TypeA、ISO 14443 TypeB、...
  • open方法读写文件

    千次阅读 2021-03-04 07:23:04
    (一)打开和关闭文件1、顺序文件打开顺序文件,我们可以使用Open语句。它的格式如下:Open pathname For [Input |Output |Append] As [#]filenumber [Len =buffersize]说明:(1)参数pathname表示要打开的文件名,...
  • AXI Interconnect简明使用方法记录

    千次阅读 多人点赞 2020-09-02 16:39:15
    最近需要用到AXI接口的模块,xilinx的IP核很...本文将简单讲解AXI Interconnect IP核的使用方法,设计到Vivado的Block Design,仿真等知识运用。 为了简化整体例子的复杂度,整个测试工程项目采用了两个措施: 使用B
  • 物联12:读写器-rfid系统的核心

    千次阅读 2015-03-07 21:06:55
    在rfid系统中,读写器有处于核心地位,是rfid系统的主要部件。它向上联系上位机,向下通过天线沟通电子标签,其基本功能是将数据加密后发给电子标签,并将电子标签返回的数据解密,然后送给计算机。RFID读写器一般配...
  • pandas读写Excel文件的3种方法介绍

    千次阅读 2020-07-13 11:04:17
    pandas读写Excel文件的3种方法 直接读取与保存 ###pandas 最新版是sheet_name df = pd.read_excel(’./tips.xlsx’,sheetname=‘test1’) df.to_excel(‘tips2.xlsx’) 新的改变 我们对Markdown编辑进行了一些功能...
  • (1)学习多功能ALU的工作原理,掌握运算的设计方法 (2)掌握运用Verilog HDL 进行行为描述与建模的技巧和方法 实验要求:本实验要求设计一个具有8种运算功能的32位ALU,并能够产生运算结果的标志:结果为零...
  • 使用NumPy读写文件

    千次阅读 2020-12-10 19:59:55
    dtype=np.str,delimiter=',') print(arr5,arr6) 使用 NumPy 读写二进制格式文件 在 NumPy 中,load() 和 save() 函数是专门用于读写二进制格式文件的,它们具有自动处理数组元素类型和形状的功能。savez() 函数能...
  • 物联12:实习一 读写器的性能测试

    千次阅读 2015-05-27 08:25:47
     熟悉读写器使用,了解读写器的性能,熟悉常用测试方法。 二.实训环境  实训所用设备。 1.电脑 2. FR105高频近距离协议读写器。支持15963、14443A 14443B多种协议。相关的技术参数如下。  型号:rf105  电源...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 352,428
精华内容 140,971
关键字:

多功能读写器使用方法