最近在搞移动端串口通讯,使用的是官方的接口 android-SerialPort-api,这个接口里面需要对/dev这个文件夹下面的串口文件进行操作
所以demo里面要执行su命令对dev文件夹下面的ttySN文件进行权限更改,改为666,所以重点来了
我们先看下面的相关代码,
if (!device.canRead() || !device.canWrite()) {
try {
/* Missing read/write permission, trying to chmod the file */
Process su;
su = Runtime.getRuntime().exec(sSuPath);
String cmd = "chmod 666 " + device.getAbsolutePath() + "\n" + "exit\n";
su.getOutputStream().write(cmd.getBytes());
if ((su.waitFor() != 0) || !device.canRead() || !device.canWrite()) {
throw new SecurityException();
}
} catch (Exception e) {
e.printStackTrace();
throw new SecurityException();
}
}
其中 su.getOutputStream().write(cmd.getBytes());
每次执行这句话的时候都会异常 java.io.IOException: write failed: EPIPE (Broken pipe)
以上操作相当于我们在代码中执行控制台shell命令,需要手机已经root
上面代码中变量device为选中的ttySn文件,以上代码是对其权限的修改相当于我们直接在控制台执行以下命令
结果是ok的,但是通过我上面列出的官方的demo会出现异常,
请问有没有哥们在使用android-SerialPort-api这个demo的时候有解决过相关问题