我使用chrome.serial与COM端口上的设备进行通信,并需要为我的网站上的JavaScript提供基本API。第一次尝试是使用content_script + messaging,但我无法在content_script中使用serial权限,因为其中一个要求扩展程序为打包应用程序,另一个要求为扩展程序。我能解决这个问题吗?
Chrome扩展程序
来支持内容脚本和打包应用程序
,以实现与外部消息通信的串口通信。更新此帖,他们可以使用Web串行通信通过Web连接到串行端口。
https://chromestatus.com/feature/6577673212002304
https://web.dev/serial/
index.html
<button>Connect</button>
<script src="main.js"></script>
main.js
var connectionId;
/* Converts a string to UTF-8 encoding in a Uint8Array; returns the array */
var str2ab = function(str) {
var encodedString = unescape(encodeURIComponent(str));
var bytes = new Uint8Array(encodedString.length);
for (var i = 0; i < encodedString.length; ++i) {
bytes[i] = encodedString.charCodeAt(i);
}
return bytes.buffer;
};
var options = {
'bitrate': 115200,
'dataBits': 'eight',
'parityBit': 'no',
'stopBits': 'one'
}
document.addEventListener('DOMContentLoaded', function () {
document.querySelector('button').addEventListener('click', btnSend);
chrome.serial.connect('COM3', options, function(info) {
connectionId = info.connectionId;
console.log("Connection established.");
});
});
var btnSend = function() {
var msg = "hello printer 123456\n";
chrome.serial.send(connectionId, str2ab(msg), function() {} );
}
manifest.json
{
"name": "Printer at COM3 test",
"version": "1",
"manifest_version": 2,
"permissions": ["serial"],
"minimum_chrome_version": "23",
"icons": {
"16": "icon_16.png",
"128": "icon_128.png"
},
"app": {
"background": {
"scripts": ["launch.js"]
}
}
}
launch.js
chrome.app.runtime.onLaunched.addListener(function() {
chrome.app.window.create('index.html', {
id: "mainwin",
innerBounds: {
width: 320,
height: 240
}
});
});
chrome.extension
,它是undefined
。 - striker