Последовательный порт расширения Google Chrome на веб-сайте
Я использую chrome.последовательный для связи с устройством на COM-порту, и мне нужно предоставить базовый api для javascript на моем веб-сайте. Первая попытка была с content_script + messaging, но я не могу использовать serial
разрешение content_script
потому что один из них требует расширения для упаковки приложения, а другой-расширения. Могу ли я решить эту проблему?
2 ответов
вы можете решить это с помощью chrome extension
в поддержку Сценарии и packaged app
на последовательный порт связи С Внешний Сообщении
Fetch Ваш идентификатор расширения использует API управления и установить подключение для одного сообщения сообщении.
На Сообщение Внешний запускается, когда сообщение отправляется с другим расширением.
ссылки
.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
}
});
});