我正在Android(v5.1.1)上构建一个Cordova
应用程序,它通过串行/ USB端口从传感器读取数据。使用Cordova
插件xseignard/cordovarduino
,我可以从端口A或端口B获取数据,但不能同时获取数据。
这是我测试过的代码片段,它将从端口B获取数据,但不从端口A获取数据。在registerReadCallback
中,两个端口都调用相同的函数进程Data。
serial.requestPermission(
portAInfo,
function(successMessage) {
console.log("Permission for port A aquired!");
serial.open(
{baudRate: 460800},
// if port is succesfuly opened
function(successMessage) {
console.log("port A opened!");
serial.registerReadCallback(
function(data) {
// read data from port A
processData(data)
},
errorHandler
);
serial.requestPermission(
portBInfo,
// if user grants permission
function(successMessage) {
console.log("Permission for port B acquired!");
serial.open(
{baudRate: 460800},
// if port is successfully opened
function(successMessage) {
console.log("port B opened!");
serial.registerReadCallback(
function(data) {
// read data from port B
processData(data)
},
errorHandler
);
}
);
}, errorHandler
)
}, errorHandler
);
}, errorHandler
);
可能是" serial"在打开端口B后仅与portBInfo
绑定,因此调用serial.registerReadCallback
将永远不会从端口A获取数据。
我知道这与图书馆有特别的关系,但如果有人之前遇到过这个问题,请就此提出一些建议。