问题是这样的:
当手机执行Fetch命令后,还未等到terminal response指令时,手机就收到envelope数据包。
(envelope命令返回状态为9000)。按照Envelope命令,卡应该要有响应数据的。
这时候上一条的Fetch命令的terminal response执行后,它的返回状态为91XX,这个XX是卡对Envelope命令的响应数据吗?还是Envelope根本没有执行,因为调用Envelope的解释器跟Fetch处于同一堆栈中。另外一个问题时:返回的91XX,XX在卡中是如何存储的?假如第一条命令执行后,返回91XX,但手机并没有Fetch,这时候执行第二条命令,也返回91XX,如果手机Fetch,Fetch到的是第一条的XX,还是第二条的XX。本人对手机芯片并不懂,希望大侠们能不吝赐教。小弟感激不尽!

解决方案 »

  1.   

    当手机执行Fetch命令后,还未等到terminal response指令时,手机就收到envelope数据包。
    ---------------------------------
    卡应该返回9300(STK忙),并退出到开始菜单才正确,反9000也说的过去。
      

  2.   

    有数据你不fetch,再次执行terminal response的时候,卡照样会执行操作,操作结果可能是卡进行判断已经处于STK中并返回9300,也有可能丢弃原来的结果,返回最后的结果,由于卡内ram有限,一般只能存一条结果,所以,(一般)就是最后那一条XX。有的卡会根据command number来进行区别,大部分卡是不会的。
      

  3.   

    1 Envelope命令返回9000,是不是卡没有处理Envelope这条命令,只有当卡收到Fetch命令的terminal response后,再去处理Envelope?2 按您说的卡内RAM有限,一般只能存一条结果,如果卡没有产生新的结果数据,那最后的那条数据应该是一直保留着吧,会不会被卡清空掉?
      

  4.   

    1)envelope返回9000,就是卡对envelope指令的执行结果,绝不是没处理这条指令。
    2)如果没有执行过fetch指令,数据是否会保留一般由卡自己决定,大部分时候是不会被冲掉的。