我使用chrome.serial与COM端口上的设备进行通信,我需要在我的网站上为javascript提供基本API。首先尝试使用content_script + messaging,但我无法使用serial
权限content_script
,因为其中一个需要扩展为打包app,另一个需要扩展。我可以解决这个问题吗?
答案 0 :(得分:10)
您可以使用chrome extension
解决此问题,以Content Scripts支持packaged app
serial port communication和External Message Communication
使用management API获取您的扩展ID,并为单条消息connection建立communication。
从另一个分机发送消息时会触发答案 1 :(得分:-2)
的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
}
});
});