消费机 水控机 售饭机 电梯门禁 门禁机
快速寻找产品(请输入产品型号或名称的关键词):
首页> 技术文档

技术文档

Web Hid Api 浏览器读取IC卡号

发布者:广州荣士电子有限公司         发布时间: 2024-10-14 


一、判断浏览器是否支持 web hid Api

if ('hid' in navigator){
}else{
    alert('您的浏览器不支持 Web hid API,暂无法使用以下功能!');
}

二、Web浏览器选择连接已配对的HID设备

    async function selectdev() {
        try{
            const devices = await navigator.hid.requestDevice({
                   filters: [{
                       vendorId: 0x0801,    // 根据VID进行过滤
                       productId: 0x2011,   // 根据PID进行过滤
                    },],
            });
            device = devices[0];         // 选择列表中第一个设备
            if (!device.opened) {        // 检查设备是否打开             
                await device.open();     // 打开设备
            }
        
            device.oninputreport = (event) => {     // 电脑接收到来自设备的消息回调
                console.log(event);                 // event中包含device、reportId、data等内容
                let array = new Uint8Array(event.data.buffer); // event.data.buffer就是接收到的inputreport    包数据了
                ParsedReturnData(array);                                                            
        };
    }
    catch (e){
        console.log(e);
    }
}

三、向HID设备发送读卡指令

        async function piccrequest() {
            if (!device?.opened) {
                alert("请先选择已连接的读卡器!");
                return;
            }
            textarea.value = "";
            carduid.value="";
            card8h10dz.value="";
            card8h10df.value="";
            const outputData = new Uint8Array(32);
            outputData[0]=0x78;     
            outputData[1]=0x68;   
            outputData[2]=0x01;
            outputData[3]=0xf0;
            outputData[4]=0x00;
            outputData[5]=0x00;
            outputData[6]=0x00;
            outputData[7]=0x00;    
            await device.sendReport(0, outputData); // 发送数据,第一个参数为reportId,填0表示不使用reportId
        }

四、解析接收到的返回数据

    function ParsedReturnData(databuff){
        var datahex="";
        if(databuff[0]==0x78 && databuff[1]==0x68 && databuff.length>4){
            switch ( databuff[3]) {
                case 0x0f:
                    textarea.value="读卡器已接受响声指令!";
                    break;
                case 0x1E:
                    textarea.value="读取设备编号成功!";
                    for (i=5;i<9;i++){datahex=datahex+databuff[i].toString(16).padStart(2, '0').toUpperCase();}
                    serialnumber.value=datahex;
                    break;
                case 0xF0:
                    switch(databuff[4]){
                        case 0x00:
                            textarea.value="读取IC卡号成功!";
                            for (i=5;i<9;i++){datahex=datahex+databuff[i].toString(16).padStart(2, '0').toUpperCase();}
                            carduid.value=datahex;
                            card8h10dz.value = parseInt("0x" + datahex).toString().padStart(10, '0');
                            LHCode = datahex.substring(6, 8) + datahex.substring(4, 6) + datahex.substring(2, 4) + datahex.substring(0, 2);
                            card8h10df.value = parseInt("0x" + LHCode).toString().padStart(10, '0');
                            break;
                        case 0x08:
                            textarea.value="寻卡失败,请重新将卡片放在读卡器感应区!";
                            break;
                        case 0x09:
                            textarea.value="寻卡失败,有多张卡在读卡器感应区!";
                            break;
                        default:
                            textarea.value="寻卡失败,错误代码:"+databuff[4].toString();
                            break;
                    }
                    break;
            default:

        }
    }
}



 
上一篇:Node.Js使用HTTP模块创建Web服务器接收RFID刷卡数据 下一篇:NTAG424 DNA安全加密动态NFC
     
Guangzhou Rong Shi Electronics Co., Ltd., China 广州荣士电子有限公司 备案/许可证编号:粤ICP备11063836号
TEL  020-22307058    020-82301718
消费机
隐私政策

消费机 水控机 售饭机 电梯门禁 门禁机

网站地图 xml