我使用 chrome.serial 与 COM 端口上的设备通信,我需要在我的网站上为 javascript 提供基本的 api。第一次尝试是使用 content_script + 消息传递,但我不能使用serial
权限,content_script
因为其中一个需要扩展才能打包应用程序,另一个需要扩展。我可以解决这个问题吗?
问问题
17210 次
2 回答
11
您可以通过chrome extension
支持内容脚本和使用外部消息通信packaged app
进行串行端口通信来解决此问题
On Message External在从另一个扩展发送消息时触发。
参考
于 2013-01-04T09:48:42.210 回答
-1
索引.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() {} );
}
清单.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"]
}
}
}
启动.js
chrome.app.runtime.onLaunched.addListener(function() {
chrome.app.window.create('index.html', {
id: "mainwin",
innerBounds: {
width: 320,
height: 240
}
});
});
于 2015-09-19T19:04:19.970 回答