1、如何知道是哪个串口设备?
策略:一个一个试(/dev/ttyxxx)
- adb shell
- su 切到root
- echo 123 > ttyxxx
- 用串口调试助手看有没有输出
2、串口没有权限怎么办?
crw------- 1 root root 4, 68 2017-08-05 09:00 ttyS4
如上图,普通用户没有rw的权限
两种方案
- 系统固件ttyS4默认配置改为777
- 这个直接让固件管理员做个固件即可
- 应用程序获取root权限,修改ttyS4权限
-
Runtime.getRuntime().exec("/system/xbin/su")
- 如果系统中su文件的权限是 -rwsr-sr-x root shell,则上面的方式可以直接获得root权限
- 如果su权限是这样的:-rwsr-x--- root shell,则应用程序无法获得root权限(system权限的应用也不行),还需要修改固件
- 有了root权限后,再执行修改ttyS4的权限即可
if (!device.canRead() || !device.canWrite()) { try { /* Missing read/write permission, trying to chmod the file */ Process su; su = Runtime.getRuntime().exec("/system/xbin/su"); 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(); } }
-