2015-10-21 39 views
0

我試圖在Android中運行命令以將輸出發送到串行端口。如果我使用adb外殼並輸入以下內容:在Android中運行Linux命令以通過串行進行通信

busybox echo -ne 'testMessage' > /dev/ttymxc1 

我收到連接到電路板的串口終端上的「測試消息」。

然後我在Android應用程序運行以下命令:

try 
    { 
     Runtime.getRuntime().exec("busybox echo -ne 'testMessage' > /dev/ttymxc1"); 
    } catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 

但是,我沒有收到輸出,並沒有錯誤這一次。 我試着運行沒有的busybox,只需

echo -ne 'testMessage' > /dev/ttymxc1 

但是這會導致一個空工作目錄,空環境錯誤。這雖然在adb外殼工作,但...

是否有一個原因在應用程序中運行該命令的輸出不執行相同的命令在adb shell中運行?有沒有一個正確的方法來實現這個工作?

編輯:請注意我以root用戶身份運行。我也跑了這個命令以下之前,確保超級用戶權限已被授予:

try 
    { 
     process = Runtime.getRuntime().exec("su"); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
+1

,我發現周圍的工作爲我的具體情況。 只需將/ dev/ttymxc1視爲任何其他文件並寫入文件即可通過串行端口發送數據。同樣,你可以讀取文件(我已經有了讀取方法在FileObserver中運行),它可以讓你通過串口將任何數據發送到設備。 – redspidermkv

回答

0

我覺得只要它是異步過程,你應該等待你的命令的結果。 在你的代碼中,這個命令正在執行中,但你沒有足夠的時間從它得到任何結果,所以你沒有任何錯誤/結果。

試試這個:

try 
{ 
    process = Runtime.getRuntime().exec(YOUR COMMAND HERE); 
    process.waitFor(); 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 
+0

謝謝你。不幸的是,它沒有改變應用程序的行爲。我有一個串行控制檯連接,所以如果進程執行,它應該拿起串口上的數據。 – redspidermkv