用于在非接触系统中进行rf卡检测的方法

文档序号:7635967阅读:254来源:国知局
专利名称:用于在非接触系统中进行rf卡检测的方法
技术领域
本发明涉及检测RF读卡器场中的RF卡。 背景技木
射频识别("RFID")正变得越来越普遍。RFID使用无线射频通信来识别并采集 关于对象的信息。在对象被识别之后,可通过无线方式创建或更新关于所述对象的信 息。RFID可用于广泛的应用范围,包括身份卡。
RFID系统由一个或多个读卡器及转发器一与读卡器通信的非接触式存储器标签 一组成。转发器可安装在身份卡上。转发器包含使卡能够被识别的数据,并由与射频 通信块相关联的存储器构成。读卡器连接至天线,所述天线自转发器接收和向转发器 发送射频信号。在图1中,现有技术的读卡器68可与其RF场66中的所有卡70、 72、 74和76通信。读卡器68不能与其场66之外的卡78进行通信。
当读卡器与其场中的转换器或卡进行通信时,如果有不止一个转换器或卡同时尝
试答复所述读卡器,则偶尔会发生冲突。当发生冲突时,读卡器不能从任意一卡接收 到清楚的响应。
可采用防冲突机制来防止有不止一个卡同时发送信息。概率性防冲突机制可重复 提示卡在单个时隙内答复。然而,使用这种方法,直到正在响应的卡移开所述场,或 者离开其可响应来自读卡器请求的状态,才能检测到多个卡的存在。当读卡器将发出 轮询命令来提示来自已经选择响应时隙的卡的响应时,可采用时隙防冲突方法。
将需要一种方法,其能够记录出现在读卡器场中的卡的列表,以在处理一卡之前 知晓存在哪些卡。将进一步需要知晓卡所处的状态,并能够改变卡的状态。

发明内容
本发明提供一种识别RF读卡器场中的RF卡的方法和用于执行所述方法的处理 器可读媒体。所述方法包括从一组命令中发送一命令,所述一组命令包括第一轮询 命令,其用于请求来自场中处于防冲突状态的任何卡的响应,所述第一轮询命令还使 任何处于暂停状态中的卡转到防冲突状态;第二轮询命令,其用于请求来自场中处于 防冲突状态的任何卡的响应;及第三轮询命令,其用于请求来自场中处于防冲突状态 的任何卡的响应,所述防冲突状态已经选择了响应的具体时隙。当从正在响应的卡接 收到来自所发送命令的清楚响应时,保存响应,且所述正在响应的卡转到活动状态,
且如有可能,递增时隙数,并重复上述步骤直到接收不到清楚的响应为止。如果不能 递增时隙数,则返回一个值,以指示正在响应的卡的数量。当接收不到来自正在响应 的卡的清楚响应时,确定是否发生冲突,且如果已发生冲突,则重复上述步骤,直到 接收不到清楚的响应为止。如果未发生冲突,则返回一个值,以指示正在响应的卡的 数量。


图1是RF读卡器的方块图,其中如现有技术中所已知,在读卡器的RF场的内 外均有RF卡。
图2是如现有技术中所已知的RF卡的状态图。
图3是一实例性流程图,其显示如何根据本发明来识别RF卡。
图4是一实例性流程图,其显示根据本发明如何使RF卡转到活动状态。
具体实施例方式
用于下文所述实施例中的命令是用于ISO/IEC 14443标准中所述B型信令的命 令。然而,在其他实施例中可采用来自其他标准及/或其他信令方案的命令。相关的命 令包括Request B ("REQB"); Wake-Up B ("WUPB"); Slot Marker ("MARKER"); Proximity Card Selection Command ("ATTRIB");及Halt B ("HLTB")。
REQB向所有防冲突状态邻近卡("PICC"或"卡")发出轮询请求。当发送该命 令时,将时隙数"N"分配给PICC, PICC然后从1至"N"中选择随机值作为其时隙 分配。在PICC选择时隙值"1"时,将立即用Answer to R叫uest of Type B ("ATQB") 作出响应。重新分配"N"的值,并用每一REQB和WUPB (下文所述)命令选择新 的随机时隙。
WUPB类似于REQB,但具有一个区别。当发送WUPB命令时,使处于暂停状
态下的卡转到防冲突状态。
MARKER或SLOT MARKER是另一轮询命令,其为已经选择一特定时隙的卡发 出轮询请求。已经选择用于发送该命令的特定时隙的卡将用ATQB响应来响应该请求。
ATTRIB用于使PICC转到活动状态。选择一接收ATTRIB命令的卡并将其分配 至专用信道。需要将未使用的卡识别码("CID")值分配给卡,以使卡处于活动状态, 因为活动状态命令使用CID来引用所述卡。
HLTB命令使卡转到暂停状态。卡将保持处于暂停状态中,直到被复位或接收 WUPB命令。
在图2中,使现有技术的卡(未示出)复位,或进入RF场(IO)。卡可以处于下 述三个状态之一防冲突(12)、活动(14)、或暂停(16)。如果卡处于暂停状态(16)中, 则可由WUPB命令(24)来将其"唤醒",所述WUPB命令(24)会使卡转到防冲突状态(12)。在防冲突状态(12)中,卡将响应上文所述的以下命令WUPB、 REQB、 SLOT MARKER、 ATTRIB、及HLTB。从防冲突状态(12),可通过ATTRIB命令(18)使卡转 到活动状态(14)。在活动状态(14)中,命令因卡的类型而不同,不过在处于活动状态中 的卡上不会执行任何防冲突命令。可通过卡专用的反选命令(20)使卡从活动状态(14) 转到暂停状态(16)。还可通过HLTB命令(22)使卡从防冲突状态(12)转到暂停状态(16)。
可通过软件、硬件、或软件和硬件的组合来实施用于识别读卡器场中的RF卡的 本发明。当本发明的全部或一部分实施在软件中时,该软件可驻留在处理器可读存储 媒体(其实例包括但不限于磁光盘、光盘、或半导体存储媒体,例如软磁盘、硬磁盘、 CDROM、存储器IC等)上。处理器可读存储媒体存储能够将处理器(其与处理器可 读存储媒体通信)编程的代码,以执行实施本发明的步骤。
在图3中,当开始了用于识别读卡器场中的所有卡的算法时(方块80), isCardFound (是否在算法的上一迭代中发现卡的真或假指示符;当调用时,该值应为 真)和isCollisionFound (是否在算法的上一迭代中发现冲突的真或假指示符;当调用 时,该值应为真)均设定成"假"(方块82)。在算法的第一迭代中(方块84),首先 将值"n"(其确定防冲突时隙"N"的数量(其中N-2")设定成0x00 (方块88)。 发送WUPB命令一一使处f暂停状态中的卡转到防冲突状态并请求所有处于防冲突 状态中的卡作出响应的轮询i青求(方块90)。 WUPB命令还将"n"的值通知读卡器场 中的卡,所述"n"的值告知卡可用的时隙数(从0至2n-l的数值)。当发送WUPB 命令时,N的值分配至场中的卡,每一卡从1至N中选择一随机数值作为卡的时隙分 配。在每次发送WUPB或REQB命令时,N的值和时隙分配发生变化。还设定时隙 ("隙")的初始值(此时,初始值设定成0x00,不过在其他实施例中可改变该值)(方 块92)。
如果算法不是处于其第一迭代中(方块84)(下文对其进行更详细的论述),则发 送REQB命令一一请求处于防冲突状态中的所有卡作出响应的轮询命令(方块86)。 如上文所述,在每次发送REQB命令时,n和N的值发生改变,且根据n的当前值来 计算防冲突时隙N的数量,且如上文所述设定时隙("隙")的初始值(方块92)。(在 该实施例中,0 < n《4,因丼N的最大值是16。在其他实施例中可使用n的不同
的范围和起始值。) ,
如果时隙的值小于时隙的数量(方块94),且自从发出WUPB或REQB命令以来, 算法处于其第一轮上(换句话说,在该实施例中,时隙-0x00)(方块96),并接收到 有效响应(方块100),则将isCardFound设定成真(方块102)且保存所述响应(方 块104)。如果自从发出WUPB或REQB命令以来算法不是处于其第一轮上(方块96), 则发送MARKER命令一一发出请求使具有对应于当前时隙的时隙分配的卡作出响应 的轮询命令(方块98)。如果接收到有效响应(方块100),则将isCardfound设定成真 (方块102)并保存响应(方块104)。
一旦响应得到保存(方块104),则使正在响应的卡转至活动或暂停状态(方块
106)。在图4中,使卡转到活动或暂停状态的过程首先确定是否可获得一卡识别码 ("CID")或是否己经超过卡识别码的数量,所述卡识别码("CID")分配给处于活动 状态中的每一卡(方块58)。(在该实施例中,CID的初始值设定成"1",不过在其他 实施例中可使用不同的值。在算法的开头还规定了可用的CID的最大数量。在该实施 例中,可用的CID的数量是14;在其他实施例中这一数量可发生改变。)如果一CID 仍然可用(方块58),则将卡置于活动状态中(通过发送ATRRIB命令)(方块60), 并递增所用的CID数量(方块62)。如果不再有可用的CID (方块58),则使卡转到 暂停状态(通过HLTB命令)(方块64)。再次参考图3, 一旦使卡转到活动或暂停状 态(方块106),则递增防冲突时隙的数量(方块108),且如上文的方块94及下列等 等中所述轮询下一时隙。
如果读卡器没有检测到任何清楚的响应(方块100),则确定是否因冲突而未做出 响应(方块IIO)。如果没有冲突(方块IIO),且在算法的该迭代中此前没有检测到任 何冲突(换句话说,isCollisionFound未设定成"真")(方块112),则将isCollisionFound 设定成"真"(方块114)。如果n小于4 (方块116),则递增n (方块118),并递增 时隙(方块108),且按照上文的方块94以及下列等等中所述轮询下一时隙。
如果在算法的该迭代中之前已检测到冲突(方块112),则递增时隙(方块108), 并按照上文的方块94以及下列等等中所述来轮询下一时隙。
如果n大于4 (方块116),则递增时隙(方块108),且按照方块94以及下列等 等中所述来轮询下一时隙。
如果没有冲突(方块110),则递增时隙(方块108),且按照方块94以及下列等 等中所述来轮询下一时隙。
如果时隙不小于2"(方块94),且isCardFound与isCollisionFound中的任一者为 "真"(方块120) — 一表明检测到一卡或冲突,则跟踪这一信息的变量(即isCardFound 和isCollisionFound)被设定为"假"(方块82),且如上文及下文在方块84以及下列 等等中所述来运行算法的另一迭代。
如果时隙不小于2n (方块94),则isCardFound和isCollisionFound均不是"真" (方块120),返回所发现的卡的列表(方块122),且算法结束(方块124)。当在使 用WUPB、 REQB和MARKER命令检查每一时隙之后没有发现卡或冲突的情况下, 该算法完成。
下文列出了算法的一实施例的伪代码实施方式。下文是函数说明,为五个主要的 防冲突命令解释了输入和输出
(byte〗,int) sendReqbCmd( byte n, byte afi ) f-
(byte〖],int) sendWupbCtnd( byte n, byte afi )
(byte〖],int) se11dSlotMarke2:Cmd( byte slot ) (byte[
,int》sendAttribCroci ( byte [〗pupi, byte cid )
(byte[], int) sendHltbCmd (byte [〗pupi )
上文所列示的命令具有以下输入和输出。
输入
byten—n指定"N"的值(防冲突时隙的数量)
N二2n且0〈n《4 byte afi—afi指定用于将PICC的子集定为目标的应用程序族标识符 byteslot—时隙规定"S"的值,即当前的时隙
S=时隙+ 1且1《时隙《N -1 byte[] pupi—p叩i是一四字节数组,其包含唯一的伪唯一 PICC标识码("PUPI")。
PUPI可位于在REQB、 WUPB、或MARKER命令之后接收到的ATQB响应

byte cid - cid是CID的分配,其用于在活动状态命令期间处理具体的卡 CID = cid, 1《cid《14 输出
byte []—包含来自PICC的任何响应的一数组 int—可具有下列值的一整数
>0—从PICC返回的数据数组的长度
ERR—NO—RESPONSE—来自PICC的Error No Response (无响应错误) ERR—Collision—在PICC之间的Error Collision (冲突错误)
査找卡的算法递归式地自我调用。以下是算法界面的一解释 (<formula>formula see original document page 8</formula>以下是界面的输入和输出。
输入
byte wupbStatus—2个可能的值
WUPB-FIRST一ITER—在算法的第一迭代期间发送WUPB,以在编辑处于读 卡器场中的卡的列表之前首先"唤醒"最初处于暂停状态中的卡。 WUPB-OFF—当使用该输入时,使用REQB命令以进行轮询。
byte stateChangeStatus—2个可能的值
MAKE一CARDS一ACTIVE—会将前14个所发现的卡置于活动状态中,然后 使随后发现的卡转到暂停状态,但在所述列表中计及。 MAKE-CARDS一HALTED—使所发现的卡直接转到暂停状态中。
byteafi—由某些应用程序使用的AFI,以仅使所轮询的卡的一子集响JS于防冲突命令。
byten—n的初始大小可设定为0x00,此意味着N-1;如果在算法转时需要,则 可增大n。
byte cid—这是下一个处于活动状态中的可用的CID。最初该值可设定为0x01。 boolean isCardFound—真或假,在该算法的上一迭代中是否发现卡?在调用时, 该值应为真。
boolean isCollisionFound—真或假,在该算法的上一迭代中是否发现冲突?在调用 时,该值应为真。 输出
Rfl443card[]—ISO 14443 RF智能卡对象的数组,所有ISO 14443 RF智能卡对象 均标识其所处的状态、其PUPI值、及CID值(如果有)。 int—从该方法还返回卡数组中的条目的数量。
算法的以下实例性形式假设当算法开始时没有任何卡或PICC处于活动状态。这 并不难实施,因为活动状态命令集通常包含一反选命令,以使PICC或卡转到暂停状 态中。因为在该实施例中仅允许有14个不同的CID,为每一 CID执行反选命令可清 除活动状态。
(rfl在443card[〗,int) listRfCards( byte wupbstatus,
byte stateChangeStatus, byte afi, byte n, byte cid, Boolean isCardFound, Boolean isCollisionFound )
// Mimber of Cards Foimd int numCaxds - ()'
// Stores the Cards discovered this iteration
14443card iterCards [IS] // stores all the cards from this and recursive // iterations (Size is determined later) rf 14443card □ retRfCards,' // RF Card Response Variables irxt response!jength'' byte〖〗 response,'// Number of timeslots available this iteration byte numSlots = (0x01《N);// 2 A n
// Stopping Condition Nb Card and Wo Collisions // Discovered
if (isCardFound || isCollisionFound)
isCardFouiid = false isCollisionFound = false,.
// For a first iteration send WCJPB, otherwise 〃 REQB
if (wupbStatus -- WUPB一F工RST一ITER) {
(response, responseljength)=
sendWupbCmd(n, afi); } else (
(response, responseljeiigth) -
sendRegbOnddi, afi),'
// Loop Through the timeslots
for (byte slot = 0x00,' slot < numSlots;〇lot++》{ if (slot :> 0x00) {
(arespoiise f response:Length)= 曰endSlotMark:e3rCnua(slot),
// Check for an ATQB Response from the 〃 REQB/WUPB/Marfcear if (responseljengtli > 0) { isCardFound - true,'
// Get card information from the response iterCards [numCards〗,parseAtgb (response) 7
// Attempt to move card to Active State if (stateChangeStatus
MAKE—CARDS—ACTIVE) {
(response, responseliength) -sendAttribQrui ( iterCaxds [nuraCards] .getPupi (),cid) f // Successful Respon曰e if (aresponseLengtli > 0》{
iterCaxds
(numCards,setCid (cid);
// Run out of Card ID Numbe;rs if (cid OxOP〗{
stateChangeStaitus =
MAKE—CARDS—HALTED ,.
// Attempt to move card to 〃 Halted State J else {
responseljerigth)= sendHltbCrad( iterCa:rds
// into an arxay of length皿mSavedRfCards + //皿mCards called
//retRfCards (declared at the beginning of the
// method)
// End Insert Code〗
mimCasrds +- n咖SavedRfCards return (retRfCards, numCaards)
权利要求
1、一种用于识别处于RF读卡器场中的任何RF卡的方法,所述方法包括a)从一组命令中发送命令,所述一组命令包括i)第一轮询命令,其用于请求来自所述场中处于防冲突状态中的任何卡的响应,所述第一轮询命令还使任何处于暂停状态中的卡转到所述防冲突状态;ii)第二轮询命令,其用于请求来自所述场中处于所述防冲突状态中的任何卡的响应;及iii)第三轮询命令,其用于请求来自所述场中处于所述防冲突状态中的任何卡的响应,所述防冲突状态已选择要作出响应的特定时隙;b)当从正在响应的卡接收到来自所述所发送命令的清楚响应时i)保存所述响应;ii)使所述正在响应的卡转到活动状态;iii)递增时隙数,且如果所述递增的时隙数超过预定的最大时隙数,则转到步骤d),否则重复步骤a)和b),直到接收不到清楚的响应为止;c)当未从正在响应的卡接收到清楚的响应时,确定是否发生冲突,且如果是,则重复步骤a)和b),直到接收不到清楚的响应为止,且如果没有发生冲突,则转到步骤biii);d)返回一值,指示正在响应的卡的数量。
2、 如权利要求1所蜂的方法,其进一步包括当发送所述第一或第二轮询命令时,指示可用的时隙数。
3、 如权利要求1所述的方法,其进一步包括清除所述活动状态。
4、 如权利要求1所述的方法,其进一步包括当超过可用的卡识别号的数量时,使所述正在响应的卡转到暂停状态。
5、 如权利要求1所述的方法,其进一步包括当发现在所述场中不再有卡时返回一值,以指示所述正在响应的卡的数量。
6、 如权利要求1所述的方法,其进一步包括当填满用于活动状态卡的CID时隙的所述数量时返回一值,以指示所述正在响应的卡的数量。
7、 如权利要求l所述的方法,其进一步包括规定将要作为目标的卡的类型。
8、 如权利要求l所述的方法,其中所述第一轮询命令是将要发送的第一命令。
9、 如权利要求1所述的方法,其进一步包括增大时隙的数量。
10、 一种处理器可读存储媒体,在所述处理器可读存储媒体上包含处理器可读代码,所述处理器可读代码用于对处理器进行编程以执行用于识别RF读卡器场中的任何RF卡的方法,所述方法包括a)从列表发送命令,所述列表包括i) 第一轮询命令,其用于请求来自所述场中处于防冲突状态中的任何卡的响应,所述第一轮询命令还使处于暂停状态中的任何卡转到所述防冲突状态;ii) 第二轮询命令,其用于请求来自所述场中处于所述防冲突状态中的任何卡的响应;及iii) 第三轮询命令,其用于请求来自所述场中处于所述防冲突状态中的任何卡的响应,所述防冲突状态已选择要在其中作出响应的特定时隙;b) 当从正在响应的卡接收到来自所述所发送命令的清楚响应时i) 保存所述响应;ii) 使所述正在响应的卡转到活动状态;iii) 递增时隙数,且如果所述递增的时隙数超过预定的时隙数量,则转到步骤d),否则重复步骤a)和b),直到接收不到清楚响应为止;c) 当未从正在响应的卡接收到清楚的响应时,确定是否发生冲突,且如果是,则重复步骤a)和b),直到接收不到清楚的响应为止,且如果没有发生冲突,则转到步 骤biii);d) 返回一值,以指示正在响应的卡的数量。
11、 如权利要求10所述的处理器可读存储媒体,所述方法进一步包括当发送所述第一或第二轮询命令时指示可用的时隙的数量。
12、 如权利要求10所述的处理器可读存储媒体,所述方法进一步包括清除所述活动状态。
13、 如权利要求10所述的处理器可读存储媒体,所述方法进一步包括当超过可用的卡识别号的数量时使所述正在响应的卡转到暂停状态。
14、 如权利要求10所述的处理器可读存储媒体,所述方法进一步包括当发现在所述场中不再有卡时返回一值,以指示所述正在响应的卡的数量。
15、 如权利要求10所述的处理器可读存储媒体,所述方法进一步包括当填满所述用于活动状态的CID时隙的数量时返回一值,以指示所述正在响应的卡的数量。
16、 如权利要求10所述的处理器可读存储媒体,所述方法进一步包括规定将要作为目标的卡的类型。
17、 如权利要求10所述的处理器可读存储媒体,其中所述第一轮询命令是将要发送的第一命令。
18、 如权利要求10所述的处理器可读存储媒体,所述方法进一步包括增大时隙的数量。
全文摘要
本发明提供一种识别读卡器场中的RF卡的方法和用于执行所述方法的处理器可读存储媒体。将轮询请求(90)发送到读卡器场中的卡。当从正在响应的卡接收到来自所发送命令的清楚响应时(100),保存所述响应(104),所述正在响应的卡转到活动状态(106),且如有可能,时隙数递增(108),并重复上述步骤直到接收不到清楚的响应为止。当接收不到清楚响应时(100),确定是否已发生冲突(110)。如果没有发生冲突,则时隙数递增(108),如果确实发生冲突,则发送另一轮询请求(86)。如果在轮询每一时隙之后没有检测到任何卡或冲突,则返回所发现的卡(122)。
文档编号H04Q5/22GK101176355SQ200680003352
公开日2008年5月7日 申请日期2006年1月10日 优先权日2005年2月4日
发明者菲利普·D·德雷森 申请人:爱特梅尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1