美文网首页
flutter 应用实现:电子秤连接、数据获取(适配Androi

flutter 应用实现:电子秤连接、数据获取(适配Androi

作者: 李小轰 | 来源:发表于2023-09-05 11:11 被阅读0次

    引言

    当下使用 flutter 作为技术栈开发的公司越来越多,场景越来越繁杂。小编在业务中使用 flutter 开发了一个连接电子秤的 flutter 库,适用于 Android、Windows 平台。flutter-package 已发布到 pub,实现代码已开源。

    使用须知

    flutter_weigh_serial 该库支持串口方式连接(包括usb转串口)的电子称重设备。

    注意:Windows 平台使用该库,仍需要在 Windows 设备上安装电子秤对应的串口驱动,否则搜索不到对应设备串口。

    使用方式

    • 添加依赖
    dependencies:
      flutter_weigh_serial: ^1.0.0+1
    
    • 提供 api
    1. 搜索并连接称重器
    2. 监听称重器数据返回(返回数据模型 WeighResult
    3. 断开称重器

    示例代码如下:

    import 'package:flutter_weigh_serial/flutter_weigh_serial.dart';
    
    class _MyAppState extends State<MyApp> {
    
      late WeighSerialProvider weighSerialProvider;
      
      @override
        void initState() {
          super.initState();
          weighSerialProvider = WeighSerialProvider();
        }
    
      @override
        void dispose() {
          weighSerialProvider.close();  //退出页面时断开连接
          super.dispose();
        }
    
      ...
      // 连接称重设备的方法如下:
      void _connectWeigh() {
        weighSerialProvider.findAndConnect().then(
          (success) {
            if (success) {
              //搜索到称重设备并连接成功
              weighSerialProvider.weighListener?.listen(
                (data) {
                  // 获取到称重数据,返回数据模型 *WeighResult*
                  log('称重数据 - ${data.toMap().toString()}');
                },
              );
            } else {
              Fluttertoast.showToast(msg: '称重设备连接失败');
            }
          },
          onError: (e) {
            Fluttertoast.showToast(msg: '称重设备连接失败(${e.toString()})');
          },
        );
      }
    }
    
    • 称重返回的模型数据 WeighResult 结构如下:
    class WeighResult {
      /// 重量  单位是kg
      final double weight;
    
      /// 结果是否稳定  稳定:true  不稳定: false
      final bool isStable;
    }
    

    支持扩展

    flutter_weigh_serial 库内根据设备的 vId、pId 内置了一组称重设备的白名单,配置在 WeighSerialConfig 中,如下所示:

    // vId - pId
    static Map<int, List<int>> weighDeviceList = {
        1027: [
          24577,
          24592,
          24593,
          24596,
          24597,
        ],
        4292: [
          60000,
          60016,
          60017,
        ],
        1659: [
          8963,
          9123,
          9139,
          9155,
          9171,
          9187,
          9203,
        ],
        6790: [
          21795,
          29987,
          21972,
        ],
        9025: [],
        5824: [1155],
        1003: [8260],
        7855: [4],
        3368: [516],
        1155: [22336],
        11914: [
          5,
          10,
        ],
      };
    
    • 当连接设备的 vId、pId 包含在上述组合内时,即认为是称重设备,可以连接并读取数据。

    • 支持使用者自行扩展未在配置中的称重设备,示例如下:

    //示例,扩展 vId 为 1111, pId 为 1234,1235 的称重设备
    WeighSerialConfig.weighDeviceList[1111] = [1234,1235];
    

    demo - 效果示例

    具体的 demo 实现可参考: https://github.com/liyufengrex/flutter_weigh_serial

    相关文章

      网友评论

          本文标题:flutter 应用实现:电子秤连接、数据获取(适配Androi

          本文链接:https://www.haomeiwen.com/subject/wikhvdtx.html