跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

精选回复

发布于

概述

安卓系统支持多种 USB 外围设备,提供两种模式来支持实现 USB 外设接入系统:USB 配件模式和 USB 主机模式

在 USB 配件模式下,接入的 USB 设备充当 USB 主机,并为 USB 总线供电。USB 配件产品包括USB转接设备、诊断和音乐设备、读卡器等,遵循 Android 附件通信协议(Android Accessory Communication Protocol)。这种模式使不具备主机功能的 Android 设备具有了与 USB 硬件交互的能力。

在 USB 主机模式下,Android 设备扮演主机的角色。这种设备的例子包括键鼠、U盘和游戏手柄等。

下图展示了两种模式的异同。当 Android 设备处于主机模式时,它扮演 USB 主机的角色并为总线供电。当 Android 设备处于配件模式时,连接的 USB 外设扮演主机角色并给安卓设备供电。本博客主要介绍安卓设备通过USB扩展串口的应用场景。

v2-14188e10b36a64431f23c8be4077cd7e_720w

安卓设备工作在主机模式

使用安卓免驱USB设备库

USB 主机模式仅在 Android 3.1 及其更高版本的系统中被支持。与 USB 相关的 API 都被保存在 android.hardware.usb 包中,开发者可以直接使用包中的类和方法直接与 USB 设备通讯。

通常情况下,开发者需要通过 UsbManager 实例去获取所需的 UsbDevice 实例,进而从 UsbDevice 实例中查找合适的 UsbInterface,并确定要用于通信的 UsbEndpoint,最后建立 UsbDeviceConnection 与 USB 设备的通信。

针对 USB 转串口芯片厂家一般都会提供配套的应用库和开发资料,工程师使用时无需了解 USB 协议,仅关注串口相关的配置和数据通讯即可。以 CH340/CH341 为例,可参考如下博客:《CH340/CH341安卓应用开发指南》。若客户的产品面向的是使用安卓手机的客户,则建议使用此种方式来,优点在于无需 root 权限和移植设备驱动,用户仅需要安装 APP 软件即可。

使用USB转串口Linux设备驱动

区别于以上方式,当使用 USB 转串口 Linux 设备驱动来访问其生成的虚拟串口时,对串口的操作和 Linux 系统下的操作没有差别,此种方式的适用于面向安卓平板或定制设备的客户,系统需要 root 权限来访问 ttyUSB 设备(也可以厂家修改系统中关于设备的权限)。关于 Linux 系统操作 USB 转串口设备和访问串口可以参考博客:《CH341/CH340Linux驱动使用教程》、《Linux串口编程》

安卓设备工作在配件模式

USB 配件模式允许 Android 设备以配件形式连接到 USB 主机上,其必须遵循 Android AOA 协议。与 USB 相关的 API 都被保存在 android.hardware.usb 及 accessory 包中,开发者可以直接使用包中的类和方法直接与 USB 主机通讯。

采用支持配件模式的 USB 转串口产品的优势在于可以实现 USB 产品边充电边通讯的功能,且支持的安卓设备要比 USB 主机方式应用下更广泛。(因部分安卓设备厂商会关闭OTG功能)应用也无需移植设备驱动,仅需要设备上安装免驱的 APP 软件即可。可参考方案《USB Android AOA转接方案》

以上就是安卓系统访问 USB 转串口的设备的常用方式了,有问题欢迎大家随时交流~

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。