[0036] 下面结合附图和具体实施例对本发明作进一步说明。
[0037] 如图1所示,追踪定位系统,包括智能终端、云端服务器、信息装置,所述信息装置包括NFC芯片、装置壳体。所述NFC芯片的型号是NXP半导体公司的Ntag203,所述NFC芯片嵌入安装于装置壳体内,所述信息装置的NFC芯片将持有人身份识别信息按照转移存储编码方式固化保存,所述智能终端为支持NFC功能的手机,智能终端和信息装置之间通过近场无线通讯,智能终端是感应设备,信息装置是被动设备,智能终端与云端服务器之间通过3G无线网络进行数据双向传输。
[0038] 内嵌NFC芯片的信息装置,将需要编码的内容,也就是持有者身份识别信息进行转移存储编码后,通过专用设备写入到该信息装置。持有者身份识别信息包括装置识别码、登记时间、发放地点等信息。这些信息是以明码的方式存在,具体是一串字符串,由字母和数字组成。转移存储编码在PC机上完成,在PC机上装有上位机软件,上位机软件按照转移存储编码方法将目标数据转化成字符串,字符串即为编码后的数据。
[0039] 本发明编码实现过程为:首先将目标数据在PC机上进行转移存储编码,这一步骤是利用PC机上的上位机软件来实现的,接着将编码好的数据以NDEF(NFC数据交换格式)的格式通过NFC读写设备写入信息装置NFC芯片中。其中上位机软件是根据转移存储编码的算法和编程工具来实现,具体编程工具可以用C语言、C++、Java或者其它。
[0040] 在本发明使用过程中,对佩戴信息装置的移动物,用智能终端感应信息装置,获取信息装置内的编码信息,智能终端向云端服务器发送编码信息,云端服务器在接收到编码信息后将其解码,并返回信息装置持有者更详细的相关身份信息,例如对于人或宠物,可以返回其姓名、年龄、病史,或者监护人姓名、地址、联系方式等等;对于其他移动物品,例如车辆、工具、生产企业的大型工件、物流运输链中的货物等,可以反馈其型号、物主、来源、目的地等等有用信息。同时,云端服务器向智能终端发送地理位置请求信息,智能终端接收到来自云端服务器的地理位置请求信息后,向云端服务器发送当前地理位置信息。此种方式只对信息装置用智能终端感应一下,读取了信息装置的信息后,追踪定位的工作会自动完成,本发明系统工作的流程如图6所示。
[0041] 由于本发明采用全兼容芯片,NXP半导体公司的Ntag203,但是,标准全兼容NFC芯片容量通常只有100多字节,远远小于Mifare Classic卡的1K或4K字节。这就需要在使用全兼容芯片时采用更高效的编码方式。本发明追踪定位系统信息传输编码方法中转移存储编码方法包括:
[0042] 步骤101:计算持有人身份识别信息中每一个字符的出现频率,建立一个字符频率表,然后把所有字符及出现频率放入待处理字符集合R中,准备由下往上建立一棵编码二元树;
[0043] 步骤102:从待处理字符集合R中找出出现频率最小的两个字符做为编码二元树的两个子节点,并为这两个子节点建立一个父节点,此父节点频率为两个子节点的出现频率之和;再将这两个子节点从待处理字符集合R中移除,且把父节点频率加入待处理字符集合R中;在此过程中,出现频率小的节点始终排在编码二元树的左侧;
[0044] 步骤103:重复步骤102直到编码二元树建立完成,编码二元树的顶端是其根节点;
[0045] 步骤104:在步骤103中得到的编码二元树中,从根节点出发向下直至到达叶子节点,如果进入左侧子树,则在路径上填“0”,如果进入右侧子树,则在路径上填“1”,每个叶子节点代表了一个在持有人身份识别信息中出现的字符,每个字符的编码就是从根节点到该叶子节点的路径上从上到下出现的二进制编码;
[0046] 步骤105:使用在步骤104确定的字符编码,对持有人身份识别信息进行编码,得到持有人身份识别信息转移存储编码;
[0047] 步骤106:最后在转移存储编码写入一个文件头,文件头的格式定义如下:
[0048] 文件头:
[0049] 被编码的文本长度,即字符数;
[0050] 字符频率表。
[0051] 为了更好的说明此编码的操作步骤,下面是一组简单的英文单字(HENGIEKEHEKEHNKEGGKEGG)的编码演算过程:
[0052] 对目标字符串进行扫描,然后记录下每个字符出现的次数,扫描完成后,得到了每一个字符的频率表,根据频率由小排到大,目标符号与它出现的频率如图2所示;
[0053] 对KNGIHE相比,最小为I(1),次小为N(2),相加上去为3;
[0054] 3与剩下的KGHE相比,H(3)为最小,两者放在一起,相加上去为6;
[0055] 6与剩下的KGE相比,KG比它小,它却比H(3)大,因此,KG必须放在H的右边,KG相加为9,剩下的E(7)比6大,因此放在6的右边,相加为13;
[0056] 13再与右边的9相加为22,便是完成的树状图了,如图3所示;
[0057] 接下来在树状图的左边线上标上“0”,右边线上标上“1”,然后英文单字按照从二元树的根节点到每一个叶节点的路径“0”与“1”位元集合开始编码,上述6个符号对应的编码分别是:K=10、N=0001、G=11、I=0000、H=001、E=01;
[0058] 按此编码方法字符串的最终编码是00101000111000001100100101100100100011001111110011111;
[0059] 最后写入编码时的文件头,字符编码表如图4所示。
[0060] 需要说明的是,按照上述存储转移编码,符号串S的平均码长是: Pi表示字码出现的频率,Si表示对应的字码。L=(4*1+4*2+3*3+2*4+2*5+2*7)/22=2.41。另外原来的码元是6个,可以用3位二进制数编码,所以编码前的平均码长是3位,所以符号串S的转移存储编码的压缩率为:3/2.41=1.24。
[0061] 通过转移存储编码,使得编码之后的字符串平均长度降低,达到了节省存储空间的目的。其编码解码过程具体如图5所示。
[0062] 云端服务器在接收到编码信息后将其解码的方法包括:
[0063] 步骤201:读取文件头,建立字符频率表;
[0064] 步骤202:根据文件头建立一颗解码二元树,建立解码二元树的步骤如下:
[0065] (1)把字符频率表所有出现的字符作为一个单节点树,把这些单节点树组装成一个优先级队列;需要说明的是,在合并树的过程中,为了抽取最小频率的树,我们借助一种重要的数据结构:优先级队列(最小堆),它是一个维护一组元素的数据结构,在这里我们利用这一数据结构从这些元素中抽取最小的元素,和插入新元素,它实现了一个动态的元素集合,同时它插入和抽取数据元素速度非常快。优先级队列是最小堆的一种具体应用,优先级体现在频率较小的元素优先级较高,实现优先级队列使用的是数据结构中的堆。
[0066] (2)从该优先级队列中连续抽取两个出现频率最小的单节点树分别作为左子树及右子树,出现频率小的在左侧,将左子树及右子树合并成一棵单节点树,合并后的单节点树的频率为左子树及右子树频率之和,然后把合并后的单节点树重新插回优先级队列中;
[0067] (3)重复步骤(2),每次合并都使优先级队列的尺寸减小1,直至优先级队列中只剩下一棵单节点树为止,这样解码二元树被建立;
[0068] 步骤203:根据步骤202中建立的解码二元树对持有人身份识别信息转移存储编码逐个字符解码:
[0069] 遍历持有人身份识别信息转移存储编码的每一位,每一次都从解码二元树的根节点出发,遇到“0”时,进入节点的左子树,遇到“1”时,进入节点的右子树,直至到达叶子结点为止取得解码的字符,重复这一过程,直到所有字符被解码。
[0070] 除上述实施例外,本发明还可以有其他实施方式,凡采用等同替换或等效变换形成的技术方案,均落在本发明要求的保护范围内。