一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种动态补偿扫描超高频RFID的方法与流程

2022-06-11 23:06:42 来源:中国专利 TAG:

一种动态补偿扫描超高频rfid的方法
技术领域
1.本发明属于物联网技术应用领域,涉及一种扫描rfid的方法,尤其涉及一种动态补偿扫描超高频rfid的方法。


背景技术:

2.rfid射频识别是一种非接触式的自动识别技术,通过无线射频方式进行非接触双向数据通信,利用无线射频方式对电子标签或射频卡片进行读写,从而达到识别目标和数据交换的目的。
3.完整的rfid系统由读写器(reader)、电子标签(tag)和数据管理系统三部分组成。其工作原理是阅读器发射一特定频率的无线电波能量,用以驱动电路将内部的数据送出,此时阅读器便依序接收解读数据,送给应用程序做相应的处理。
4.rfid射频识别具备以下优势:
5.1、rfid技术依靠电磁波,并不需要连接双方的物理接触。
6.2、rfid系统的读写速度极快。高频段的rfid阅读器可以同时识别、读取多个标签的内容。
7.3、每个rfid标签都是独一无二的,通过rfid标签与产品的一一对应关系,可以清楚的跟踪每一件产品的后续流通情况。
8.4、rfid标签结构简单,识别速率高、所需读取设备简单。
9.基于以上特性rfid射频识别被广泛应用于物流、交通、信息统计等领域中。
10.针对超高频rfid标签的读取,通常的应用场景为批量标签的读取,当应用程序从阅读器中获取到读取的数据,然后根据获取到的数据和应用程序数据库中存储的数据进行比对,然后进行标签的追踪与比对。
11.目前现有的超高频标签的获取具备一下缺点:
12.1、阅读器返回连续数据时,由于一次性接收的数据缓冲区有限,这样便造成数据帧的断裂。当数据处理未考虑该种情况时,便会造成数据丢失。
13.2、阅读器性能、读写频率、标签摆放位置和方式均会影响标签读取,经常无法得到完整的样本数据,使得返回样本数据失去可靠性。
14.3、针对可能丢失的情况直接多次扫描合并处理结果,造成时间固定,引起不必要的时间浪费。


技术实现要素:

15.针对现有技术的技术问题,本发明提供了一种动态补偿扫描超高频rfid的方法:
16.本方法在应用层定义了一个解析缓冲区,当接收到阅读器返回的数据时,合并解析缓冲区和接收数据,然后根据预定义的协议解析数据帧;同时将解析到的数据帧和应用层中存储的数据执行比对,根据比较数据是否完整来确定是否需要进行补偿扫描。
17.本发明所提供的方法包括以下步骤:
18.s100:创建连接,包括以下步骤:
19.s101:创建公共缓冲区集合,用以存储上次数据解析中未解析出完整帧的数据;
20.s102:应用层和超高频rf id模块建立连接,连接的方式包括tcp连接/ 串口连接;
21.s103:通过api开启连接通道的输入流及输出流;
22.s104:为输入流开启独立线程,提供数据循环读取接口;
23.s105:为输出流开启独立线程,提供数据交互接口;
24.s200:设置参数的初值:包括设置扫描阈值时间、设置数据帧集合、设置样本数据帧集合、设置扫描次数阈值,并设置扫描次数的初始值为0;
25.s300:扫描超高频rf id;
26.s400:解析数据并动态补偿;
27.s500:比较数据并判断是否结束扫描,若是,执行步骤s600,否则,执行步骤s300;
28.s600:输出所述数据帧集合。
29.优选地,步骤s300包括以下步骤:
30.s301:根据rf id射频模块的协议,通过数据交互接口发送扫描指令,记录发送起始时间、扫描标志,并设置扫描标志及解析标志均为false;
31.s302:判断扫描次数是否为0,若是,执行步骤s303,否则,执行步骤s304:
32.s303:数据帧集合置为空;
33.s304:获取当前时间,判断当前时间减发送起始时间是否大于扫描阈值时间,若是,执行步骤s305,否则,休眠20ms,执行步骤s304;
34.s305:通过数据交互接口发送停止扫描指令,结束扫描超高频rf id,并置扫描标志为true。
35.优选地,步骤s400包括以下步骤:
36.s401:判断数据循环读取接口是否收到返回数据,若是,执行步骤s402,否则,执行步骤s403;
37.s402:将所述返回数据记录为第一数据,执行步骤s404;
38.s403:休眠10毫秒;
39.s404:将第一数据尾加至公共缓冲区集合;
40.s405:根据协议格式,解析公共缓冲区集合的数据帧;
41.s406:判断当前扫描标志是否为true,若是,执行步骤s407,否则,执行步骤s401;
42.s407:设置解析标志为true。
43.优选地,步骤s405包括以下步骤:
44.s4051:设置偏移地址的初值为0,获取当前公共缓冲区集合的字节长度;
45.s4052:判断偏移地址 1是否大于当前公共缓冲区集合的字节长度,若是,执行步骤s406,否则,执行步骤s4053;
46.s4053:获取当前偏移地址至偏移地址 1的字节内容,作为比较数据帧头,判断比较数据帧头是否等于数据帧头,若是,执行步骤s405e,否则,执行步骤s4054;
47.s4054:判断偏移地址 2是否大于当前公共缓冲区集合的字节长度,若是,执行步骤s405e,否则,执行步骤s4055;
48.s4055:获取当前偏移地址 1至偏移地址 2的字节内容,作为比较数据帧的字节长
度;
49.s4056:判断偏移地址 2 比较数据帧的字节长度之和是否大于当前公共缓冲区集合的字节长度,若是,执行步骤s405e,否则,执行步骤s4057;
50.s4057:获取偏移地址 2至偏移地址 2 比较数据帧的字节长度的字节内容,作为比较数据帧;
51.s4058:判断偏移地址 2 比较数据帧的字节长度 1之和是否大于当前公共缓冲区集合的字节长度,若是,执行步骤s405e,否则,执行步骤s4059;
52.s4059:获取偏移地址 2 比较数据帧的字节长度至偏移地址 2 比较数据帧的字节长度 1的字节内容,作为比较数据帧尾,判断比较数据帧尾是否等于数据帧尾,若是,执行步骤s405a,否则,执行步骤s405e;
53.s405a:设置第一比较数据帧,其中,帧头为比较数据帧头,字节长度为比较数据帧的字节长度,数据为比较数据帧,帧尾为比较数据帧尾;
54.s405b:判断数据帧集合是否包含第一比较数据帧,若是,执行步骤s405d,否则,执行步骤s405c;
55.s405c:将当前第一比较数据帧尾加至数据帧集合,实现动态补偿;
56.s405d:将当前偏移地址赋值为偏移地址 3 比较数据帧的字节长度,执行步骤s4052;
57.s405e:将当前偏移地址赋值为偏移地址 1,执行步骤s4052。
58.优选地,步骤s405b包括以下步骤:
59.s405b1:设置第一比较标志的初值为false;
60.s405b2:遍历数据帧集合并判断是否存在元素,若是,执行步骤s405b3,否则,执行步骤s405d;
61.s405b3:获取当前元素的帧头;
62.s405b4:判断当前元素的帧头是否等于比较数据帧头,若是,执行步骤 s405b5,否则,执行步骤s405ba;
63.s405b5:获取当前元素的字节长度;
64.s405b6:判断当前元素的字节长度是否等于比较数据帧的字节长度,若是,执行步骤s405b7,否则,执行步骤s405ba;
65.s405b7:获取当前元素的数据帧;
66.s405b8:判断当前元素的数据帧是否等于比较数据帧,若是,执行步骤 s405b9,否则,执行步骤s405ba;
67.s405b9:帧头、字节长度及数据帧均相同,表示找到相同数据帧,设置第一比较标志的初值为true;
68.s405ba:判断当前第一比较标志是否为true,若是,执行步骤s405d,否则,执行步骤s405b2。
69.优选地,所述步骤s500包括以下步骤:
70.s501:判断解析标志是否为true,若是,执行步骤s502,否则,执行步骤s501;
71.s502:设置第二比较标志的初值为true,将样本数据帧集合与数据帧集合比较,并根据比较结果更改第二比较标志的值;
72.s503:判断第二比较标志的值是否为true,若是,执行步骤s504,否则,执行步骤s505;
73.s504:扫描次数=扫描次数阈值,执行步骤s506;
74.s505:扫描次数=扫描次数 1;
75.s506:判断当前扫描次数是否等于扫描次数阈值,若是,执行步骤s507,否则,执行步骤s300;
76.s507:结束扫描并输出数据帧集合。
77.优选地,所述步骤s502包括以下步骤:
78.s5021:遍历样本数据帧集合并判断是否存在元素,若是,执行步骤s5022,否则,执行步骤s503;
79.s5022:记录当前元素为样本元素;
80.s5023:判断数据帧集合是否包含样本元素,包括以下步骤:
81.s50231:设置第三比较标志的初值为false;
82.s50232:遍历数据帧集合并判断是否存在元素,若是,执行步骤s50233,否则,执行步骤s5023b;
83.s50233:记录当前元素为帧数据并获取帧数据头;
84.s50234:判断帧数据头是否等于比较数据帧头,若是,执行步骤s50235,否则,执行步骤s5023a;
85.s50235:获取帧数据的字节长度;
86.s50236:判断帧数据的字节长度是否等于比较数据帧的字节长度,若是,执行步骤s50237,否则,执行步骤s5023a;
87.s50237:获取帧数据中的数据;
88.s50238:判断当前所获取帧数据中的数据是否等于比较数据帧,若是,执行步骤s50239,否则,执行步骤s5023a;
89.s50239:帧头、字节长度及数据均相同,表示找到相同数据帧,设置第三比较标志的初值为true;
90.s5023a:判断第三比较标志是否为true,若是,执行步骤s5021,否则,执行步骤s50232;
91.s5023b:遍历完成,仍然未匹配到数据,设置第二比较标志为false。
92.本发明具有以下有益效果:
93.1、针对帧断裂的情况做处理,保证数据的完整性。
94.2、补偿扫描保证数据的完整性。
95.3、动态补偿扫描次数,尽可能的节约扫描时间。
附图说明
96.图1为本发明所提供的方法的总流程图;
97.图2为本发明所提供的方法中解析公共缓冲区集合的数据帧的具体流程图;
98.图3为本发明所提供的方法中判断数据帧集合是否包含第一比较数据帧的具体流程图;
99.图4为本发明所提供的方法中将样本数据帧集合与数据帧集合比较的具体流程图。
具体实施方式
100.众所周知,数据帧的格式具备多样性,基础构成由数据帧头、数据长度、数据、数据帧尾组成。
101.图1示出了本发明所提供的方法的总流程图。如图1所示,本发明的方法包括以下步骤:
102.s100:创建连接,包括以下步骤:
103.s101:创建公共缓冲区集合,用以存储上次数据解析中未解析出完整帧的数据;
104.s102:应用层和超高频rf id模块建立连接,连接的方式包括tcp连接/ 串口连接;
105.s103:通过api开启连接通道的输入流及输出流;
106.s104:为输入流开启独立线程,提供数据循环读取接口;
107.s105:为输出流开启独立线程,提供数据交互接口;
108.s200:设置参数的初值:包括设置扫描阈值时间、设置数据帧集合、设置样本数据帧集合、设置扫描次数阈值,并设置扫描次数的初始值为0;
109.s300:扫描超高频rf id;步骤s300包括以下步骤:
110.s301:根据rf id射频模块的协议,通过数据交互接口发送扫描指令,记录发送起始时间、扫描标志,并设置扫描标志及解析标志均为false;
111.s302:判断扫描次数是否为0,若是,执行步骤s303,否则,执行步骤s304:
112.s303:数据帧集合置为空;
113.s304:获取当前时间,判断当前时间减发送起始时间是否大于扫描阈值时间,若是,执行步骤s305,否则,休眠20ms,执行步骤s304;
114.s305:通过数据交互接口发送停止扫描指令,结束扫描超高频rf id,并置扫描标志为true。
115.s400:解析数据并动态补偿;步骤s400包括以下步骤:
116.s401:判断数据循环读取接口是否收到返回数据,若是,执行步骤s402,否则,执行步骤s403;
117.s402:将返回数据记录为第一数据,执行步骤s404;
118.s403:休眠10毫秒;
119.s404:将第一数据尾加至公共缓冲区集合;
120.s405:根据协议格式,解析公共缓冲区集合的数据帧;
121.图2示出了本发明所提供的方法中解析公共缓冲区集合的数据帧的具体流程图。如图2所示,步骤s405包括以下步骤:
122.s4051:设置偏移地址的初值为0,获取当前公共缓冲区集合的字节长度;
123.s4052:判断偏移地址 1是否大于当前公共缓冲区集合的字节长度,若是,执行步骤s406,否则,执行步骤s4053;
124.s4053:获取当前偏移地址至偏移地址 1的字节内容,作为比较数据帧头,判断比较数据帧头是否等于数据帧头,若是,执行步骤s405e,否则,执行步骤s4054;
125.s4054:判断偏移地址 2是否大于当前公共缓冲区集合的字节长度,若是,执行步骤s405e,否则,执行步骤s4055;
126.s4055:获取当前偏移地址 1至偏移地址 2的字节内容,作为比较数据帧的字节长度;
127.s4056:判断偏移地址 2 比较数据帧的字节长度之和是否大于当前公共缓冲区集合的字节长度,若是,执行步骤s405e,否则,执行步骤s4057;
128.s4057:获取偏移地址 2至偏移地址 2 比较数据帧的字节长度的字节内容,作为比较数据帧;
129.s4058:判断偏移地址 2 比较数据帧的字节长度 1之和是否大于当前公共缓冲区集合的字节长度,若是,执行步骤s405e,否则,执行步骤s4059;
130.s4059:获取偏移地址 2 比较数据帧的字节长度至偏移地址 2 比较数据帧的字节长度 1的字节内容,作为比较数据帧尾,判断比较数据帧尾是否等于数据帧尾,若是,执行步骤s405a,否则,执行步骤s405e;
131.s405a:设置第一比较数据帧,其中,帧头为比较数据帧头,字节长度为比较数据帧的字节长度,数据为比较数据帧,帧尾为比较数据帧尾;
132.s405b:判断数据帧集合是否包含第一比较数据帧,若是,执行步骤s405d,否则,执行步骤s405c;
133.图3示出了本发明所提供的方法中判断数据帧集合是否包含第一比较数据帧的具体流程图。如图3所示,步骤s405b包括以下步骤:
134.s405b1:设置第一比较标志的初值为false;
135.s405b2:遍历数据帧集合并判断是否存在元素,若是,执行步骤s405b3,否则,执行步骤s405d;
136.s405b3:获取当前元素的帧头;
137.s405b4:判断当前元素的帧头是否等于比较数据帧头,若是,执行步骤 s405b5,否则,执行步骤s405ba;
138.s405b5:获取当前元素的字节长度;
139.s405b6:判断当前元素的字节长度是否等于比较数据帧的字节长度,若是,执行步骤s405b7,否则,执行步骤s405ba;
140.s405b7:获取当前元素的数据帧;
141.s405b8:判断当前元素的数据帧是否等于比较数据帧,若是,执行步骤 s405b9,否则,执行步骤s405ba;
142.s405b9:帧头、字节长度及数据帧均相同,表示找到相同数据帧,设置第一比较标志的初值为true;
143.s405ba:判断当前第一比较标志是否为true,若是,执行步骤s405d,否则,执行步骤s405b2。
144.s405c:将当前第一比较数据帧尾加至数据帧集合,实现动态补偿;
145.s405d:将当前偏移地址赋值为偏移地址 3 比较数据帧的字节长度,执行步骤s4052;
146.s405e:将当前偏移地址赋值为偏移地址 1,执行步骤s4052。
147.s406:判断当前扫描标志是否为true,若是,执行步骤s407,否则,执行步骤s401;
148.s407:设置解析标志为true。
149.s500:比较数据并判断是否结束扫描,若是,执行步骤s600,否则,执行步骤s300;步骤s500包括以下步骤:
150.s501:判断解析标志是否为true,若是,执行步骤s502,否则,执行步骤s501;
151.s502:设置第二比较标志的初值为true,将样本数据帧集合与数据帧集合比较,并根据比较结果更改第二比较标志的值;
152.图4示出了本发明所提供的方法中将样本数据帧集合与数据帧集合比较的具体流程图。如图4所示,步骤s502包括以下步骤:
153.s5021:遍历样本数据帧集合并判断是否存在元素,若是,执行步骤s5022,否则,执行步骤s503;
154.s5022:记录当前元素为样本元素;
155.s5023:判断数据帧集合是否包含样本元素,包括以下步骤:
156.s50231:设置第三比较标志的初值为false;
157.s50232:遍历数据帧集合并判断是否存在元素,若是,执行步骤s50233,否则,执行步骤s5023b;
158.s50233:记录当前元素为帧数据并获取帧数据头;
159.s50234:判断帧数据头是否等于比较数据帧头,若是,执行步骤s50235,否则,执行步骤s5023a;
160.s50235:获取帧数据的字节长度;
161.s50236:判断帧数据的字节长度是否等于比较数据帧的字节长度,若是,执行步骤s50237,否则,执行步骤s5023a;
162.s50237:获取帧数据中的数据;
163.s50238:判断当前所获取帧数据中的数据是否等于比较数据帧,若是,执行步骤s50239,否则,执行步骤s5023a;
164.s50239:帧头、字节长度及数据均相同,表示找到相同数据帧,设置第三比较标志的初值为true;
165.s5023a:判断第三比较标志是否为true,若是,执行步骤s5021,否则,执行步骤s50232;
166.s5023b:遍历完成,仍然未匹配到数据,设置第二比较标志为false。
167.s503:判断第二比较标志的值是否为true,若是,执行步骤s504,否则,执行步骤s505;
168.s504:扫描次数=扫描次数阈值,执行步骤s506;
169.s505:扫描次数=扫描次数 1;
170.s506:判断当前扫描次数是否等于扫描次数阈值,若是,执行步骤s507,否则,执行步骤s300;
171.s507:结束扫描并输出数据帧集合。
172.s600:输出数据帧集合。
173.通过本发明所提供的上述方法,解决了现有技术中尚无一种动态补偿扫描超高频
rf id的方法的技术问题。
174.应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献