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

技术文档

Web Serial Api 浏览器打开串口发送指令读写IC卡

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

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

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

二、Web浏览器选择连接已配对的串口

    async function SelectSerial(){
        try{
            port =await navigator.serial.requestPort();  // 弹出系统串口列表对话框,选择一个串口进行连接
            ports =await navigator.serial.getPorts();    // 获取已连接的授权过的设备列表        
        }
        catch (e) {
            console.log(e);
        }
    }

三、打开串口并设置参数

    async function OpenSerial(){
        if (port==null){
            alert('请先选择要操作的串口号!');
            return;
        }else{            
            var baudSelected = parseInt(document.getElementById("select_btn").value);
            await port.open({baudRate: baudSelected, });
            listenReceived();
            alert('串口打开成功!');
        }
    }

四、监听串口数据

    async function listenReceived(){
        if (reading){
            console.log("On reading.");
            return;
        }
        reading=true;
        while (port.readable && reading) {
                reader = port.readable.getReader();
                try {
                    while (true) {
                        const { value, done } = await reader.read();
                        if (done) {break; }
                        updateInputData(value);
                    }
                } catch (e) {
                    alert(e);
                } finally {
                    reader.releaseLock();
                }
        }
        await port.close(); // 关闭串口
        port = null;
        alert("串口已关闭!");
    }

五、关闭已打开的串口

    async function CloseSerial(){
        if ((port == null) || (!port.writable)) {
            alert("请选择并打开与发卡器相连的串口!");
            return;
        }
        if (reading) {
            reading = false;
            reader?.cancel();
        }
    }

六、向串口发送数据

    async function SendData(){
        if ((port == null) || (!port.writable)) {
                alert("请选择并打开与发卡器相连的串口!");
                return;
        }
        var beepdelay=parseInt(document.getElementById("beepdelay").value);
        const outputData = new Uint8Array(5);
        outputData[0]=0x03;     
        outputData[1]=0x0f;   
        outputData[2]=beepdelay % 256;
        outputData[3]=beepdelay / 256;
        outputData[4]=outputData[1] ^ outputData[2] ^outputData[3];

        const writer = port.writable.getWriter();
        await writer.write(outputData);           // 发送数据
        writer.releaseLock();
    }
 
上一篇:NTAG424 DNA安全加密动态NFC 下一篇:C++支持多个客户端同时连接的TCP服务端
     
Guangzhou Rong Shi Electronics Co., Ltd., China 广州荣士电子有限公司 备案/许可证编号:粤ICP备11063836号
TEL  020-22307058    020-82301718
消费机
隐私政策

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

网站地图 xml