一种基于哈希数组的无线定位信号缓存传输方法及系统技术方案

技术编号:37456235 阅读:12 留言:0更新日期:2023-05-06 09:28
本发明专利技术涉及缓存传输技术领域,提供了一种基于哈希数组的无线定位信号缓存传输方法,包括:数据采集中断线程:读写器接收标签信号,将标签数据存放到中断数据队列尾部;数据缓存线程:依次读取中断数据队列中的标签数据,当标签在哈希数组中未存储数据时,将标签数据存储到哈希数组中的空闲位置,否则更新标签数据到哈希数组中相同位置;数据传输线程:当读写器接收到定位服务器的数据传输命令之后,按顺序将哈希数组存储的标签数据拷贝到数据传输缓冲区中,启动数据传输,将数据传输缓冲区中的标签数据传输给定位服务器。基于哈希数组在读写器缓存标签信号时,只保留每个标签最新一次无线信号,在读写器资源受限的情况下减少内存占用和带宽。占用和带宽。占用和带宽。

【技术实现步骤摘要】
一种基于哈希数组的无线定位信号缓存传输方法及系统


[0001]本专利技术涉及缓存传输的
,尤其涉及一种基于哈希数组的无线定位信号缓存传输方法及系统。

技术介绍

[0002]使用有源RFID、蓝牙、WiFi、LoRa、手机基站等无线通信技术,可以对学生、医院仪器、维修设备、托盘、叉车等对象进行无线定位。最基本的无线定位系统包含标签、读写器和定位服务器三种设备。其中,标签可佩戴或固定在需定位的对象上,读写器分散安装在场所各处,并建立读写器与定位服务器的通信链路。
[0003]当前最经济使用的无线定位系统都基于无线信号强度进行定位。其原理是:标签上有无线收发器,可以周期性发送无线定位信号,这些信号被周围的读写器收到后,将通过通信链路转发给定位服务器,并且附加上接收信息,比如该信号的无线信号接收强度(RSSI)、到达时间差(TODA,也即空中传输时间)、到达角(AOA);定位服务器汇总一个时间窗口内一个标签被多个读写器读取到的所有无线信号,然后根据三角距离定位、RSSI指纹等定位算法,推测出该标签的位置。其中,无线收发器给出的RSSI值都经过了换算,是8位正整数,与标签

读写器之间的距离,有近似的线性关系,基于RSSI的三角距离定位就依靠这个原理。
[0004]但是,在校园中的学生定位、医院中的资产定位、仓储中的托盘、叉车定位等无线定位应用场景中,读写器的硬件成本需要尽量低,所以一般都采用MCU单片机和485等低成本通信接口,其计算速度(或者说主频)、内存(即SRAM)、通信带宽都相当有限。然而,在这些场景中,在一秒钟内,读写器往往平均可以读取到1000个标签信号,折算成带宽至少32Kbps。读写器和定位服务器的通信距离一般都有几十米,波特率小于20Kbps,无法传输所有标签信号,必须进行缓存和数据压缩。但是,如果缓存时间过长,就需要占用过多的内存,同时还会造成定位实时性下降。如果压缩算法太复杂,就会导致计算来不及或内存不够,可能不得不丢弃标签信号,导致定位误差增加,甚至遗漏。

技术实现思路

[0005]针对上述问题,本专利技术的目的在于提供一种基于哈希数组的无线定位信号缓存传输方法及系统,基于哈希数组在读写器缓存标签信号时,只保留每个标签最新一次无线信号,在读写器资源受限的情况下减少内存占用和带宽。
[0006]本专利技术的上述专利技术目的是通过以下技术方案得以实现的:一种基于哈希数组的无线定位信号缓存传输方法,包括并发执行的以下线程:数据采集中断线程:读写器接收标签发送的标签信号,将所述标签信号对应的标签数据存放到中断数据队列尾部;数据缓存线程:依次读取所述中断数据队列中的所述标签数据,当所述标签数据对应的所述标签在哈希数组中未存储数据时,将所述标签数据存储到所述哈希数组中的空
闲位置,否则更新所述标签数据到所述哈希数组中相同位置;数据传输线程:当所述读写器接收到定位服务器的数据传输命令之后,按顺序将所述哈希数组存储的所述标签数据拷贝到数据传输缓冲区中,启动数据传输,将所述数据传输缓冲区中的所述标签数据传输给所述定位服务器。
[0007]进一步地,在所述数据采集中断线程中,所述读写器接收所述标签发送的所述标签信号,将所述标签信号对应的所述标签数据存放到所述中断数据队列尾部,具体为:S11:当所述读写器上的无线收发器接收到所述标签发送的新的所述标签信号之后,通过中断通知所述读写器上的微控制器MCU;S12:所述微控制器MCU响应中断,从所述无线收发器读取所述标签数据存放到所述中断数据队列尾部。
[0008]进一步地,在执行所述数据缓存线程之前,还包括:建立所述哈希数组,具体为:获取需要缓存的所述标签数据的最大记录数,取大于等于所述最大记录数的最小质数作为所述哈希数组的尺寸,并将所述哈希数组的尺寸记录为S;在所述读写器的初始化阶段,将所述哈希数组中的所有记录都标记为空闲;定义所述哈希数组的传输起始位置T的初始值为0,定义所述哈希数组的互斥变量M的初始值为0。
[0009]进一步地,在所述数据缓存线程中,依次读取所述中断数据队列中的所述标签数据,当所述标签数据对应的所述标签在所述哈希数组中未存储数据时,将所述标签数据存储到所述哈希数组中的空闲位置,否则更新所述标签数据到所述哈希数组中相同位置,具体为:S21:从所述中断数据队列头部获取一条所述标签数据,将所述标签数据对应的标签编号记为I,I为正整数,当所述中断数据队列中的所述标签数据已取完时,所述数据缓存线程结束;S22:计算所述标签编号在所述哈希数组中的位置L,L=I%S,其中%为取余计算,S为所述哈希数组的尺寸,并定义局部变量c=0;S23:当位置L为空闲,将所述标签标号I以及附加数据保存到位置L,跳转步骤S21,当位置L不空闲,跳转步骤S24;S24:检查位置L存储的所述标签编号是否为I,若是,更新所述附加数据到位置I,跳转到步骤S21,否则,c=c+1,L=(I+c)%S,跳转到步骤S23。
[0010]进一步地,在所述数据缓存线程中,通过所述互斥变量M避免所述哈希数组被两个线程同时访问,具体为:在执行步骤S23之前,检查所述互斥变量M的值;当M=1时,持续等待M变为0;当M=0时,设置M=1并执行步骤S23,直至将所述标签标号I以及附加数据保存到位置L或当位置L存储的所述标签编号已为I更新所述附加数据到位置I时,将M=0。
[0011]进一步地,在所述数据传输线程中,按顺序将所述哈希数组存储的所述标签数据拷贝到所述数据传输缓冲区中,启动数据传输,将所述数据传输缓冲区中的所述标签数据传输给所述定位服务器,具体为:S31:当所述读写器接收到所述定位服务器的数据传输命令之后,设置t=T;
S32:检查所述哈希数组中的位置t是否存储有所述标签数据,若有,拷贝位置t的所述标签数据到所述数据传输缓冲区,并将位置t设置为空闲;S33:t=t+1,若t>S,设置t=0;S34:当所述数据传输缓冲区还有剩余空间,且T不等于t,调整到步骤S32,否则跳转步骤S35;S35:将T=t,启动数据传输,将所述数据传输缓冲区中的所述标签数据传输给所述定位服务器,所述数据传输线程结束。
[0012]进一步地,在所述数据传输线程中中,通过所述互斥变量M避免所述哈希数组被两个线程同时访问,具体为:在执行步骤S32之前,检查所述互斥变量M的值;当M=1时,持续等待M变为0;当M=0时,设置M=1并执行步骤S32,步骤S32执行完后,将M=0。
[0013]一种用于执行如上述的基于哈希数组的无线定位信号缓存传输方法的基于哈希数组的无线定位信号缓存传输系统,包括:数据采集模块,用于执行数据采集中断线程,当读写器接收标签发送的标签信号,将所述标签信号对应的标签数据存放到中断数据队列尾部;数据缓存模块,用于执行数据缓存线程,依次读取所述中断数据队列中的所述标签数据,当所述标签数据对应的所述标签在哈希数组中未存储数据时,将所述标签数据存储到所述哈希数组中的空闲位置,否则更新所述标签数据到所述哈希数组中相同位置;本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于哈希数组的无线定位信号缓存传输方法,其特征在于,包括并发执行的以下线程:数据采集中断线程:读写器接收标签发送的标签信号,将所述标签信号对应的标签数据存放到中断数据队列尾部;数据缓存线程:依次读取所述中断数据队列中的所述标签数据,当所述标签数据对应的所述标签在哈希数组中未存储数据时,将所述标签数据存储到所述哈希数组中的空闲位置,否则更新所述标签数据到所述哈希数组中相同位置;数据传输线程:当所述读写器接收到定位服务器的数据传输命令之后,按顺序将所述哈希数组存储的所述标签数据拷贝到数据传输缓冲区中,启动数据传输,将所述数据传输缓冲区中的所述标签数据传输给所述定位服务器。2.根据权利要求1所述的基于哈希数组的无线定位信号缓存传输方法,其特征在于,在所述数据采集中断线程中,所述读写器接收所述标签发送的所述标签信号,将所述标签信号对应的所述标签数据存放到所述中断数据队列尾部,具体为:S11:当所述读写器上的无线收发器接收到所述标签发送的新的所述标签信号之后,通过中断通知所述读写器上的微控制器MCU;S12:所述微控制器MCU响应中断,从所述无线收发器读取所述标签数据存放到所述中断数据队列尾部。3.根据权利要求1所述的基于哈希数组的无线定位信号缓存传输方法,其特征在于,在执行所述数据缓存线程之前,还包括:建立所述哈希数组,具体为:获取需要缓存的所述标签数据的最大记录数,取大于等于所述最大记录数的最小质数作为所述哈希数组的尺寸,并将所述哈希数组的尺寸记录为S;在所述读写器的初始化阶段,将所述哈希数组中的所有记录都标记为空闲;定义所述哈希数组的传输起始位置T的初始值为0,定义所述哈希数组的互斥变量M的初始值为0。4.根据权利要求3所述的基于哈希数组的无线定位信号缓存传输方法,其特征在于,在所述数据缓存线程中,依次读取所述中断数据队列中的所述标签数据,当所述标签数据对应的所述标签在所述哈希数组中未存储数据时,将所述标签数据存储到所述哈希数组中的空闲位置,否则更新所述标签数据到所述哈希数组中相同位置,具体为:S21:从所述中断数据队列头部获取一条所述标签数据,将所述标签数据对应的标签编号记为I,I为正整数,当所述中断数据队列中的所述标签数据已取完时,所述数据缓存线程结束;S22:计算所述标签编号在所述哈希数组中的位置L,L=I%S,其中%为取余计算,S为所述哈希数组的尺寸,并定义局部变量c=0;S23:当位置L为空闲,将所述标签标号I以及附加数据保存到位置L,跳转步骤S21,当位置L不空闲,跳转步骤S24;S24:检查位置L存储的所述标签编号是否为I,若是,更新所述附加数据到位置I,跳转到步骤S21,否则,c=c+1,L=(I+c)%S,跳转到步骤S23。5.根据权利要求4所述的基于哈希数组的无线定位信号缓存传输方法,其特征在于,在所述数据缓存线程中,通过所述...

【专利技术属性】
技术研发人员:董雁适千应庆张婧樊玉书陈遵义
申请(专利权)人:至控湖州智能系统有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1