繁体   English   中英

在Android中,如何为每个人创建串口(ttyS0,ttyS1)r / w?

[英]In Android, how is it possible to make serial ports (ttyS0, ttyS1) r/w for everyone?

我开发了一个应用程序来监听串口,我一直在使用“chmod 666 / dev / ttyS0”对串口进行读/写访问 - 但是 - 这种方法依赖于“su”并且只是暂时的。

需要做些什么来永久获得对串行端口的读/写访问权限?

不幸的是,您总是需要超级用户/ root用户才能在COTS硬件上执行此操作(但是大多数现成的Android设备都没有可访问的串行端口)。

如果您可以控制设备固件/ ROM,则可以进行其他安排,以便init.rc文件设置串行设备的所有权,以便只有您的应用程序可以访问,但这似乎比可能需要的更难。

您最好的选择是需要一个root设备,并且您的应用程序每次打开之前都需要在串行设备文件上设置权限。 如果您的手机安装了su应用程序(对于有根的Android设备而言是典型的),那么您的应用程序可以轻松自动完成此操作。 应用程序第一次尝试执行此操作时,用户将获得一个确认对话框,但他们可以选中一个框以便记住允许的决定。

在root设备上,您应该能够执行以下操作:

try {
    Runtime.getRuntime().exec("su -c 'chmod 666 /dev/ttyS0'");
} catch (IOException e) {
    e.printStackTrace();
}

也许这可以帮助别人。

  1. 在linux repo目录“root”上找到你的init.rc文件
  2. 将“chmod 666 / dev / ttyS0”放到任何地方
  3. 编译Linux内核并获取uImage
  4. 您已准备好使用串行端口

我猜你的意思是USB上的虚拟串口? 我知道的任何Android设备上都没有物理串行端口。

关于你的问题:你做不到。 普通(非root)设备上的应用程序是沙箱 ,没有调用chmod等系统命令的权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM