gpt4 book ai didi

javascript - Chrome.serial API - 通过串口读取正确的字节数

转载 作者:行者123 更新时间:2023-11-30 12:53:44 24 4
gpt4 key购买 nike

我正在开发一个通过串行与 Arduino UNO 通信的 Google Chrome 扩展。我编写了以下函数 sendSerialCmd,它接受一个端口(字符串)、一个 serial_cmd(ArrayBuffer)和一个回调函数,该回调函数通过从串行连接读取的 readInfo.data(一个 ArrayBuffer)传递。

var CONNECTION_ID = -1;
var sendSerialCmd = function(port, serial_cmd, callback) {
chrome.serial.open(port, null, function(openInfo){
CONNECTION_ID = openInfo.connectionId;
if (CONNECTION_ID == -1) {
console.log('Could not connect to serial');
return;
}
chrome.serial.write(CONNECTION_ID, serial_cmd, function(writeInfo){
chrome.serial.read(CONNECTION_ID, 8, function(readInfo){
callback(readInfo.data);
});
})
});
chrome.serial.close(CONNECTION_ID, function(result){ console.log(result) });
};

我遇到的问题之一是传递给 chrome.serial.read() 函数的第三个参数。在chrome.serial API,第三个参数是 bytesToRead ( integer ): 要读取的字节数,但是,从我的 Arduino 传入的字节数可能会发生变化。有时我可能得到 8 个字节,有时更多。从我的 Arduino 返回所有字节的最佳方式是什么?

Arduino 通过一个名为 Serial.available() 的函数有一个新颖的解决方案它返回可读取的字节数。我可以使用 Chrome.serial API 做一些类似的事情吗?

最佳答案

Chrome 串行 API 中没有与 Serial.available() 类似的功能,但您应该只轮询一些合理数量的字节并按照自己的节奏处理数据。

如果请求读取(例如)1024 字节并且只有 8 个字节可用,则 读取 应该仍然很快成功,只有 8 个字节。如果有 8 字节的消息和 12 字节的消息可用,read 将成功读取 20 字节,您可以应用任何必要的逻辑来解析结果数据。

仅供引用,Canary 中的串行 API 即将更改,您将不再负责使用 read 进行手动轮询。相反,Chrome 会为您轮询并触发 chrome.serial.onReceive 事件,因为数据可从打开的设备获得。

关于javascript - Chrome.serial API - 通过串口读取正确的字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20006737/

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