本文介绍如何通过Flutter_libserialport插件在Flutter中实现串口通信调试。 1、引入依赖 在flutter工程的pubspec.yaml文件中引入flutter_libserialpo
本文介绍如何通过Flutter_libserialport插件在Flutter中实现串口通信调试。
在flutter工程的pubspec.yaml文件中引入flutter_libserialport依赖:
dependencies: flutter_libserialport: ^0.3.0
在dart代码中import导入flutter_libserialport.dart就可以使用了。
import 'package:flutter_libserialport/flutter_libserialport.dart';
通过SerialPort.availablePorts方法可以获取当前的所有串口。以下代码用于打印所有的串口名称。
// 串口测试void serialTest() { print('Available ports:'); var i = 0; List list = SerialPort.availablePorts; print('PortSize: ${list.length}'); for (final name in SerialPort.availablePorts) { print('${++i}) $name'); }}
也可以通过以下代码读取设备串口的详情信息并打印出来。
// 串口测试void serialTest() { print('Available ports:'); var i = 0; List list = SerialPort.availablePorts; print('PortSize: ${list.length}'); for (final name in SerialPort.availablePorts) { final sp = SerialPort(name); print('${++i}) $name'); print('\tDescription: ${sp.description}'); print('\tManufacturer: ${sp.manufacturer}'); print('\tSerial Number: ${sp.serialNumber}'); print('\tProduct ID: 0x${sp.productId!.toRadixString(16)}'); print('\tVendor ID: 0x${sp.vendorId!.toRadixString(16)}'); sp.dispose(); }}
通过SerialPortReader可以创建一个输入流用于接收发送到串口的数据。
// 串口测试void serialTest() { String name = '/dev/ttyS4'; final port = SerialPort(name); // port.config.baudRate = 115200; if (!port.openReadWrite()) { print(SerialPort.lastError); return; } // 读数据 final reader = SerialPortReader(port); reader.stream.listen((data) { print('received: $data'); print('receivedString: ${utf8.decode(data)}'); // 转换为字符串 String hexString = data.map((byte) => byte.toRadixString(16).padLeft(2, '0')).join(); print('receivedHex: ${hexString.toUpperCase()}'); // 转换为16进制 });}
默认接收的数据是Uint8List类型即二进制格式。
我们可以通过utf8.decode(data)方法将接收到的Uint8List数据转换为字符串。
也可以通过data.map((byte) => byte.toRadixString(16).padLeft(2, '0')).join()方法将接收到的Uint8List数据转换成16进制。
通过调用write方法可以直接向串口发送数据,需要注意的是数据类型是Uint8List。
// 串口测试void serialTest() { // 写数据 var bytes = Uint8List.fromList([0xAB, 0xCD, 0xEF]); port.write(bytes);}
在flutter中实现串口通信调试的完整代码示例如下:
// 串口测试void serialTest() { print('Available ports:'); var i = 0; List list = SerialPort.availablePorts; print('PortSize: ${list.length}'); for (final name in SerialPort.availablePorts) { // final sp = SerialPort(name); print('${++i}) $name'); // print('\tDescription: ${sp.description}'); // print('\tManufacturer: ${sp.manufacturer}'); // print('\tSerial Number: ${sp.serialNumber}'); // print('\tProduct ID: 0x${sp.productId!.toRadixString(16)}'); // print('\tVendor ID: 0x${sp.vendorId!.toRadixString(16)}'); // sp.dispose(); } String name = '/dev/ttyS4'; final port = SerialPort(name); // port.config.baudRate = 115200; if (!port.openReadWrite()) { print(SerialPort.lastError); return; } // 读数据 final reader = SerialPortReader(port); reader.stream.listen((data) { print('received: $data'); print('receivedString: ${utf8.decode(data)}'); // 转换为字符串 String hexString = data.map((byte) => byte.toRadixString(16).padLeft(2, '0')).join(); print('receivedHex: ${hexString.toUpperCase()}'); // 转换为16进制 }); // 写数据 var bytes = Uint8List.fromList([0xAB, 0xCD, 0xEF]); port.write(bytes);}
来源地址:https://blog.csdn.net/sg_knight/article/details/130781257
--结束END--
本文标题: Flutter:如何在Android中实现串口通信调试
本文链接: https://www.lsjlt.com/news/386145.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
一口价域名售卖能注册吗?域名是网站的标识,简短且易于记忆,为在线用户提供了访问我们网站的简单路径。一口价是在域名交易中一种常见的模式,而这种通常是针对已经被注册的域名转售给其他人的一种方式。
一口价域名买卖的过程通常包括以下几个步骤:
1.寻找:买家需要在域名售卖平台上找到心仪的一口价域名。平台通常会为每个可售的域名提供详细的描述,包括价格、年龄、流
443px" 443px) https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294.jpg https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294-768x413.jpg 域名售卖 域名一口价售卖 游戏音频 赋值/切片 框架优势 评估指南 项目规模 安全指南 Osprey 游戏分析 游戏调试 游戏图形 游戏物理 开源库
0