USB串口插件技术文档 - Flutter平台
usbserial Flutter Android USB Serial plugin 项目地址: 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 项目地址: https://gitcode.com/gh_mirrors/usb/usbserial
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考