2015-10-21 41 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