Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 保存btmon输出_Java_Linux_Save_Raspberry Pi_Bluez - Fatal编程技术网

Java 保存btmon输出

Java 保存btmon输出,java,linux,save,raspberry-pi,bluez,Java,Linux,Save,Raspberry Pi,Bluez,这是我在这里的第一篇帖子,尽管我已经在这里读了很长时间了:) 我目前正在做我的计算机科学学士论文,我们正在用iBeacons和蓝牙进行室内定位。由于智能手机的复杂性,“被发现”的设备目前是覆盆子Pi 我的Raspberry Pi上的btmon命令有点问题。我们计划的完整结构如下: 扫描蓝牙设备(iBeacons) 保存输出结果我遇到了同样的问题,花了很多天来解决这个问题。关键点是线程,而不是使用&。以下是我的发现: &实际上是在后台运行的。将sudo btmon&更改为sudo btmon 使

这是我在这里的第一篇帖子,尽管我已经在这里读了很长时间了:)

我目前正在做我的计算机科学学士论文,我们正在用iBeacons和蓝牙进行室内定位。由于智能手机的复杂性,“被发现”的设备目前是覆盆子Pi

我的Raspberry Pi上的btmon命令有点问题。我们计划的完整结构如下:

  • 扫描蓝牙设备(iBeacons)

  • 保存输出结果我遇到了同样的问题,花了很多天来解决这个问题。关键点是
    线程
    ,而不是使用
    &
    。以下是我的发现:

    • &
      实际上是在后台运行的。将
      sudo btmon&
      更改为
      sudo btmon

    • 使用线程

      • 线程1-启动btmon(您可以在此线程中获得结果)
      • 线程2-启动hcitool lescan
    (btmon应该首先-因为“lescan”会发生hci事件,所以btmon可以获取它们)摘要-不要使用
    &
    而使用独立线程

    private String executeCommand(String command) {
        StringBuffer output = new StringBuffer();
        Process p;
        try {
            p = Runtime.getRuntime().exec(command);
            p.waitFor();
            BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
    
            String line = "";
            while ((line = reader.readLine()) != null) {
                output.append(line + "\r\n");
            }
    
        } catch (Exception e) {
            e.printStackTrace();
        }
    
        return output.toString();
    }
    
    sudo btmon & sudo hcitool lescan