• 通过usb串口发送接收数据


    USB通信使用系统api,USB转串口通信使用第三方库usb-serial-for-android,
    串口通信使用Google官方库android-serialport-api。x

    引入包后在本地下载的位置:C:\Users\Administrator\.gradle\caches\modules-2\files-2.1

    在 Android 中,可以通过 USB 转串口适配器连接串口设备,并通过串口发送和接收数据。以下是一种常见的实现方式:

    确认设备权限和支持:

    1.在 AndroidManifest.xml 文件中添加 权限,以获取 USB 主机支持。
    添加 权限,以获取 USB 设备权限。

    2.获取 USB 设备列表:

    使用 UsbManager 类的 getDeviceList() 方法获取已连接的 USB 设备列表。选择你需要连接的 USB 转串口适配器。
    3.请求 USB 权限:

    使用 UsbManager 类的 requestPermission() 方法向用户请求 USB 设备权限,并注册 BroadcastReceiver 监听权限授权结果。在广播接收器中处理权限授权结果。
    4.打开和配置串口连接:

    使用 UsbDeviceConnection 类的 open() 方法打开 USB 设备连接。
    使用 UsbDeviceConnection 接口中的 setBaudRate()、setDataBits()、setStopBits()、setParity() 等方法配置串口参数。
    5.发送数据:

    创建 UsbDeviceConnection 对象后,通过 UsbDeviceConnection 的 bulkTransfer() 方法向串口发送数据。将要发送的数据作为字节数组传递给 bulkTransfer() 方法。
     



    怎么样查看android设备上连接的串口
    要查看 Android 设备上连接的串口设备,可以使用下面的步骤:

    1.确保你的设备已经获取了相应的权限和功能支持。

    在 AndroidManifest.xml 文件中添加  权限,以获取 USB 主机支持。

    添加 权限,以获取 USB 设备权限。


    2.使用 UsbManager 类获取连接的 USB 设备列表:

    1. UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
    2. HashMap deviceList = usbManager.getDeviceList();

    3.遍历设备列表,检查设备是否是串口设备:

    1. for (UsbDevice device : deviceList.values()) {
    2. if (usbManager.hasPermission(device)) {
    3. // 检查设备是否是串口设备
    4. if (UsbSerialDevice.isSupported(device)) {
    5. // 设备是串口设备,可以进行相应的操作
    6. String deviceName = device.getDeviceName();
    7. int vendorId = device.getVendorId();
    8. int productId = device.getProductId();
    9. // 在这里处理找到的串口设备信息
    10. }
    11. }
    12. }

    4.处理找到的串口设备信息:

    deviceName 是串口设备的名称,用于表示设备节点路径。
    vendorId 是设备的供应商 ID。
    productId 是设备的产品 ID。
     

    现在,串口的话,遇到的问题就是用usb的线连接才能查看连接到androdi设备上的串口,但是又不知道到底哪个才是,拔掉的话又无法用命令进行控制。
    所以,应该是可以通过写一个串口的android程序进行判断的,比如先把程序拷进板子里,然后打印出串口设备,然后通过usb连接线再次执行程序,肯定会与前一次有所差异,这样就能确定在android设备中是哪个串口了。
    串口能的话,那么两个板子之间进行串口通信应该是没有什么问题了。


    所需硬件:Android 设备需要支持 USB OTG(On-The-Go)功能,这允许 Android 设备充当 USB 主机来连接外部 USB 设备,例如读卡器。您还需要一款适用于 Android 的读卡器,它需要支持与 Android 设备连接的通信协议和数据格式。
    权限设置:为了与读卡器进行通信,您需要在应用程序清单文件中请求适当的权限。例如,如果您要连接 USB 设备,您需要在清单文件中声明 android.permission.USB 权限,这将允许您的应用程序访问 USB 设备。

    一个android设备接收数据并处理的大概过程

    当 Android 设备通过 USB 串口模拟协议连接到计算机,并接收到数据时,一般的处理过程大致如下:
    1.设置 USB 串口通信:在 Android 设备上,需要确保 USB 调试和串口通信选项已启用。这可以通过转到设备的开发者选项或 USB 设置中进行设置。
    2.配置串口参数:根据所连接的设备的要求,您可能需要设置串口的参数,例如波特率、数据位、停止位等。这些参数通常可以在串口软件或应用程序中进行配置。
    3.建立串口连接:通过打开串口软件或应用程序,在其设置中选择正确的串口号和参数,然后建立与 Android 设备的串口连接
    4.接收数据:一旦串口连接建立,Android 设备将开始接收通过 USB 接口发送的数据。该数据将通过串口软件发送到应用程序中,可以通过相应的串口读取函数或API来获取数据。
    5.数据处理:接收到的数据可以由应用程序进行处理。您可以根据数据的格式和内容进行解析、提取所需信息,然后根据需要进行相关的操作和响应。
    6.反馈或回复:根据数据处理的结果,您可以生成相应的反馈信息或回复数据。您可以使用串口写入函数或API将数据发送回计算机,以实现双向通信。
    总结起来,Android 设备接收数据并处理的大致过程包括设置 USB 串口通信、配置串口参数、建立串口连接、接收数据、数据处理以及反馈或回复数据。这样可以实现与计算机之间的双向数据交互,并根据需要进行相应的操作和响应。


    那么,需要使用哪些库或包,还有开发软件与工具呢?
    要在Android设备上进行USB串口通信和数据处理,可以使用以下库或包以及开发软件和工具。
    USB串口通信库:您可以使用一些第三方库来处理USB串口通信,例如USB-Serial-for-Android、UsbSerial等。这些库提供了方便的API和功能,用于建立USB串口连接、发送和接收数据等。
    Android开发工具包(Android SDK):您需要使用Android SDK来进行Android应用程序的开发。其中包含了Android开发所需的工具、调试器。
    开发环境:您可以选择使用Android Studio作为主要的开发环境。Android Studio是一个官方支持的集成开发环境(IDE),提供了丰富的开发工具和功能,使您能够轻松地构建和调试Android应用程序。
    串口读写相关函数或API:根据您选择的USB串口通信库,您需要熟悉相应的读写函数或API。这些函数或API可以帮助您实现与USB串口设备的数据交互,包括接收和发送数据。
    数据处理库或算法:根据您的具体需求,您可能需要使用一些数据处理库或算法来解析、提取和处理接收到的数据。这可能涉及到字符串操作、解析协议、数据转换等。
    调试工具:在开发过程中,调试工具是非常重要的。您可以使用Android设备自带的日志输出、调试模式以及各种调试工具和监视器,以便查看应用程序的运行状态、输出日志和调试信息。


    步骤:
    androidManifext.xml       权限,xml
    device_detail.xml
    导入模块
    usb 的vendor-id="1027" product-id="24577"

        


    串口:

    串口:

    1. 来源:COM口 即 串行通讯端口,简称 串口。
    2. 注意:串口、COM口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485指的是串口的电平标准(电信号)。电平标准简单来说就是:什么电压值表示0,什么电压值表示1
    3. TTL电平标准 是 低电平为0,高电平为1(电平信号)
    4. RS-232电平标准 是 正电平为0,负电平为1(电平信号)
    5. RS-485、RS-422 与RS-232类似,但是采用差分信号逻辑,更适合长距离、高速传输。
    6. TTL电平与RS232电平的转换:常用MAX232芯片
    7. 串口的硬件实现主要有两种:D型9针插头(DB9)和 4针杜邦头

    注意:DB9接口的协议常用的只有三种:RS-232、RS-485和RS-422。绝不会是TTL电平,80%的可能性是RS-232。

    usb:

    1)来源:通用串行总线,也就是常见的笔记本电脑的u盘插口,鼠标插口,键盘插口

      

        2).RS-232与USB都是串行通信,但两者完全不同,串口1980年诞生,usb1995年诞生;

        3).usb通信速率,稳定性都比传统串口好

    usb转串口

    1. PL2303、CP2102、FT232R 芯片是用USB转串口(TTL电平输出)的芯片,需要安装Windows驱动。
    2. 下图是个USB转TTL串口的小板(TTL电平),芯片为PL2303HX。
    3. 如果目标设备上是RS-232串口(D型9针接口)咋弄?
    4. 再串接一片 MAX232芯片转换成 RS-232电平就行,于是产生了USB转RS-232串口的产品
    5. 仔细看上图(从右到左),USB经过PL2303转成了TTL串口(中间那四个窟窿可以引出),再经由MAX232转换为RS-232电平,9针串口引出。
    6. 现在市面上常见的usb转rs-232是这样的(只要是 D型9针串口,不会是TTL电平的,没特殊说明就默认是RS-232。

    #####################

    USB通信使用系统api,USB转串口通信使用第三方库usb-serial-for-android,串口通信使用Google官方库android-serialport-api

    串口:采用google 提供的android包,可以找到设备,并进行显示,但是不能在android 11版本以上运行。

    注:本篇文章旨在学习与记录,大多来自其他博主,也懒得找链接了,就是整理一下笔记。

  • 相关阅读:
    ARM 汇编比较指令-条件执行指令
    玩转技巧|如何安全和方便地操作 Github
    2022-05-20每日刷题打卡
    大数据培训技术自定义Sink案例测试
    Flutter for App——一个简单的BMI计算APP
    前端工具和模板网站
    基于AERMOD模型在大气环境影响评价中的实践技术
    文心一言 VS 讯飞星火 VS chatgpt (104)-- 算法导论10.1 2题
    更改Kali Linux系统语言以及安装zenmap
    图数据库 之 Neo4j - 应用场景4 - 反洗钱(9)
  • 原文地址:https://blog.csdn.net/qq_63053996/article/details/133585133