gpt4 book ai didi

javascript - chrome 扩展 - 从串口读取

转载 作者:行者123 更新时间:2023-11-29 10:14:41 30 4
gpt4 key购买 nike

这是我第一次尝试使用 Chrome 应用程序或扩展程序进行开发。我在 USB 端口上有一个 GPS 接收器,它被模拟为一个串行设备。

运行这段代码

var onGetDevices = function(ports) {

for (var i=0; i<ports.length; i++) {

// show me some output
console.log(ports[i].path);

// Connect to the serial port /dev/ttyUSB0
chrome.serial.connect(ports[i].path, {bitrate: 9600}, onConnect);
}
}
chrome.serial.getDevices(onGetDevices);

在控制台中获取“/dev/ttyUSB0”,因此它似乎正在寻找设备。

然后如何连接到设备?我在上面包含了 serial.connect 行,具有以下功能:

var onConnect = function(connectionInfo) {
// The serial port has been opened. Save its id to use later.
_this.connectionId = connectionInfo.connectionId;

// Do whatever you need to do with the opened port.
chrome.serial.onReceive.addListener(onReceiveCallback);
}

var stringReceived = '';
var onReceiveCallback = function(info) {
if (info.connectionId == expectedConnectionId && info.data) {
var str = convertArrayBufferToString(info.data);

if (str.charAt(str.length-1) === '\n') {
stringReceived += str.substring(0, str.length-1);
onLineReceived(stringReceived);
stringReceived = '';
}
else {
stringReceived += str;
}
}
};

但我收到以下错误:

Error in response to serial.connect: ReferenceError: _this is not defined at Object.onGetDevices [as callback]

我不确定我在这里做对了什么或错了什么,所以任何指点都不胜感激。

最佳答案

首先这个例子不能正常工作。试试这个:

var connectionId;

$(document).ready(function() {
chrome.serial.getDevices(function(devices) {

for (var i = 0; i < devices.length; i++) {
$('select#portList').append('<option value="' + devices[i].path + '">' + devices[i].path + '</option>');
}
});

// ui hook
$('button#open').click(function() {
var clicks = $(this).data('clicks');

if (!clicks) {
var port = $('select#portList').val();
chrome.serial.connect(port, {bitrate: 9600}, function(info) {
connectionId = info.connectionId;
$("button#open").html("Close Port");
console.log('Connection opened with id: ' + connectionId + ', Bitrate: ' + info.bitrate);
});
} else {
chrome.serial.disconnect(connectionId, function(result) {
$("button#open").html("Open Port");
console.log('Connection with id: ' + connectionId + ' closed');
});
}

$(this).data("clicks", !clicks);
});
});

现在至于从串行连接实际读取输入,它可以工作,但是将 ArrayBuffer 转换为字符串比预期的要难一些。

关于javascript - chrome 扩展 - 从串口读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24986049/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com