首页 > 代码库 > 射频识别技术漫谈(17)——射频卡中数据的存储形式

射频识别技术漫谈(17)——射频卡中数据的存储形式

无论什么样的智能卡,不管是接触式的还是非接触式的,存储数据都是一个必须具备的功能。即使是只有一个5字节卡号的ID64格式的卡片也不例外,只不过卡里面的内容在出厂时就被厂家写死了,用户只能读出而不能写入或改变其内容罢了。

    数据在存储介质中的存储格式往往和存储介质的容量有很大关系。容量小的存储器如E2PROM,一般以二进制的位(bit)或字节(byte)为单位;容量大的存储介质如硬盘、U盘,一般以文件的形式存储数据,文件有各种类型,文件大小只要别超过物理存储总量,几乎不受限制。

    射频卡通常面向特定的应用,容量较小,所以很少像硬盘或U盘那样数据以格式和大小都不受限制的文件存储,同时多数射频卡也不以位(bit)或字节(byte)为单位执行读写操作,可能是因为射频卡的数据通过无线传输,数据传输时要调制、解调,并且要加上帧头、帧尾、同步、校验,传的字节数太少了效率太低。

    射频卡中的数据一般以页(Page)、块(Block)或特定文件(File)的形式存储。

    页一般包括4个字节,比如Mifare Ultralight、Hitag-1、Hitag-2、Hitag-s、ICODE2都是以4个字节为1页,每次读写以4个字节(1页)为单位;

    块通常比页大,象Mifare1 S50、S70、FELICA就是以块为读写单位,一个数据块包含16字节;

    容量更大的射频卡中一般以文件的形式存储数据,例如Mifare Desfire以及多数CPU卡,当然这里所谓的文件其大小和类型都受到严格限制。

    智能卡(包括接触式卡和非接触式卡)中的文件一般有以下4种:

    1.透明二进制文件:这是最简单也是最基础的智能卡文件,文件大小可变,写入和读出的数据多少也可变,文件里的内容被看做透明的二进制数据流,没有特定的格式;

    2.线性定长记录文件:文件被分为若干个等长的区段,每个区段对应一个记录,读和写以整条的记录为单位,用记录号来识别区分每条记录;

    3.线性变长记录文件:文件也是以记录为单位进行组织,但各条记录的大小可以不同,读和写以整条的记录为单位,也是用记录号来识别区分每条记录。记录的长度虽然可变,但一旦写完,后来更新的时候新记录的长度必须和原来记录的长度相同;

    4.循环定长记录文件;文件以等长的记录来组织存储,与线性定长记录文件不同的是,文件里的记录数是固定的,所有记录写满了后,继续向文件里写记录将覆盖最早添加的记录。每条记录的记录号也不是固定的,最新写入记录的记录号总是1,上一次写入记录的记录号是2,依次类推。