Chrome.serial API - 通过串行读取正确数量的字节
Chrome.serial API - reading the right number of bytes via serial
我正在开发一个Google Chrome扩展程序,该扩展程序通过串行与Arduino UNO进行通信。我编写了以下函数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(整数):要读取的字节数,但是,来自Arduino的字节数可能会发生变化。有时我可能会得到 8 个字节,有时更多。从我的Arduino发回所有字节的最佳方法是什么?
Arduino通过一个名为Serial.available()的函数提供了一种新颖的解决方案,该函数返回可读取的字节数。我可以用Chrome.serial API做类似的事情吗?
串行 API 中没有与Serial.available()
类似的功能,但您应该只轮询一些合理的字节数并按照自己的节奏处理数据。
如果请求 1024 个字节的read
,并且只有 8 个字节可用,则read
仍应仅使用 8 个字节快速成功。如果有 8 字节消息和 12 字节消息可用,则read
将以 20 字节成功,您可以应用任何必要的逻辑来分析结果数据。
仅供参考,Canary 中的串行 API 即将更改,您将不再负责使用 read
手动轮询。相反,Chrome 会为您轮询,并在开放设备提供数据时触发chrome.serial.onReceive
事件。
- 从桌面读取python文件时高亮显示代码
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 使用JavaScript从二进制文件中读取字节,而不使用jQuery
- Chrome.serial API - 通过串行读取正确数量的字节
- 仅从节点.js中的套接字读取前 N 个字节
- 可以't用javascript从protobuf消息中读取字节
- 如何有效地从字节中读取位
- 如何读取二进制文件字节字节使用javascript
- 读取选择字节的数值
- 如何读取一个ArrayBuffer与二进制数据在“4字节”单/浮点/IEEE 754编码数据
- 如果二进制数据是“4字节单一格式”是什么意思?以及如何在JavaScript中读取它
- node.js/读取文件的前100个字节
- 使用Node JS从缓冲区读取上字节和下字节
- 如何读取javascript中的前4个字节,将其转换为整数并删除其余字节
- JavaScript:将 3 字节缓冲区读取为整数
- Javascript:从XMLHttpRequest读取原始字节——搞砸了
- JavaScript:读取8字节到64位整数
- 如何确定从缓冲区读取到node.js的字节数