【问题标题】:How to control a serial device on Android?如何在 Android 上控制串口设备?
【发布时间】:2011-07-21 06:35:55
【问题描述】:

我想在 Linux Android 上开发一个通过 USB 控制串行设备的应用程序。
支持 USB 主机的 Android 操作系统是 3.1。

Q1:请告诉我如何获取串口设备挂载的端口。

当我在 Dalvik 调试监视器上获得“转储设备状态”时,我得到了可能的 USB 设备信息。
而且,我使用 adb 在 android 设备上检查了 /dev/tty*。
我不知道串口设备是哪一个(/dev/tty??)。

adb 外壳
$ ls /dev/tty*
/dev/tty
/dev/ttyFIQ0
/dev/ttyHS0
/dev/ttyHS2
/dev/ttyHS3
/dev/ttyHS4
/dev/ttyS0
/dev/ttyS1
/dev/ttyS2
/dev/ttyS3

Q2:请告诉我如何在没有root权限的情况下在Android上控制串口设备。

我有一个应用程序(exe)可以控制 linux 上的串行设备。
我试图在 android 上做,但我不能做权限被拒绝。

而且,我尝试重定向到串行端口(也许)
$ ls > /dev/ttyS0
但我做不到。
无法创建 /dev/ttyS0:权限被拒绝。

请告诉我如何控制和访问串行设备。

【问题讨论】:

  • 要利用 Android USB 主机功能及其相应的 API 执行此操作,您必须在应用程序的用户空间中实现 USB 串行驱动程序代码。最终不会涉及内核“串行”驱动程序或设备。
  • 哪个串口设备?可以有数百个!请具体说明您想要做什么。

标签: android serial-port usb usbserial


【解决方案1】:

在 XDA 论坛帖子中有一个很好的评论:

How to talk to the Modem with AT commands.

该线程向您展示了如何使用远程终端(USB 连接到您的 PC)发送 AT 命令(ATC),但尚未解决如何使用本地(电话)终端与电话交谈的问题调制解调器。

顺便说一句。您需要一个终端应用程序/程序来与调制解调器进行任何对话(请记住,它是一种双向通信)。这就是为什么你需要一个根设备,因为根工具包通常带有 Busybox(包括一个 microcom 终端程序)。否则,您必须编写自己的程序。

【讨论】:

  • 这解决了一个与实际提出的问题截然不同的问题。
  • 上述问题是模棱两可的,因为任何 android 都可以有数百个“串行”设备。只需检查:cat /proc/tty/drivers
【解决方案2】:

在下一步中,您可以通过几个命令测试 tty* 端口: $ cat /dev/tty* /for 接收来自 tty 的字符 和 $ echo 'text string' > /dev/tty* /for 发送字符到 tty

祝你好运!

【讨论】:

    【解决方案3】:

    在有根设备上试试??在研究同一件事时,我读到只有少数 3.1 / 2.3.4 设备允许非 root 用户访问 USB 端口。

    这就是我的 HTC Desire 无根版本 2.2:

    $ ls /dev/tty*
    ls /dev/tty*
    /dev/tty
    /dev/ttyHS0
    /dev/ttyHSUSB0
    /dev/ttyHSUSB1
    /dev/ttyHSUSB2
    /dev/ttyMSM0
    

    我的华硕变压器,无根,3.2:

    $ ls /dev/tty*
    ls /dev/tty*
    /dev/tty
    /dev/ttyHS1
    /dev/ttyHS2
    /dev/ttyS0
    /dev/ttyS1
    /dev/ttyS2
    /dev/ttyS3
    

    当安装了键盘底座(它作为 2 个 USB 端口)时,我得到完全相同的列表。

    希望对您有所帮助,请告诉我,我也希望能够做到这一点。

    【讨论】:

    • 这些都假定存在内核驱动程序,除非设备已root(此处不是这种情况)或安装中已经有驱动程序(除非设备是不是普通的手机/平板电脑)。正确的答案是针对 Android USB 主机 API 在用户空间中实现 USB 串行逻辑。
    • @ChrisStratton 但是在通过 USB Host API 连接并与 windows PC 连接时,没有得到 USB 设备对象。
    猜你喜欢
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 2018-12-19
    • 2013-06-01
    相关资源
    最近更新 更多