Flutter:如何在Android中实现串口通信调试

本文介绍如何通过flutter_libserialport插件在Flutter中实现串口通信调试。

1、引入依赖

​ 在flutter工程的pubspec.yaml文件中引入flutter_libserialport依赖:

dependencies:
  flutter_libserialport: ^0.3.0

2、导入import依赖包

​ 在dart代码中import导入flutter_libserialport.dart就可以使用了。

import 'package:flutter_libserialport/flutter_libserialport.dart';

3、读取所有串口设备

​ 通过SerialPort.availablePorts方法可以获取当前的所有串口。以下代码用于打印所有的串口名称。

// 串口测试
void serialTest() {
  print('Available ports:');
  var i = 0;
  List<String> list = SerialPort.availablePorts;
  print('PortSize: ${list.length}');
  for (final name in SerialPort.availablePorts) {
    print('${++i}) $name');
  }
}

image-20250103145317193

也可以通过以下代码读取设备串口的详情信息并打印出来。

// 串口测试
void serialTest() {
  print('Available ports:');
  var i = 0;
  List<String> 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();
  }
}

4、监听并接收串口数据

​ 通过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进制
  });
}

1、默认接收的数据是Uint8List类型即二进制格式。

2、我们可以通过utf8.decode(data)方法将接收到的Uint8List数据转换为字符串。

3、也可以通过data.map((byte) => byte.toRadixString(16).padLeft(2, ‘0’)).join()方法将接收到的Uint8List数据转换成16进制。







扫描下方二维码,关注公众号:程序进阶之路,实时获取更多优质文章推送。


扫码关注

评论