Flutter插件uhf_c72_plugin_2的使用方法

Flutter插件uhf_c72_plugin_2的使用方法

uhf_c72_plugin_2

uhf_c72_plugin_2 是一个用于通过UHF C72读取UHF卡的更好的Flutter插件。

开始使用

导入库

import 'package:uhf_c72_plugin_2/uhf_c72_plugin.dart';

打开连接到UHF读取器

[@override](/user/override)
void initState() {
  super.initState();
  initRFID();
}

void initRFID() async {
  await UhfC72Plugin.connect;
}

检查读取器是否已连接

[@override](/user/override)
void initState() {
  super.initState();
  initRFID();
}

void initRFID() async {
  await UhfC72Plugin.connect;
  await UhfC72Plugin.isConnected;
}

单次开始读取数据

[@override](/user/override)
void initState() {
  super.initState();
  initRFID();
}

void initRFID() async {
  await UhfC72Plugin.connect;
  await UhfC72Plugin.startSingle;
}

连续开始读取数据

[@override](/user/override)
void initState() {
  super.initState();
  initRFID();
}

void initRFID() async {
  await UhfC72Plugin.connect;
  await UhfC72Plugin.startContinuous;
}

检查是否已经开始读取

[@override](/user/override)
void initState() {
  super.initState();
  initRFID();
}

void initRFID() async {
  await UhfC72Plugin.connect;
  await UhfC72Plugin.isStarted;
}

向UHF卡写入数据

[@override](/user/override)
void initState() {
  super.initState();
  initRFID();
}

void initRFID() async {
  await UhfC72Plugin.connect;
  await UhfC72Plugin.writeData(2, 2, "test");
}

从UHF卡读取数据

[@override](/user/override)
void initState() {
  super.initState();
  initRFID();
}

void initRFID() async {
  await UhfC72Plugin.connect;
  String data = await UhfC72Plugin.readData(2, 2);
  print(data);
}

清除UHF卡上的数据

[@override](/user/override)
void initState() {
  super.initState();
  initRFID();
}

void initRFID() async {
  await UhfC72Plugin.connect;
  await UhfC72Plugin.eraseData(2, 2);
}

停止读取

[@override](/user/override)
void initState() {
  super.initState();
  initRFID();
}

void initRFID() async {
  await UhfC72Plugin.connect;
  await UhfC72Plugin.stop;
}

关闭连接

[@override](/user/override)
void initState() {
  super.initState();
  initRFID();
}

void initRFID() async {
  await UhfC72Plugin.connect;
  await UhfC72Plugin.close;
}

清除读取器的缓存数据

[@override](/user/override)
void initState() {
  super.initState();
  initRFID();
}

void initRFID() async {
  await UhfC72Plugin.connect;
  await UhfC72Plugin.clearData;
}

检查标签是否为空

[@override](/user/override)
void initState() {
  super.initState();
  initRFID();
}

void initRFID() async {
  await UhfC72Plugin.connect;
  bool isEmptyTags = await UhfC72Plugin.isEmptyTags;
  print(isEmptyTags);
}

设置功率级别(5 dBm 至 30 dBm 使用字符串数字)

[@override](/user/override)
void initState() {
  super.initState();
  initRFID();
}

void initRFID() async {
  await UhfC72Plugin.connect;
  await UhfC72Plugin.setPowerLevel("26");
}

设置工作区域值

[@override](/user/override)
void initState() {
  super.initState();
  initRFID();
}

void initRFID() async {
  await UhfC72Plugin.connect;
  await UhfC72Plugin.setWorkArea("2");
}

监听标签状态

[@override](/user/override)
void initState() {
  super.initState();
  initRFID();
}

void initRFID() async {
  await UhfC72Plugin.connect;
  UhfC72Plugin.tagsStatusStream
      .receiveBroadcastStream()
      .listen(updateTags);
}

List<TagEpc> _data = [];
void updateTags(dynamic result) {
  setState(() {
    _data = TagEpc.parseTags(result);
  });
}

示例代码

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:uhf_c72_plugin_2/uhf_c72_plugin.dart';
import 'package:uhf_c72_plugin_2/tag_epc.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';
  bool _isStarted = false;
  bool _isEmptyTags = false;
  bool _isConnected = false;
  TextEditingController powerLevelController =
      TextEditingController(text: '26');
  TextEditingController workAreaController = TextEditingController(text: '1');

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 平台消息是异步的,因此我们在异步方法中初始化。
  Future<void> initPlatformState() async {
    String platformVersion;
    // 平台消息可能会失败,因此我们使用 try/catch PlatformException。
    try {
      platformVersion = await UhfC72Plugin.platformVersion;
    } on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }
    UhfC72Plugin.connectedStatusStream
        .receiveBroadcastStream()
        .listen(updateIsConnected);
    UhfC72Plugin.tagsStatusStream.receiveBroadcastStream().listen(updateTags);
    await UhfC72Plugin.connect;
    await UhfC72Plugin.setWorkArea('2');
    await UhfC72Plugin.setPowerLevel('30');
    // 如果在异步平台消息还在飞行时小部件从树中移除,我们希望丢弃回复而不是调用
    // setState 来更新我们的不存在的外观。
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
    });
  }

  List<String> _logs = [];
  void log(String msg) {
    setState(() {
      _logs.add(msg);
    });
  }

  List<TagEpc> _data = [];
  void updateTags(dynamic result) {
    log('update tags');
    setState(() {
      _data = TagEpc.parseTags(result);
    });
  }

  void updateIsConnected(dynamic isConnected) {
    log('connected $isConnected');
    //setState(() {
    _isConnected = isConnected;
    //});
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('UHF PROGAZE'),
        ),
        body: SingleChildScrollView(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.start,
            children: <Widget>[
              Card(
                child: Padding(
                  padding: const EdgeInsets.all(3.0),
                  child: Image.asset(
                    'assets/logo.png',
                    width: double.infinity,
                    height: 80,
                    fit: BoxFit.contain,
                  ),
                ),
              ),
              Row(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                children: <Widget>[
                  RaisedButton(
                      shape: RoundedRectangleBorder(
                        borderRadius: BorderRadius.circular(18.0),
                      ),
                      color: Colors.blueAccent,
                      child: Text(
                        'Call Start Single',
                        style: TextStyle(color: Colors.white),
                      ),
                      onPressed: () async {
                        bool isStarted = await UhfC72Plugin.startSingle;
                        log('Start single $isStarted');
                      }),
                  RaisedButton(
                      shape: RoundedRectangleBorder(
                        borderRadius: BorderRadius.circular(18.0),
                      ),
                      color: Colors.blueAccent,
                      child: Text(
                        'Call Start Continuous Reading',
                        style: TextStyle(color: Colors.white),
                      ),
                      onPressed: () async {
                        bool isStarted = await UhfC72Plugin.startContinuous;
                        log('Start continuous $isStarted');
                      }),
                  RaisedButton(
                      shape: RoundedRectangleBorder(
                        borderRadius: BorderRadius.circular(18.0),
                      ),
                      color: Colors.blueAccent,
                      child: Text(
                        'Call Stop',
                        style: TextStyle(color: Colors.white),
                      ),
                      onPressed: () async {
                        bool isStopped = await UhfC72Plugin.stop;
                        log('Stop $isStopped');
                      }),
                  RaisedButton(
                      shape: RoundedRectangleBorder(
                        borderRadius: BorderRadius.circular(18.0),
                      ),
                      color: Colors.blueAccent,
                      child: Text(
                        'Call Clear Data',
                        style: TextStyle(color: Colors.white),
                      ),
                      onPressed: () async {
                        await UhfC72Plugin.clearData;
                        setState(() {
                          _data = [];
                        });
                      }),
                ],
              ),
              Row(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                children: <Widget>[
                  Container(
                    width: 100,
                    child: TextFormField(
                      controller: powerLevelController,
                      keyboardType: TextInputType.number,
                      textAlign: TextAlign.center,
                      decoration: InputDecoration(labelText: 'Power Level'),
                    ),
                  ),
                  RaisedButton(
                      shape: RoundedRectangleBorder(
                        borderRadius: BorderRadius.circular(18.0),
                      ),
                      color: Colors.green,
                      child: Text(
                        'Set Power Level',
                        style: TextStyle(color: Colors.white),
                      ),
                      onPressed: () async {
                        bool isSetPower = await UhfC72Plugin.setPowerLevel(
                            powerLevelController.text);
                        log('isSetPower $isSetPower');
                      }),
                ],
              ),
              Text(
                'powers {"5" : "30" dBm}',
                style: TextStyle(color: Colors.blue.shade800, fontSize: 12),
              ),
              Row(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                children: <Widget>[
                  Container(
                    width: 100,
                    child: TextFormField(
                      controller: workAreaController,
                      keyboardType: TextInputType.number,
                      textAlign: TextAlign.center,
                      decoration: InputDecoration(labelText: 'Work Area'),
                    ),
                  ),
                  RaisedButton(
                      shape: RoundedRectangleBorder(
                        borderRadius: BorderRadius.circular(18.0),
                      ),
                      color: Colors.green,
                      child: Text(
                        'Set Work Area',
                        style: TextStyle(color: Colors.white),
                      ),
                      onPressed: () async {
                        bool isSetWorkArea = await UhfC72Plugin.setWorkArea(
                            workAreaController.text);
                        log('isSetWorkArea $isSetWorkArea');
                      }),
                ],
              ),
              Text(
                'Work Area 1 China 920MHz - 2 China 840 - 3 ETSI 865\n4 Fixed 915 - 5 USA 902',
                style: TextStyle(color: Colors.blue.shade800, fontSize: 12),
              ),
              Container(
                width: double.infinity,
                height: 2,
                margin: EdgeInsets.symmetric(vertical: 8),
                color: Colors.blueAccent,
              ),
              ..._logs.map((String msg) => Card(
                    color: Colors.blue.shade50,
                    child: Container(
                      width: 330,
                      alignment: Alignment.center,
                      padding: const EdgeInsets.all(8.0),
                      child: Text(
                        'Log: $msg',
                        style: TextStyle(color: Colors.blue.shade800),
                      ),
                    ),
                  )),
              ..._data.map((TagEpc tag) => Card(
                    color: Colors.blue.shade50,
                    child: Container(
                      width: 330,
                      alignment: Alignment.center,
                      padding: const EdgeInsets.all(8.0),
                      child: Text(
                        'Tag ${tag.epc} Count:${tag.count}',
                        style: TextStyle(color: Colors.blue.shade800),
                      ),
                    ),
                  )),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter插件uhf_c72_plugin_2的使用方法的实战教程也可以访问 https://www.itying.com/category-92-b0.html

回到顶部