USB串口插件技术文档 - Flutter平台

USB串口插件技术文档 - Flutter平台

usbserial Flutter Android USB Serial plugin usbserial 项目地址: https://gitcode.com/gh_mirrors/usb/usbserial

本文档旨在提供详细指导,帮助开发者了解并高效使用usb_serial插件。该插件由[优快云公司开发的InsCode AI大模型]支持,允许Flutter应用与连接到Android设备的USB串行设备进行交互,特别是适用于FTDI、CDC等协议的设备。

安装指南

步骤一:添加依赖

在您的Flutter项目中的pubspec.yaml文件里,加入以下依赖:

dependencies:
  usb_serial: ^0.5.0

保存文件后,通过命令行运行flutter pub get来下载并安装此插件。

步骤二:配置Android项目

  • android/app/build.gradle文件内,确保包含Java 1.8兼容性设置:

    android {
        ...
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    }
    
  • 可选:为了在设备连接时获得通知,修改AndroidManifest.xml,添加Intent过滤器和资源文件。创建一个res/xml/device_filter.xml文件,其中定义您想要监听的设备ID,并在AndroidManifest.xml中引用它。

步骤三:设备过滤器

将设备过滤器XML内容置于res/xml/device_filter.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- 添加您的设备厂商ID和产品ID -->
    <!-- 示例已省略,参照Readme中的示例 -->
</resources>

并在AndroidManifest.xml内添加以下代码段:

<intent-filter>
    <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
    android:resource="@xml/device_filter" />

使用说明

异步API使用

在您的Flutter代码中,首先导入usb_serial包:

import 'package:usb_serial/usb_serial.dart';

然后,您可以这样使用异步API来获取设备列表并打开串口通信:

onPressed: () async {
    final List<UsbDevice> devices = await UsbSerial.listDevices();
    if (devices.isEmpty) {
        print('No USB devices found.');
        return;
    }

    UsbPort port = await devices.first.create();
    await port.open();
    await port.setPortParameters(115200, UsbPort.DATABITS_8, UsbPort.STOPBITS_1, UsbPort.PARITY_NONE);
    
    // 开始监听接收数据
    port.inputStream.listen((data) {
        print('Received Data: ${data.toString()}');
    }, onError: (error) {
        print('Error: $error');
    });
    
    // 发送数据
    await port.write(Uint8List.fromList([0x10, 0x00]));
    
    // 不要忘记关闭串口
    port.close();
}

事务API使用

事务API提供了更高级的数据处理方式,例如基于消息终止符或特定头信息的数据分隔。示例如下:

final Transaction<String> transaction = Transaction.stringTerminated(port.inputStream, Uint8List.fromList([13, 10]));
transaction.stream.listen((message) {
    print('Transaction Data: $message');
});

// 发送事务请求
await transaction.transaction(port, Uint8List.fromList(['Request Message'.split('').map((char) => char.codeUnitAt(0)).toList()]), Duration(seconds: 1));

升级注意事项

如果您从0.3.0之前的版本升级,请注意Transformer类和Transaction类的签名变化,并相应更新您的代码。

结论

通过上述步骤,您应该能够顺利集成usb_serial插件到您的Flutter应用中,实现对Android设备上USB串行通讯的支持。若遇到任何问题,查看官方仓库的FAQ或提交新问题以获得更多帮助。

usbserial Flutter Android USB Serial plugin usbserial 项目地址: https://gitcode.com/gh_mirrors/usb/usbserial

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霍玺满Roberta

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值