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'
});
});