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