CN108011697A - 一种非接触卡与终端之间的数据交换通信方法 - Google Patents
一种非接触卡与终端之间的数据交换通信方法 Download PDFInfo
- Publication number
- CN108011697A CN108011697A CN201711243910.2A CN201711243910A CN108011697A CN 108011697 A CN108011697 A CN 108011697A CN 201711243910 A CN201711243910 A CN 201711243910A CN 108011697 A CN108011697 A CN 108011697A
- Authority
- CN
- China
- Prior art keywords
- state machine
- state
- block
- data
- judge
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 230000006854 communication Effects 0.000 title claims abstract description 33
- 238000004891 communication Methods 0.000 title claims abstract description 28
- 230000002159 abnormal effect Effects 0.000 claims abstract description 9
- 230000003993 interaction Effects 0.000 claims description 10
- 238000012545 processing Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000004044 response Effects 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 241000700159 Rattus Species 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 2
- 230000005672 electromagnetic field Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 208000031088 Reversible cerebral vasoconstriction syndrome Diseases 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1867—Arrangements specially adapted for the transmitter end
- H04L1/189—Transmission or retransmission of more than one copy of a message
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B5/00—Near-field transmission systems, e.g. inductive or capacitive transmission systems
- H04B5/70—Near-field transmission systems, e.g. inductive or capacitive transmission systems specially adapted for specific purposes
- H04B5/72—Near-field transmission systems, e.g. inductive or capacitive transmission systems specially adapted for specific purposes for local intradevice communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B5/00—Near-field transmission systems, e.g. inductive or capacitive transmission systems
- H04B5/70—Near-field transmission systems, e.g. inductive or capacitive transmission systems specially adapted for specific purposes
- H04B5/77—Near-field transmission systems, e.g. inductive or capacitive transmission systems specially adapted for specific purposes for interrogation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1829—Arrangements specially adapted for the receiver end
- H04L1/1848—Time-out mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1829—Arrangements specially adapted for the receiver end
- H04L1/1858—Transmission or retransmission of more than one copy of acknowledgement message
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1867—Arrangements specially adapted for the transmitter end
- H04L1/188—Time-out mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种非接触卡与终端之间的数据交换通信方法,涉及电子通信领域。终端与非接触卡的交换数据基于状态机实现,所述方法具体为:终端与非接触卡的交换数据基于状态机实现,所述方法具体为:变量初始化,状态机置位为I‑BLOCK;判断状态机所处的状态,然后在该状态下完成数据交换;在变量初始化过程中,增加第一个变量记为标志位,所述标志位为NAD或CID,增加第二个变量用于记录待发送的数据总长度。本发明采用状态机的方式进行各个环节的控制,实现了对I、R、S等块的数据处理和异常情况处理。
Description
技术领域
本发明涉及电子通信领域,尤其涉及一种非接触卡与终端之间的数据交换通信方法。
背景技术
日常生活中,具有非接功能的智能卡、金融卡越来越常见,应用的范围也越来越广泛。现有终端与非接触卡之间的通讯复杂且冗余,故,如何简化终端与非接触卡之间的通讯,如何避免终端与非接触卡之间的通讯复杂且难以维护的问题是领域内容需要攻克的难题。
发明内容
本发明的目的在于提供一种非接触卡与终端之间的数据交换通信方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明所述非接触卡与终端之间的数据交换通信方法,终端与非接触卡的交换数据基于状态机实现,所述方法具体为:变量初始化,状态机置位为I-BLOCK;判断状态机所处的状态,然后在该状态下完成数据交换;在变量初始化过程中,增加第一个变量记为标志位,所述标志位为NAD或CID,增加第二个变量用于记录待发送的数据总长度。
优选地,当状态机处于I-BLOCK状态时,将要交互的数据组包,数据组包后状态机置位为TRARCV,更具体为:
A11,判断接收到的数据块是否为链块;如果是,则将初始带链传I块的PCB编码放入数据块的开始字段中,进入A12;如果否,则将初始不带链传I块的PCB编码放入数据块的开始字段中,进入A13;
A12,判断终端是否支持CID,
如果支持CID,则将CID数据添加到数据组包的开始字段中,然后判断数据块中是否存在NAD,若是,则将NAD数据添加到数据组包的开始字段中,然后在数据组包中设置信息字段得到数据组包;若否,则直接在数据组包中设置信息字段,得到数据组包;得到数据组包后将待发送数据总长减去一帧,同时,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
如果不支持CID,则直接判断数据块中是否存在NAD,若是,则将NAD数据添加到数据组包的开始字段中,然后在数据组包中设置信息字段得到数据组包;若否,则直接在数据组包中设置信息字段,得到数据组包;得到数据组包后将待发送数据总长减去一帧,同时,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
A13,判断终端是否支持CID,
如果支持CID,则将CID数据添加到数据组包的开始字段中,然后判断数据块中是否存在NAD,若是,则将NAD数据添加到数据组包的开始字段中,然后在数据组包中设置信息字段,得到数据组包;若否,则直接在数据组包中设置信息字段,得到数据组包;得到数据组包后将待发送数据总长置零,同时,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
如果不支持CID,则判断数据块中是否存在NAD,若是,则将NAD数据添加到数据组包的开始字段中,然后在数据组包中设置信息字段,得到数据组包;若否,则直接在数据组包中设置信息字段,得到数据组包;得到数据组包后将待发送数据总长置零,同时,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
优选地,当状态机处于TRARCV状态时,更新非接触卡的超时时间,将组包后的要交换数据的数据块发送给非接触卡,同时接收非接触卡返回的数据块:
当接收到的数据块存在异常时,所述异常包括奇偶校验、CRC、超时、CODEERR中的一种或几种,启动重新接收,若S块的重发次数或者错误重发次数大于2次,则状态机置位为RCVINV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若S块的重发次数或者错误重发次数小于等于2次,则判断接收到的发生异常的数据是否为链块,如果是,则关闭最后块重发请求,将状态机置位为ACK-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;如果否,则开启最后块重发请求,状态机置位为NACK-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
当接收到的数据块不存在异常时,所述包括奇偶校验、CRC、超时、CODEERR中的一种或几种,则判断接收到的数据块类型:若数据块类型为I块,则将错误计数重置为0,则关闭最后块重发请求,将状态机置位为REV I-BLOCK,结束当前数据块的数据交互,继续判断状态机所处的状态;若数据块类型为R块,将错误计数重置为0,则关闭最后块重发请求,将状态机置位为REVR-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若数据块类型为S块,则判断最后块是否进行了重新传送,如果是,则发送S块重发计数增加一次,将状态机置位为REV S-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;如果否,则发送S块重发计数清0,将状态机置位为REV S-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若数据块类型不属于I块、R块和S块中的任意一种,则接收到的数据块为错误数据块,将状态机置位为RCVINV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
优选地,当状态机在ACK-BLOCK状态或NACK-BLOCK状态下,将要交互的数据组包为R块,若终端支持CID,则将CID数据添加到数据组包的开始字段中,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若终端不支持CID,则将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
优选地,当状态机在S-BLOCK状态下,将要交互的数据组包为S块,信息字段的数据添加到数据组包中,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
优选地,当状态机在REV I-BLOCK状态下,判断当前接收数据块的块序号是否正确,如果否,则将状态机置位为REV INV-BLOCK;如果是,则判断当前接收数据块是否为链块,若不是链块,则为无事件,将状态机置位为NON-EVENT,更新数据块序列号,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若为链块,将状态机置位为ACK-BLOCK,保存当前接收数据块的数据到缓存,更新数据块序列号,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
优选地,当状态机在REV R-BLOCK状态下,判定接收到的数据块的数据头为NAK还是ACK的标志,
如是NAK,则当前传送数据错误,将状态机置位为REV INV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
如是ACK,则判断数据块的块序列号是否正确,
若不正确,则更新错误重传计数次数,判断重发计数是否超过限制,超过限制,则状态机置位为REV INV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;未超过限制,则状态机置位为I-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
若正确,则判断当前I-BLOCK是否为链块,是链块则更新数据块序列号同时重传次数清为0,状态机置位为I-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;不是链传,状态机置位为REV INV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
优选地,当状态机在REV S-BLOCK状态下,判定接收到的数据块的数据头是否为S块,
如否,则将状态机置位REV INV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
如是,则判断S块的信息域是否正确,若正确,更新接收超时计数,状态机置位为S-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若不正确,则将状态机置位REVINV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
更优选地,所述S块的信息域为S块信息字段大于0且小于等于63。
优选地,当状态机在REV INV-BLOCK状态下,终端复位非接触卡并将状态机置位为NON-EVENT,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
本发明的有益效果是:
本发明克服了现有技术中的不足。采用状态机的方式进行各个环节的控制。按照预先设置的规范要求进行代码实现。实现了对I、R、S等块的数据处理和异常情况处理。
本发明所述方法易于理解维护管理,状态机控制着交互过程,根据非接触卡反馈的数据,进行调整,条理清晰,易于理解和维护。能够充分保证各个环节的异常处理和正常数据交互逻辑实现。
附图说明
图1是非接触卡与终端之间的数据交换通信方法的流程总示意图;
图2是图1的第一局部流程示意图;
图3是图1的第二局部流程示意图;
图4是图1的第三局部流程示意图
图5是在ISO14443中A类非接触卡与终端之间的通信流程示意图;
图6是在ISO14443中B类非接触卡与终端之间的通信流程示意图;
图7是图1中任意一个数据块的数据格式;
图8是I块的PCB编码表;
图9是R块的PCB编码表;
图10是S(WTX)块的PCB编码表。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
图1为本次专利最核心的部分。是本专利中终端跟卡数据的交换和对异常处理的实现方式。当终端要发送指令的时候,会调用该接口进行数据的交换。
图5是在ISO14443中A类非接触卡与终端之间的通信流程示意图;
图6是在ISO14443中B类非接触卡与终端之间的通信流程示意图。
图7所示为图1过程中的数据块的数据格式。协议控制字节PCB(Protocol ControlByte)的数据不同,代表着不同的数据块。具体格式如图8、图9和图10所示。
关于本申请中涉及到的英文缩写的中文含义:
I-BLOCK:I块组包状态。
ACK-BLOCK:包含肯定确认的R块组包状态。
NACK-BLOCK;包含否定确认的R块组包状态。
S-BLOCK;管理块组包状态。
TRARCV:发送和接收状态。
RCVI-BLOCK:处理接收I块状态。
RCVR-BLOCK:处理R块状态。
RCVS-BLOCK:处理S块状态。
RCVINV-BLOCK:处理无效块状态。
NON-EVENT:无效事件。
I块:数据传输块,包含数据域。
R块:应答块,分为正确接收应答和错误接收应答。
S块:一种为等待延迟请求,带一个byte数据域,另一种是DESELECT命令,不带数据域。
CID:卡标识符。
NAD:结点地址字段。
CODE ERR:代码错误。
CRC:循环冗余校验。
ACK肯定确认,英文全称:positive ACKnowledgement。
NAK否定确认,英文全称:Negative AcKnowledgement。
EDC:差错检测码,英文全称:Error Detection Code。
REQA指令:请求命令,类型A,英文全称:Request Command,Type A。
REQB指令:请求命令,类型B,英文全称:Request Command,Type B。
WUPA指令:类型APICC唤醒命令,英文全称:Wake-UP Command,Type A。
WUPB指令:类型B PICC唤醒命令,英文全称:Wake-UP Command,Type B。
ATQA指令:请求应答,类型A,英文全称:Answer To Request,Type A。
ATQB指令:请求应答,类型B,英文全称:Answer To Request,Type B。
UID:唯一标识符,英文全称:Unique Identifier,Type A。
SEL:选择命令,英文全称:SELect code,Type A。
ATTRIB:PICC选择命令,英文全称:PICC selection command,Type B。
SAK指令;选择确认,英文全称:Select AcKnowledge,Type A。
RATS指令:选择应答请求,英文全称:Request for Answer To Select。
ATS指令:选择应答,英文全称:Answer To Select。
PPS过程:协议和参数选择,英文全称:Protocol and Parameter Selection。
DESELECT指令:取消选择命令,英文全称:deSELect code,Type A。
IDLE状态:空闲状态。
实施例1
参照图1,本实施例所述非接触卡与终端之间的数据交换通信方法,终端与非接触卡的交换数据基于状态机实现,所述方法具体为:
变量初始化,状态机置位为I-BLOCK;判断状态机所处的状态,然后在该状态下完成数据交换;
在变量初始化过程中,增加第一个变量记为标志位,所述标志位为NAD或CID,增加第二个变量用于记录待发送的数据总长度。所述标志位记录当前的通讯模式。
(1)参照图1和图2,当状态机处于I-BLOCK模式时,将要交互的数据组包,数据组包后状态机置位TRARCV,更具体为:
A11,判断接收到的数据块是否为链块;如果是,则将初始带链传I块的PCB编码放入数据块的开始字段中,进入A12;如果否,则将初始不带链传I块的PCB编码放入数据块的开始字段中,进入A13;
A12,判断终端是否支持CID,
如果支持CID,则将CID数据添加到数据组包的开始字段中,然后判断数据块中是否存在NAD,若是,则将NAD数据添加到数据组包的开始字段中,然后在数据组包中设置信息字段得到数据组包;若否,则直接在数据组包中设置信息字段,得到数据组包;得到数据组包后将待发送数据总长减去一帧,同时,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
如果不支持CID,则直接判断数据块中是否存在NAD,若是,则将NAD数据添加到数据组包的开始字段中,然后在数据组包中设置信息字段得到数据组包;若否,则直接在数据组包中设置信息字段,得到数据组包;得到数据组包后将待发送数据总长减去一帧,同时,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
A13,判断终端是否支持CID,
如果支持CID,则将CID数据添加到数据组包的开始字段中,然后判断数据块中是否存在NAD,若是,则将NAD数据添加到数据组包的开始字段中,然后在数据组包中设置信息字段,得到数据组包;若否,则直接在数据组包中设置信息字段,得到数据组包;得到数据组包后将待发送数据总长置零,同时,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
如果不支持CID,则判断数据块中是否存在NAD,若是,则将NAD数据添加到数据组包的开始字段中,然后在数据组包中设置信息字段,得到数据组包;若否,则直接在数据组包中设置信息字段,得到数据组包;得到数据组包后将待发送数据总长置零,同时,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
(2)参照图1和图3,当状态机处于TRARCV模式时,更新非接触卡的超时时间,将组包后的要交换数据的数据块发送给非接触卡,同时接收非接触卡返回的数据块:
当接收到的数据块存在异常时,所述异常包括奇偶校验、CRC、超时、CODE ERR中的一种或几种,启动重新接收,若S块的重发次数或者错误重发次数大于2次,则状态机置位为RCVINV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若S块的重发次数或者错误重发次数小于等于2次,则判断接收到的发生异常的数据是否为链块,如果是,则关闭最后块重发请求,将状态机置位为ACK-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;如果否,则开启最后块重发请求,状态机置位为NACK-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
当接收到的数据块不存在异常时,所述包括奇偶校验、CRC、超时、CODEERR中的一种或几种,则判断接收到的数据块类型:若数据块类型为I块,则将错误计数重置为0,则关闭最后块重发请求,将状态机置位为REV I-BLOCK,结束当前数据块的数据交互,继续判断状态机所处的状态;若数据块类型为R块,将错误计数重置为0,则关闭最后块重发请求,将状态机置位为REV R-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若数据块类型为S块,则判断最后块是否进行了重新传送,如果是,则发送S块重发计数增加一次,将状态机置位为REV S-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;如果否,则发送S块重发计数清0,将状态机置位为REV S-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若数据块类型不属于I块、R块和S块中的任意一种,则接收到的数据块为错误数据块,将状态机置位为RCVINV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
(3)参照图1和图2,当状态机在ACK-BLOCK模式下,将要交互的数据组包为R块,若终端支持CID,则将CID数据添加到数据组包的开始字段中,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若终端不支持CID,则将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
(4)参照图1和图2,当状态机在NACK-BLOCK模式下,将要交互的数据组包为R块,若终端支持CID,则将CID数据添加到数据组包的开始字段中,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若终端不支持CID,则将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
(5)参照图1和图2,当状态机在S-BLOCK模式下,将要交互的数据组包为S块,信息字段的数据添加到数据组包中,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
(6)参照图1和图4,当状态机在REV I-BLOCK模式下,判断当前接收数据块的块序号是否正确,如果否,则将状态机置位为REV INV-BLOCK;如果是,则判断当前接收数据块是否为链块,若不是链块,则为无事件,将状态机置位为NON-EVENT,更新数据块序列号,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若为链块,将状态机置位为ACK-BLOCK,保存当前接收数据块的数据到缓存,更新数据块序列号,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
(7)参照图1和图4,当状态机在REV R-BLOCK模式下,判定接收到的数据块的数据头为NAK还是ACK的标志,
如是NAK,则当前传送数据错误,将状态机置位为REV INV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
如是ACK,则判断数据块的块序列号是否正确,
若不正确,则更新I块重发计数,判断重发计数是否超过限制,超过限制,则状态机置位为REV INV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;未超过限制,则状态机置位为I-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
若正确,则判断当前I-BLOCK是否为链块,是链块则更新数据块序列号同时重传次数清为0,状态机置位为I-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;不是链传,状态机置位为REV INV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
(8)参照图1和图4,当状态机在REV S-BLOCK模式下,判定接收到的数据块的数据头是否为S块,
如否,则将状态机置位REV INV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
如是,则判断S块的信息域是否正确,若正确,更新接收超时计数,状态机置位为S-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若不正确,则将状态机置位REV INV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
其中,所述S块的信息域为S块信息字段大于0且小于等于63。
(9)参照图1和图4,当状态机在REV INV-BLOCK模式下,终端复位非接触卡并将状态机置位为NON-EVENT,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
在本实施例中,“待发送数据总长计数”此处的计数表达的是一个计数值。需要该计数值记录需要发送的数据。因为当传入的数据大于一个数据组包的发送能力时,需要进行分包传输。故用此量来计数仍需要发送的字节数。同时,传入的数据大于一个帧长,所以需要进行分包传输,故为带链传的操作,每个分包的数据组包中需要添加带链传标志,每个组成数据包的数据块在组成数据包前具有链传标志,即为链块。如果待发送数据使用一个组包能发完,故无需带链传标志。
当进入需要交换的数据进入交换数据状态步骤时,即图2和图3所示的交换数据部分,也就是开始一次新的数据交互时,需要将待发数据总长计数置位为传入数据的长度。更详细的解释为:当进入数据交换时,获取要传输数据的长度,所以要传输数据经过初始化后,待发送数据长度为要传数据长度。
在本实施例中,关于变量初始化过程中第二个变量的说明:假设初始化过程时待发送的数据总长度A,如果待发送的数据总长度A大于帧长不能作为一个数据组包进行发送,故将待发送的数据分成n个数据单元,将每个数据单元进行组包得到数据组包,进行发送,每个数据组包的长度=每个数据单元的长度+1个字节的PCB+2个字节的结尾字段+可选字段,所述可选字段为NAD或CID;当进行分包发送的时候,则将初始化过程时待发送的数据总长度A减去一帧;一帧表示的是正确数据组包中包含的数据单元的长度。如果待发送的数据总长度A小于帧长时,不进行分包操作,则将初始化过程时待发送的数据总长度重新设置为零。
参照图5,在ISO14443-4中A类非接触卡与终端之间的通信方法包括:
S11,终端自行激活电磁场,等待非接触卡靠近终端,然后以REQA指令或者WUPA指令的形式向非接触卡发起交易通讯请求,非接触卡接收到REQA指令或者WUPA指令后以ATQA指令进行响应;
S12,当终端接收到的响应中所携带指令合理时,启动防冲突循环操作获取进行响应的非接触卡的UID,同时,终端发送SEL指令到回送了UID的非接触卡,回送过UID的非接触卡正确接收SEL指令后,以SAK指令应答SEL指令;
S13,终端根据收到的响应指令SAK,判断发出响应指令SAK的非接触卡是否满足预先设定的规范要求,如果是,向该非接触卡发送RATS指令,非接触卡接收RATS指令后向终端发送ATS指令;
S14,终端根据接收到的ATS指令判断是否进行PPS过程,如果是,则终端与非接触卡协商得到一个通讯参数,然后进行PPS过程,完成PPS过程后,进入S5;如果否,则直接进入S5;
S15,终端进入交换数据阶段,完成交换数据后,发送DESELECT指令将非接触卡移除,当非接触卡接收DESELECT指令后,进入IDLE状态,等待下次终端发起交易通讯的请求。
步骤S5的交互数据阶段采用实施例1中所述方法。
参照图6,是在ISO14443中B类非接触卡与终端之间的通信流程示意图包括:
S21,终端自行激活电磁场,等待非接触卡靠近终端,然后以REQB指令或者WUPB指令的形式向非接触卡发起交易通讯请求,非接触卡接收到REQB指令或者WUPB指令后以ATQB指令进行响应;若执行正确则执行S22操作,若未操作成功,则返回S21,重新发送唤醒卡指令。若超出计时时间则退出流程;
S22,终端发送attrib指令,进行卡激活,卡响应操作指令正确则进入S23错误则退出操作流程;若出现错误则且重试次数小于3次,则重复S22操作,否则退出流程;
S23,终端进入交换数据阶段。操作结束后,退出该流程。
其中。交互数据阶段采用实施例1中所述方法。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:
本发明克服了现有技术中的不足。采用状态机的方式进行各个环节的控制。按照预先设置的规范要求进行代码实现。实现了对I、R、S等块的数据处理和异常情况处理。
本发明所述方法易于理解维护管理,状态机控制着交互过程,根据非接触卡反馈的数据,进行调整,条理清晰,易于理解和维护。能够充分保证各个环节的异常处理和正常数据交互逻辑实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (10)
1.一种非接触卡与终端之间的数据交换通信方法,其特征在于,终端与非接触卡的交换数据基于状态机实现,所述方法具体为:
变量初始化,状态机置位为I-BLOCK;判断状态机所处的状态,然后在该状态下完成数据交换;
在变量初始化过程中,增加第一个变量记为标志位,所述标志位为NAD或CID,增加第二个变量用于记录待发送的数据总长度。
2.根据权利要求1所述非接触卡与终端之间的数据交换通信方法,其特征在于,当状态机处于I-BLOCK状态时,将要交互的数据组包,数据组包后状态机置位为TRARCV,更具体为:
A11,判断接收到的数据块是否为链块;如果是,则将初始带链传I块的PCB编码放入数据块的开始字段中,进入A12;如果否,则将初始不带链传I块的PCB编码放入数据块的开始字段中,进入A13;
A12,判断终端是否支持CID,
如果支持CID,则将CID数据添加到数据组包的开始字段中,然后判断数据块中是否存在NAD,若是,则将NAD数据添加到数据组包的开始字段中,然后在数据组包中设置信息字段得到数据组包;若否,则直接在数据组包中设置信息字段,得到数据组包;得到数据组包后将待发送数据总长减去一帧,同时,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
如果不支持CID,则直接判断数据块中是否存在NAD,若是,则将NAD数据添加到数据组包的开始字段中,然后在数据组包中设置信息字段得到数据组包;若否,则直接在数据组包中设置信息字段,得到数据组包;得到数据组包后将待发送数据总长减去一帧,同时,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
A13,判断终端是否支持CID,
如果支持CID,则将CID数据添加到数据组包的开始字段中,然后判断数据块中是否存在NAD,若是,则将NAD数据添加到数据组包的开始字段中,然后在数据组包中设置信息字段,得到数据组包;若否,则直接在数据组包中设置信息字段,得到数据组包;得到数据组包后将待发送数据总长置零,同时,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
如果不支持CID,则判断数据块中是否存在NAD,若是,则将NAD数据添加到数据组包的开始字段中,然后在数据组包中设置信息字段,得到数据组包;若否,则直接在数据组包中设置信息字段,得到数据组包;得到数据组包后将待发送数据总长置零,同时,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
3.根据权利要求1所述非接触卡与终端之间的数据交换通信方法,其特征在于,当状态机处于TRARCV状态时,更新非接触卡的超时时间,将组包后的要交换数据的数据块发送给非接触卡,同时接收非接触卡返回的数据块:
当接收到的数据块存在异常时,所述异常包括奇偶校验、CRC、超时、CODEERR中的一种或几种,启动重新接收,若S块的重发次数或者错误重发次数大于2次,则状态机置位为RCVINV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若S块的重发次数或者错误重发次数小于等于2次,则判断接收到的发生异常的数据是否为链块,如果是,则关闭最后块重发请求,将状态机置位为ACK-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;如果否,则开启最后块重发请求,状态机置位为NACK-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
当接收到的数据块不存在异常时,所述包括奇偶校验、CRC、超时、CODEERR中的一种或几种,则判断接收到的数据块类型:若数据块类型为I块,则将错误计数重置为0,则关闭最后块重发请求,将状态机置位为REV I-BLOCK,结束当前数据块的数据交互,继续判断状态机所处的状态;若数据块类型为R块,将错误计数重置为0,则关闭最后块重发请求,将状态机置位为REVR-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若数据块类型为S块,则判断最后块是否进行了重新传送,如果是,则发送S块重发计数增加一次,将状态机置位为REV S-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;如果否,则发送S块重发计数清0,将状态机置位为REV S-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若数据块类型不属于I块、R块和S块中的任意一种,则接收到的数据块为错误数据块,将状态机置位为RCVINV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
4.根据权利要求1所述非接触卡与终端之间的数据交换通信方法,其特征在于,
当状态机在ACK-BLOCK状态或NACK-BLOCK状态下,将要交互的数据组包为R块,若终端支持CID,则将CID数据添加到数据组包的开始字段中,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若终端不支持CID,则将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
5.根据权利要求1所述非接触卡与终端之间的数据交换通信方法,其特征在于,当状态机在S-BLOCK状态下,将要交互的数据组包为S块,信息字段的数据添加到数据组包中,将状态机置位为TRARCV,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
6.根据权利要求1所述非接触卡与终端之间的数据交换通信方法,其特征在于,
当状态机在REV I-BLOCK状态下,判断当前接收数据块的块序号是否正确,如果否,则将状态机置位为REV INV-BLOCK;如果是,则判断当前接收数据块是否为链块,若不是链块,则为无事件,将状态机置位为NON-EVENT,更新数据块序列号,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若为链块,将状态机置位为ACK-BLOCK,保存当前接收数据块的数据到缓存,更新数据块序列号,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
7.根据权利要求1所述非接触卡与终端之间的数据交换通信方法,其特征在于,
当状态机在REV R-BLOCK状态下,判定接收到的数据块的数据头为NAK还是ACK的标志,
如是NAK,则当前传送数据错误,将状态机置位为REV INV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
如是ACK,则判断数据块的块序列号是否正确,
若不正确,则更新错误重传计数次数,判断重发计数是否超过限制,超过限制,则状态机置位为REV INV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;未超过限制,则状态机置位为I-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
若正确,则判断当前I-BLOCK是否为链块,是链块则更新数据块序列号同时重传次数清为0,状态机置位为I-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;不是链传,状态机置位为REV INV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
8.根据权利要求1所述非接触卡与终端之间的数据交换通信方法,其特征在于,
当状态机在REV S-BLOCK状态下,判定接收到的数据块的数据头是否为S块,
如否,则将状态机置位REV INV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;
如是,则判断S块的信息域是否正确,若正确,更新接收超时计数,状态机置位为S-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态;若不正确,则将状态机置位REVINV-BLOCK,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
9.根据权利要求8所述非接触卡与终端之间的数据交换通信方法,其特征在于,所述S块的信息域为S块信息字段大于0且小于等于63。
10.根据权利要求1所述非接触卡与终端之间的数据交换通信方法,其特征在于,
当状态机在REV INV-BLOCK状态下,终端复位非接触卡并将状态机置位为NON-EVENT,结束当前状态;判断状态机是否为无效状态,若是则结束状态机;若否,则返回判断状态机所处的状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711243910.2A CN108011697B (zh) | 2017-11-30 | 2017-11-30 | 一种非接触卡与终端之间的数据交换通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711243910.2A CN108011697B (zh) | 2017-11-30 | 2017-11-30 | 一种非接触卡与终端之间的数据交换通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108011697A true CN108011697A (zh) | 2018-05-08 |
CN108011697B CN108011697B (zh) | 2020-09-18 |
Family
ID=62055804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711243910.2A Active CN108011697B (zh) | 2017-11-30 | 2017-11-30 | 一种非接触卡与终端之间的数据交换通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108011697B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5613159A (en) * | 1992-04-08 | 1997-03-18 | Innovatron Industries S.A. | Contact-free data exchange between a terminal and modular portable set having two different protocols for exchange which is selected based on portable set type |
CN1957361A (zh) * | 2004-05-24 | 2007-05-02 | 松下电器产业株式会社 | 对读写器的安全模块的存取控制方法 |
CN101783040A (zh) * | 2008-12-23 | 2010-07-21 | 深圳市莫廷影像技术有限公司 | 一种智能卡刷卡机及其信息交互方法 |
CN101969393A (zh) * | 2010-10-27 | 2011-02-09 | 四川省绵阳西南自动化研究所 | 一种用于FlexRay总线和PC104总线的协议转换器 |
CN102685722A (zh) * | 2011-03-17 | 2012-09-19 | 株式会社东芝 | Ic卡 |
CN104426572A (zh) * | 2013-09-11 | 2015-03-18 | 中兴通讯股份有限公司 | 复用射频前端的方法及*** |
CN106559739A (zh) * | 2016-09-28 | 2017-04-05 | 深圳成谷科技有限公司 | 适于蓝牙低功耗无线通信***的轻量级数据传输方法 |
US20170286947A1 (en) * | 2016-03-30 | 2017-10-05 | Baoruh Electronic Co., Ltd. | Contactless Smart-card Reader with Security and Hybrid Multi-core Parallel Verifying Process |
-
2017
- 2017-11-30 CN CN201711243910.2A patent/CN108011697B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5613159A (en) * | 1992-04-08 | 1997-03-18 | Innovatron Industries S.A. | Contact-free data exchange between a terminal and modular portable set having two different protocols for exchange which is selected based on portable set type |
CN1957361A (zh) * | 2004-05-24 | 2007-05-02 | 松下电器产业株式会社 | 对读写器的安全模块的存取控制方法 |
CN101783040A (zh) * | 2008-12-23 | 2010-07-21 | 深圳市莫廷影像技术有限公司 | 一种智能卡刷卡机及其信息交互方法 |
CN101969393A (zh) * | 2010-10-27 | 2011-02-09 | 四川省绵阳西南自动化研究所 | 一种用于FlexRay总线和PC104总线的协议转换器 |
CN102685722A (zh) * | 2011-03-17 | 2012-09-19 | 株式会社东芝 | Ic卡 |
CN104426572A (zh) * | 2013-09-11 | 2015-03-18 | 中兴通讯股份有限公司 | 复用射频前端的方法及*** |
US20170286947A1 (en) * | 2016-03-30 | 2017-10-05 | Baoruh Electronic Co., Ltd. | Contactless Smart-card Reader with Security and Hybrid Multi-core Parallel Verifying Process |
CN106559739A (zh) * | 2016-09-28 | 2017-04-05 | 深圳成谷科技有限公司 | 适于蓝牙低功耗无线通信***的轻量级数据传输方法 |
Non-Patent Citations (1)
Title |
---|
ISO: ""Identification cards-Contactless integrated circuit(s) cards - Proximity cards-Part 4: Transmission protocol"", 《ISO/IEC FDIS 14443-4》 * |
Also Published As
Publication number | Publication date |
---|---|
CN108011697B (zh) | 2020-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104782072B (zh) | 采用可靠停等混合自动重传请求协议的***和方法 | |
TWI364996B (en) | Method and apparatus for detecting an erroneous sequence number in a status report in a wireless communication system | |
KR100732345B1 (ko) | 플렉서블 무선링크 제어 프로토콜 | |
TWI342134B (en) | Method and apparatus for rlp retransmission for cdma communication systems | |
EP1762059B1 (en) | Method of, and system for, communicating data, and a station for transmitting data | |
US7149181B2 (en) | Apparatus and method for re-transmitting erroneous packet data | |
CN101166075B (zh) | 移动通信***、基站及估计上行链路分组重发数目的方法 | |
US8737306B2 (en) | Method for triggering status reports and apparatus thereof | |
US9590704B2 (en) | Method and apparatus in a wireless communication system | |
CN101399643B (zh) | 确认模式数据传输的控制方法及装置 | |
EP2557741B1 (en) | Method and apparatus for sending / receiving downlink control signaling | |
EP2241044B1 (en) | Method of communication, in particular with capability of frame abortion or retransmission indication, between a transmitter and a receiver based on frames, and corresponding communication node | |
CN104836646A (zh) | 一种rlc am模式传输可靠性增强方法 | |
US9491269B2 (en) | Uplink transmission rate in a wireless communication device | |
CN101753281B (zh) | 无线链路控制层减少冗余报文重传的方法及*** | |
KR101533512B1 (ko) | 무선 통신 환경에서 자동 반복 요구 리셋을 수행하는 방법들 및 디바이스들 | |
CN108292973A (zh) | 基于切换的接收成功的指示符 | |
CN108011697A (zh) | 一种非接触卡与终端之间的数据交换通信方法 | |
CN102201901A (zh) | 数据重传方法及装置 | |
CN108347312A (zh) | 控制信息的发送及接收方法、网络设备及终端设备 | |
CN101217346A (zh) | 一种am模式状态反馈方法及*** | |
CN109600204A (zh) | 一种数据传输方法及装置 | |
CN103873192A (zh) | 数据处理方法及装置 | |
US20070223524A1 (en) | Protocol Parameter Negotiation | |
CN107959554A (zh) | 一种数据的重传方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |