flutter_libserialport —— flutter多平台串口通信

这里用到flutter_libserialport 来进行串口通讯,支持android、linux、macos、windows,android和windows亲测可用。

pubspec.yaml里增加

dependencies:
  flutter_libserialport: ^0.4.0

flutter pub get后在.dart文件添加

import 'package:flutter_libserialport/flutter_libserialport.dart';

官方demo只提供了获取所有串口的代码
var availablePorts = SerialPort.availablePorts;

这里着重介绍下如果使用自定义串口、波特率等参数打开串口并读取数据,和发送数据。

    //打开串口
    SerialPort serialPort = SerialPort("/dev/ttyS1");//串口名称 COM1
    bool isSuccess = serialPort.openReadWrite();
    if (isSuccess) {
      //①串口打开后再配置参数
      var config = SerialPortConfig();
      config.baudRate = 9600;				//波特率 115200
      config.bits = 8;						//数据位
      config.parity = SerialPortParity.none;//校验位
      config.stopBits = 1;					//停止位
      config.xonXoff = 0;
      config.rts = 1;
      config.cts = 0;
      config.dsr = 0;
      config.dtr = 1;
      serialPort.config = config;
      config.dispose();
      
      //读串口数据
      SerialPortReader reader = SerialPortReader(serialPort, timeout: 3);
      StreamSubscription<Uint8List> subscription = reader.stream.listen((data) {
        //data为Uint8List 类似java的byte[]
        print(data);
      });
      //停止读串口
      //subscription.cancel();
      
      //写数据
      List<int> data = [1, 2, 3, 4, 5, 0];
      Uint8List bytes = Uint8List.fromList(data);
      serialPort.write(bytes);
    }

①参考大佬回答:https://github.com/jpnurmi/flutter_libserialport/issues/104
根据文档
创建新配置时,其所有设置最初都设置为特殊的-1值。在使用端口之前,应始终配置所有设置。库没有应用默认设置。当您打开一个端口时,它可能具有操作系统或驱动程序的默认设置,或者上一个使用它的程序留下的设置。
还要注意:必须使用dispose()处理配置。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值