我正在开发一个移动应用程序作为称重秤的UI(硬件:Beaglebone black - Debian wheezy OS),使用Cordova(HTML,css和JQuery)。
称重秤数据已存储在位于机器/ tmp /目录的FIFO文件中。
我的要求是从Android移动设备上运行的UI应用程序中读取该FIFO文件。显示其中的值。机器已通过USB OTG连接到我的手机。
以下是我的尝试:
我在设备上写了一个'C'程序,用于阻止FIFO文件只读,并在控制台中打印。
int main()
{
int fd1;
char * myfifo = "/tmp/myfifo";
char str1[180], str2[180];
fd1 = open(myfifo,O_RDONLY); // block fifo file for reading
read(fd1, str1, 180);
printf("%s\n", str1);
close(fd1);
return 0;
}
我在Windows机器上有一个带有node-serialport包的nodejs脚本,通过COM端口连接到设备。
使用此节点脚本,我可以通过COM端口以root用户身份连接到设备的终端,并能够执行“C”程序。我通过执行此nodejs脚本在Windows机器终端窗口中获取数据。
var SerialPort = require('serialport');
var myPort = new SerialPort('COM3', 9600);
var Readline = SerialPort.parsers.Readline;
var parser = new Readline();
myPort.pipe(parser);
myPort.on('open', showPortOpen);
parser.on('data', readSerialData);
myPort.on('error', showError);
myPort.on('close', showPortClose);
function showPortOpen() {
myPort.write('root\r', function(err) {
if (err) {
console.log(err);
}
});
command = '/root/readtest\r'; // location of the compiled C program on device
setInterval(() => { // keep executing the program with specific interval
myPort.write(command, function(err) {
if (err) {
console.log(err);
}
});
},500);
}
function readSerialData(data) {
console.log(data);
}
function showPortClose() {
console.log('port closed.');
}
function showError(error) {
console.log('Serial port error: ' + error);
}
是否可以将此nodejs脚本与我的cordova应用程序捆绑在一起在移动设备的后台运行?
从我的应用程序中读取FIFO文件并在UI中显示的任何其他选项?
是否可以使用cordova插件cordovarduino读取文件?