出于天真,首先要提前道歉,我刚开始玩Android / Java,因此决定深入研究。
我需要完成的是将android设备上的原始输出和传感器上的传感器的原始输出转换/解析为我可以看到的格式,以便可以检查驱动程序是否按预期工作。
使用一些示例代码和不眠之夜,我已替换了Android设备上MPU的驱动程序。然后,驱动程序在/ sys / class / misc / x / x / fifo导出一组虚拟文件。 FIFO是二进制数据的连续流。这本质上是原始数据从传感器发出。因此,我需要像读取文件一样读取文件。根据注释,数据被格式化为6个字节的样本,其中每个样本包含3个大端16位数字(分别代表X,Y和Z轴数据)。
我的阅读方式(使用示例代码)如下:
ProcessBuilder cmd;
try {
long start = System.currentTimeMillis();
// Run the command
String[] args = { "/system/bin/cat", "/sys/class/misc/x/x/fifo" };
cmd = new ProcessBuilder(args);
Process process = cmd.start();
InputStream in = process.getInputStream();
byte[] re = new byte[32768];
int read = 0;
while ( (read = in.read(re, 0, 32768)) != -1 && System.currentTimeMillis() - start < 3000) {
String string = new String(re, 0, read);
Log.e(getClass().getSimpleName(), string);
}
in.close();
} catch (IOException ex) {
ex.printStackTrace();
}
现在显然我在日志中得到的内容类似于:
最终,这将通过蓝牙传输并在另一个位置(电话或笔记本电脑)进行解析,但是目前如何获得X,Y和Z轴的最终读数?我是Java,Android和Binary的新手,再次为您的幼稚而道歉。
希望有人能指出正确的方向,谢谢。