這是我的第一篇文章在這裏,雖然我已經在這裏讀的東西相當長的一段時間:)保存btmon輸出
目前我在做計算機科學學士學位我的論文,我們正在做的Indoors-定位與iBeacons和藍牙的東西。由於智能手機的複雜性,「被發現」的設備目前是Raspberry Pi。
我的Raspberry Pi上的btmon命令有點問題。我們的程序的完整結構如下:
- 藍牙設備(iBeacons)掃描
- 保存輸出結果< ----這裏的問題
- 篩選所需的數據
- 發送到服務器節點
由於這是我們構建的程序的一部分,所以通過執行終端命令的Java代碼執行這些命令,並將輸出作爲字符串返回。該方法是這樣的:
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();
}
我就擁有了一切使用當其他命令(如使用ifconfig),所以方法適用於普通的命令,但我不能讓它與btmon合作工作。 完整的命令,我試圖運行是這樣的:
sudo btmon & sudo hcitool lescan
它彷彿btmon正在作爲一個不同的過程/運行這可以解釋爲什麼上面的Java代碼沒有捕獲它的輸出在我看來。我一直試圖「得到」btmon運行時,但沒有這樣做,我一直試圖使用ProcessBuilder與inheritIO()
來改變它的輸出源,但無法讓它工作...
到目前爲止,我一直在使用Google,並且遇到了一些Python腳本,我也無法工作(可能是因爲我以前從未使用過Python)。
因此,簡而言之:如何保存sudo btmon & sudo hcitool lescan
的輸出?最好通過Java代碼對字符串進行處理,但將其另存爲文件也可行!
提前致謝! :)