Chrome APP 操作读卡器串口

1.本机可以使用 串口虚拟串口程序

test.js
    //遍历获取串口名称
    var added = true;
    var onGetDevices = function(ports) {
        var newArr = [];
        for (var i = 0; i < ports.length; i++) {
            newArr.push(ports[i].path);
            var select = document.getElementById("selectch");
            if (i==0) {
                
            }else{
                select.options.add(new Option(newArr[i],newArr[i]));
            }
            
        }
        var chuankou = document.getElementById("selectch").value
        //chrome.serial.disconnect(connectionId,disConnet);
        chrome.serial.connect(chuankou, {
            bitrate: 9600
        }, onConnect);

    }
    //获取串口设备名,并将串口设备信息当参数传入指定的onGetDevices函数
    chrome.serial.getDevices(onGetDevices);     
    //串口数据接收函数并将arraybuffer转16进制数组
    var onReceiveCallback = function(info) {
        console.log('received', info.data);
        if(info.data.byteLength != 7){
            arr =  new Uint8Array(info.data);
            var newArr = [];
            for( let i of arr ){
                newArr.push( i.toString(16));
            }
            console.log(newArr);
            if(newArr[5].length == 1){
                newArr[5]="0"+newArr[5];
            }
            if(newArr[6].length == 1){
                newArr[6]="0"+newArr[6];
            }
            var ka16 = newArr[5]+newArr[6]
            var kahao=parseInt(ka16,16)
            console.log('卡号:', kahao);
        }else{
            console.log("卡信息异常,请重刷")
        }
        

    };

    var connectionId;

    var onConnect = function(connectionInfo) {
        if(typeof(connectionInfo)=="undefined"){
            console.log("串口连接错误,请选择其他串口")

        }else{
        console.log(chrome.runtime.lastError, connectionInfo); //输出连接信息
        //chrome.serial.onReceive.addListener(onReceiveCallback);//指定串口数据接收函数
        connectionId = connectionInfo.connectionId;
        console.log(connectionId)
    }

};

var btn = document.getElementById("btn_submit")
btn.onclick =function(){
    var chuankou = document.getElementById("selectch").value
        //chrome.serial.disconnect(connectionId,disConnet);
        chrome.serial.connect(chuankou, {
            bitrate: 9600
        }, onConnect);
    }
    var read = document.getElementById("read")
    read.onclick =function(){
        if (added) {
        chrome.serial.onReceive.addListener(onReceiveCallback);//指定串口数据接收函数
        added=false
    }
    
    var buffer = new ArrayBuffer(6);
    var dataView = new DataView(buffer);
    dataView.setInt8(0, 0xaa);
    dataView.setInt8(1, 0x08);
    dataView.setInt8(2, 0x01);
    dataView.setInt8(3, 0x85);
    dataView.setInt8(4, 0x8C);
    dataView.setInt8(5, 0xBB); 
    chrome.serial.send(connectionId, buffer, function(){}); //发送数据
}
var disConnet = function(result){
    console.log(result)
}   

html页面

<!DOCTYPE html>
<html>
 
<head>
    <title>serialportDemo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    选择串口<select id="selectch">
            </select>
            <input  id="btn_submit" type="button" value="连接串口" >
    <div><input  id="read" type="button" value="读取卡信息" ></div>       


</head>
 
<body>
<script src="test.js"></script>
</body>
 
</html>

Mainfest.json

{
    "app": {
        "background": {
            "scripts": ["background.js"]
        }
    },
    "manifest_version": 2,
    "name": "Performance Monitor",
    "version": "1.0",
    "description": "A performance monitor to show cpu and memory status.",
    "icons": {
        "16": "images/icon16.png",
        "48": "images/icon48.png",
        "128": "images/icon128.png"
    },
    "permissions": [
        "serial"
    ]
}

background.js

chrome.app.runtime.onLaunched.addListener(function() {
    chrome.app.window.create('main.html', {
        'id': 'main',
        'bounds': {
            'width': 542,
            'height': 360
        },
        'resizable': false,
        'frame': 'none'
    });
});

猜你喜欢

转载自blog.csdn.net/qq945749777/article/details/81185977
今日推荐