You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用flutter_libserialport读取串口时出现字节解析异常

问题解决:flutter_libserialport 直接打开串口无法解析字节的问题

核心原因是你仅配置了波特率,串口的其他关键参数(数据位、停止位、奇偶校验)未明确设置。Arduino IDE/Java应用打开串口时会自动将这些参数配置为设备默认值(通常为8数据位、1停止位、无校验),关闭后参数会保留,因此Flutter后续打开时能正常工作。

解决方案:

  • 显式配置完整串口参数,确保与Arduino/ESP32的串口设置完全匹配
  • 打开串口后清空接收缓冲区,避免残留乱码干扰解析
  • 尝试兼容更广的编码解码(如latin1),部分设备输出可能并非标准UTF-8

修改后的代码:

final port = SerialPort("COM3");
// 配置完整串口参数,匹配Arduino/ESP32默认设置
final config = SerialPortConfig()
  ..baudRate = 115200
  ..dataBits = 8
  ..stopBits = 1
  ..parity = SerialPortParity.none;

port.config = config;

if (!port.openReadWrite()) {
  print(SerialPort.lastError);
} else {
  // 清空收发缓冲区,清除残留数据
  port.flush(SerialPortFlush.tx);
  port.flush(SerialPortFlush.rx);

  final reader = SerialPortReader(port);
  reader.stream.listen((data) {
    // 优先用UTF-8解码,失败则用latin1兜底
    try {
      print('received: ' + utf8.decode(data));
    } catch (e) {
      print('received (latin1): ' + latin1.decode(data));
    }
  });
}

额外排查点:

  • 确认Arduino/ESP32代码中的串口初始化参数与Flutter端完全一致
  • 检查串口线质量,劣质线材可能导致数据传输异常
  • 更换串口端口号,确认无其他进程占用目标端口

内容的提问来源于stack exchange,提问作者amirre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 04:12:35