如何从Android应用中的命令输出中读取原始二进制数据

时间:2018-08-16 10:30:10

标签: java android binary

出于天真,首先要提前道歉,我刚开始玩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();

}

现在显然我在日志中得到的内容类似于:

log

最终,这将通过蓝牙传输并在另一个位置(电话或笔记本电脑)进行解析,但是目前如何获得X,Y和Z轴的最终读数?我是Java,Android和Binary的新手,再次为您的幼稚而道歉。

希望有人能指出正确的方向,谢谢。

0 个答案:

没有答案