http://blog.csdn.net/jennyvenus/article/details/2900697

//Reset

3B FB 13 00 00 81 31 FE 45 65 46 53 07 01 00 71 C6 80 61 17 D4

//点击显示详细信息,00402D3D,00000000,00000015

//复位应答 ATR

//      开始│                              │奇偶        下一

//       位 │←────8位数据 ─────→│ 位         开始

//          │                              │             位

//Z ──┐  ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬ - - - ┐

//      │  │  │  │  │  │  │  │  │  │  │  保   │

//I/O   │  │b │b │b │b │b │b │b │b │b │  护   │

//      │  │ a│ b│ c│ d│ e│ f│ g│ h│ i│  时   │  │

// A    │  │  │  │  │  │  │  │  │  │  │  间   │  │

//      └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘       └─┘

//      0   t                           t       t

//           1                           n       10

//      │                              │

//      │←───(n±0.2)etu ───→│

//      │                              │

//                           字符帧

//----在传送字符前,I/O处于Z状态

//----每个字符由10位组成,起始位(1位)状态为A

//--------8位数据位ba ~ bh, 第10位bi为偶校验

//----复位应答期间,1etu = 372个clock

//----一个数据字节由b1-b8组成,b1为LSB,b8为MSB。接收方在每一位的中间采样,采样时间应该小于0.2etu。

//----两连续字符之间的延时(两起始位下降沿之间)至少为12个etu,包括字符宽度10(+/-0.2)个etu和一段保护时间

//----两连续字符之间的延时(两起始位下降沿之间)最大不超过9600个etu,这个最大值称为初始等待时间

//----在保护时间内,读卡器和卡都处于接收状态,I/O线处于状态Z。

//----发送方在下降沿开始后的第11个etu处检查I/O状态,

//--------当奇偶校验不正确时,从起始位下降沿之后的10.5个etu开始,

//--------接收方发送状态A做为出错信息,该信号宽度为1-2个etu。

//--------如果发送方检查I/O状态为Z,则表示接收是正确的,反之则认为是错误的,

//--------接收方希望重新发送此字节。

//--------对于T=0的卡必须重发,对于其他卡是可以选择的

//----------------------------------------

//TS( The Initial character )         = 3B

//       Start  ba  bb  bc  bd  be  bf  bg  bh  bi

//Z   ____     _______     ___________         ______

//        |   |   |   |   | Z   Z   Z |       |       |   |

//     (Z)| A | Z   Z | A |     or    |       | Z  (Z)

//A       |___|       |___|_A___A___A_|___|___|

//

//               初始字符 TS

//--- 正向约定:Z表示1,A表示0,传输时先传输LSB,则TS应该是

//----(Z)AZZAZZZAAZ,0 1 1 0 1 1 1 0 0 1  即16进制数3B

//----bd, be, bf为ZZZ。

//--- 反向约定:Z表示0,A表示1,传输时先传输MSB,则TS应该是

//----(Z)AZZAAAAAAZ,1 0 0 1 1 1 1 1 1 0  即16进制数3F

//----bd, be, bf为AAA。

//--此字节表示正向约定,高电平为1,低电平为0,传输时先传输LSB,最后传输MSB

//----------<<<在TS之后发送的字符数不超过32个,复位应答格式如下>>>

//--         - T0 ................... Format character     (Mandatory)

//--         - TAi, TBi, TCi, TDi ... Interface characters  (Optional)

//--         - T1, T2, ... ,TK ...... Historical characters (Optional)

//--         - TCK .................. Check character    (Conditional)

//--Reset

//-- |

//-- |    _________________________________________         _______   _________

//-- |   |   |   |   |   |   |   |   |   |   |   |           |   |     |  |   |

//-- '-->| TS| T0|TA1|TB1|TC1|TD1|TA2|TB2|TC2|TD2| ......... | T1| ... | TK|TCK|

//--     |___|___|___|___|___|___|___|___|___|___|_         _|___|_   _|__ |___|

//--     TS  : Initial character

//--     TO  : Format character

//--     TAi : Interface character [ codes FI,DI ]

//--     TBi : Interface character [ codes II,PI1 ]

//--     TCi : Interface character [ codes N ]

//--     TDi : Interface character [ codes Yi+1, T ]

//--     T1, ... , TK : Historical characters (max,15)

//--     TCK : Check character

//--                    复位应答的一般构成

//----------------------------------------

//T0( The Format character )          = FB

//--,----,----,----,----,----,----,----,----,

//--| b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 |

//--'----'----'----'----'----'----'----'----'

//--:<------- Y1 ------>:<-------- K ------>:

//--

//--Y1 : 接口字符是否存在的指示符

//--       b5 = 1,发送TA1

//--       b6 = 1,发送TB1

//--       b7 = 1,发送TC1

//--       b8 = 1,发送TD1

//--K : 历史字节数(0~15)

//--            格式字符     T0 提供的信息

//--T0表示接口字符的个数和历史字节的数量

//----其高4位有几个bit为1,则表示后续有几个接口字符,其低4位表示有多少个历史字节(0-15)

//--------高4位 = F(  1 1 1 1  )表示后续字符中存在TA1 TB1 TC1 TD1

//--------------------( TA1, TB1, TC1, TA2, TB2 是全局接口字符,TC2是专用接口字符 )

//--------低4位 = B,表示后面有11个历史字节

//----------------------------------------

//TA1                                 = 13

//--表示有增强的波特率,公式 f / ( F / D )

//--其中,f是读卡器提供的时钟,常用 3571200(单位HZ)

//--------F由TA1的高4位(FI)查表得出,D由TA1的低4位(DI)查表得出

//----FI = 01 ,查下表,则F = 372

//+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

//|    FI       |  0000  |  0001  |  0010  |  0011  |  0100  |  0101  |  0110  |  0111  |

//+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

//|    F        |  372   |  372   |  558   |  744   |  1116  |  1488  |  1860  |  RFU  |

//+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

//| 最高时钟MHZ |  4     |  5     |  6     |  8     |  12    |  16    |  20    |   --   |

//+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

//|    FI       |  1000  |  1001  |  1010  |  1011  |  1100  |  1101  |  1110  |  1111  |

//+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

//|    F        |  RFU   |  512   |  768   |  1024  |  1536  |  2048  |  RFU   |  RFU  |

//+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

//| 最高时钟MHZ |   --   |  5     |  7.5   |  10    |  15    |  20    |   --   |   --   |

//+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

//----DI = 03 ,查下表,则D = 4

//+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

//|    DI       |  0000  |  0001  |  0010  |  0011  |  0100  |  0101  |  0110  |  0111  |

//+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

//|    D        |  RFU   |   1    |   2    |   4    |   8    |   16   |  1860 |  RFU   |

//+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

//|    DI       |  1000  |  1001  |  1010  |  1011  |  1100  |  1101  |  1110  |  1111  |

//+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

//|    D        |  RFU   |  512   |  768   |  1024  |  1536  |  2048  |  RFU   |  RFU  |

//+-------------+--------+--------+--------+--------+--------+--------+--------+--------+

//--------实际波特率为 38400

//TB1                                 = 00

//----表示编程电流 I /电压 P,b6, b5(0 based)表示电流I,低5位表示电压P

//----bit6,5 = 00 ,则编程电流 I 如下(单位mA)

//+-------+--------+--------+--------+--------+

//| 高2位 |   00   |   01   |   10   |   11   |

//+-------+--------+--------+--------+--------+

//| 电流I |   25   |   50   |   RFU  |   RFU  |

//+-------+--------+--------+--------+--------+

//----低5位 = 00 ,则编程 P 电压为0(单位V)

//----当P的范围为 5-25 时,表示编程电压,当P = 0时表示Vpp不连接到卡,而从Vcc直接生成内部编程电压,其他值保留

//TC1                                 = 00

//----额外保护时间N = 0

//--------额外保护时间N,表明两个同向字符的起始沿(英文原文 leading edges)之间至少要等待多少个etu

//--------                                                                        N

//--------当 N 范围为 0 - 254时,两个字符的起始沿之间的间隔最少 = 12 etu + Q × ─── 秒

//--------                                                                        f

//--------其中Q的取值如下,如果没有出现T = 15,Q = F / D(用于计算 etu的值)

//--------反之 Q = Fi / Di,f为读卡器时钟频率,常用3571200 HZ

//--------当N = 255时,则表示两个字符的起始沿之间的间隔在T = 0 时为12个etu,在 T = 1 时为11个etu。

//--------本例中,T = 1,额外保护时间为

//--------(F/D)*(N/f)秒,又因为1 etu = (F/D)*(1/f),所以额外保护时间就是 12 个etu

//TD1                                 = 81

//----TDi用来指明协议类型T和是否存在后续接口字符

//----TDi包含Yi+1与T两个部分,如果TDi不存在,那么TAi+1-TDi+1也不存在

//--------+---+---+---+---+---+---+---+---+

//--------| b7| b6| b5| b4| b3| b2| b1| b0|

//--------+---+---+---+---+---+---+---+---+

//--------|<---- Yi+1 --->|<----- T ----->|

//--------Yi+1是 1 0 0 0 ,表示存在TDi+1

//--------通讯协议 T = 1

//--------异步半双式分组传输协议

//--------------------

//没有TA2

//----没有TA2表示表示是协商模式,此时可以通过PPS来切换到专有模式

//没有TB2

//没有TC2

//没有TC2表示

//----TC2的值指出W1,表示由卡发送的两个相邻字符的起始沿的间隔不超过960 × (F/f) × W1这个最大值称为工作等待时间,W1默认为10

//TD2                                 = 31

//----TDi用来指明协议类型T和是否存在后续接口字符

//----TDi包含Yi+1与T两个部分,如果TDi不存在,那么TAi+1-TDi+1也不存在

//--------+---+---+---+---+---+---+---+---+

//--------| b7| b6| b5| b4| b3| b2| b1| b0|

//--------+---+---+---+---+---+---+---+---+

//--------|<---- Yi+1 --->|<----- T ----->|

//--------Yi+1是 0 0 1 1 ,表示存在TAi+1 TBi+1

//--------通讯协议 T = 1

//--------异步半双式分组传输协议

//--------------------

//TA3                                 = FE

//----未解析当没有出现T = 15的情况下,出现TAi(i > 2)时的案例

//TB3                                 = 45

//没有TC3

//没有TD3

//----------------------------------------

//65 46 53 07 01 00 71 C6 80 61 17

//----是历史字节

//----如果存在历史字节,且第一字节有等于00,10,或8X,则历史字节符合如下格式

//----否则,历史字节是专有格式

//----------+----------+-------------------------------------------------+

//----------|    00    | 状态信息出现在历史字节结束处,不在TLV中         |

//----------+----------+-------------------------------------------------+

//----------|    10    | 历史字节符合规范8.5部分规范                     |

//----------+----------+-------------------------------------------------+

//----------|    80    | 状态信息(如果存在)包含在任选的压缩TLV数据对象中 |

//----------+----------+-------------------------------------------------+

//----------|    8X    | RFU                                             |

//----------+----------+-------------------------------------------------+

//----------|    其他  | 专有的                                         |

//----------+----------+-------------------------------------------------+

//----------------------------------------

//TCK ( XOR T0 - TCK )                = D4     校验成功

稍加详细的ATR信息,将完善历史字节部分+的更多相关文章

  1. 工作流中的流程追溯!详细解析Activiti框架中的历史组件

    Activit中的历史简介 历史: Activiti中的一个组件,可以捕获发生在进程执行中的信息并永久的保存.与运行时数据不同的是,当流程实例运行完成之后它还会存在于数据库中 历史实体对象有5个: H ...

  2. 如何在sharepoint里通过correlation id查找详细的错误信息

    Sharepoint里我们经常遇到这样的错误信息: 我们能通过下面的power shell 命令来查到详细的错误信息: $correlationid = "943e6e9c-b5d9-207 ...

  3. python使用traceback获取详细的异常信息

    原创来自:https://blog.csdn.net/mengtao0609/article/details/55049059 python使用traceback获取详细的异常信息 2017年02月1 ...

  4. Ubuntu 16.04在启动和关机时不显示启动和关机画面且显示详细的命令信息,没有进度条和Logo,或者只有紫色界面,或者没有开机画面等问题解决

    主要有以下解决方法: 1.如果之前配置过Grub来显示详细的命令信息的,那么改回去就行了,参考:http://www.cnblogs.com/EasonJim/p/7129873.html,通过这种方 ...

  5. Microsoft OneScript 团队发布的最新一版在 SQL Server Management Studio 中运行的脚本,可以帮助我们获取更详细的版本信息。

    该脚本有以下几点: 1. SQL Server 的主要版本.服务级别和版本类别 2. 已安装SP包.累计更新CU,历史更新的QFE\ GDR 3. 推荐当前SP包可以安装最新的CU,并给到相关资源地地 ...

  6. Activiti系列:是否可以让某些流程的信息写到历史表,而另外一些不写?

    一.起因     打算使用activiti的定时启动事件来定时启动流程,然后再在该流程中针对每个用户启动另外一个流程实例来计算每个用户的实时账单,系统的用户数一般是1000~2000(此处假设是200 ...

  7. 让tp6显示详细的错误信息及行号

    方法一:默认情况下Ttp6不会显示错误信息,在开发环境下想要查看错误信息需要将Config目录下的app.php文件的show_error_msg改成true 但是这样显示的信息也不够完整, 要看到更 ...

  8. python traceback获取详细的异常信息

       运行结果 : 用try except 会报出报错信息,但是没有具体哪个地方报错,多少行,这样不利于查找报错信息 这时我们就可以使用traceback模块 运行结果:    如上图,报错信息会具体 ...

  9. python打印详细的异常信息

    #!/usr/bin/env python #coding=utf-8 import traceback try: 1/0 except Exception, e: print e print tra ...

随机推荐

  1. android 26 设置项目有多个入口Activity。

    第一个activity package com.sxt.day04_11; import android.os.Bundle; import android.app.Activity; import ...

  2. GDB踪函数的完整调用过程 及原理

    http://www.lenky.info/archives/2013/02/2202 Breakpoint , .so. (gdb) bt # .so. # .so. # .so. # .so. # ...

  3. Scope Chain(作用域链)

    本章,我们讨论一下ECMAScript中的作用域链 , 开门见山. 什么是作用域链 i.ECMAScript是允许创建内部函数的,甚至能从父函数中返回这些函数.作用域链正是内部上下文中所有变量对象(及 ...

  4. block没那么难(一):block的实现

    本系列博文总结自<Pro Multithreading and Memory Management for iOS and OS X with ARC> block 顾名思义就是代码块,将 ...

  5. Java基础知识强化之集合框架笔记28:ArrayList集合练习之去除ArrayList集合中的重复字符串元素(升级)

    1. 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同)     要求:不能创建新的集合,就在以前的集合上做. 2. 代码示例之 去除集合中重复元素,不创建新的集合: package ...

  6. linux系统时间同步更新

    linux中的时钟分为系统时钟和硬件时钟.硬件时钟通过bioss进行设置,系统时钟通过linux kernel进行设置.当linux启动时,bioss会读取系统时钟的时钟设置.在linux中涉及时间设 ...

  7. C#使用框架,打开新选项卡

    C#使用框架,打开新选项卡: --打开函数 function Open(text, url) {        if ($("#tabs").tabs('exists', text ...

  8. HTML5 autocomplete属性、表单自动完成

    autocomplete属性 1.定义autocomplete属性规范表单是否启用自动完成功能.自动完成允许浏览器对字段的输入,是基于之前输入的值.2.应用范围autocomplete使用<fo ...

  9. WPF TextElement内容模型简介(转)

    本内容模型概述描述了 TextElement 支持的内容. Paragraph 类是 TextElement 的类型. 内容模型描述哪些对象/元素可以包含在其他对象/元素中. 本概述汇总了派生自 Te ...

  10. one way WebService

    WSDL支持4种消息交换方式:   1)单向(One-way):服务端接收消息:   2)请求响应(Request-response):服务端点接收请求消息,然后发送响应消息:   3)要求应答(So ...