1. 程式人生 > >9-SIM資料互動之-F2(STATUS)

9-SIM資料互動之-F2(STATUS)

F2-STATUS

F2即讀取所處檔案的狀態資訊,F2只能對於MF/DF檔案有效,對於EF檔案是無效的,如果讀EF檔案,則返回的是其上一層DF的fcp。讀取的內容該指令一般當裝置撥上號後大概30秒左右就會有一次心跳資料,

F2指令比較固定:80 F2 P1 P2 XX(XX代表要讀取的長度) P1:

b8 b7 b6 b5 b4 b3 b2 b1 含義
0 0 0 0 0 0 0 0 無指示
0 0 0 0 0 0 0 1 當前的應用正在被初始化
0 0 0 0 0 0 1 0 終端將要終止當前應用

P2:

b8 b7 b6 b5 b4 b3 b2 b1 含義
0 0 0 0 0 0 0 0 與SELECT 命令相同
0 0 0 0 0 0 0 1 返回當前選擇應用的DFNAME TLV
0 0 0 0 1 1 0 0 無資料返回

注意:F2只能對於MF/DF檔案有效,對於EF檔案是無效的,如果讀EF檔案,則返回的是其上一層DF的fcp

1.正常讀取

指令格式:80 F2 00 00 XX

3F00

=>00 A4 00 04 02
<=A4 =>3F 00 <=61 2F =>80 F2 00 00 2F <=F2 622D8202782183023F00A50780017183024DB48A01058B062F0601020002C60F90016095010083010183018183010A 90 00

3F00->7F20

=>00 A4 00 04 02
<=A4
=>3F 00
<=61 2F
=>00 A4 00 04 02
<=A4
=>7f 20
<=61 1A
=>80 F2 00 00 1A 
<=F2 62188202782183027F208A01058B032F0602C606900100830101 90 00 

3F00->7F20->6F07

=>00 A4 00 04 02
<=A4
=>3F 00
<=61 2F
=>00 A4 00 04 02
<=A4
=>7f 20
<=61 1A
=>00 A4 00 04 02
<=A4
=>6F 07
<=61 19
=>80 F2 00 00 19 
<=F2 62188202782183027F208A01058B032F0602C6069001008301 61 01  //返回的其實還是,2F20的資料,所以直接用7F20的長度讀取
=>80 F2 00 00 1A 
<=F2 62188202782183027F208A01058B032F0602C606900100830101 90 00

指令格式:80 F2 00 0C 00

3F00

=>00 A4 00 04 02
<=A4
=>3F 00
<=61 2F
=>80 F2 00 0C 00
<=90 00

指令格式:80 F2 01 01 XX

3F00

=>00 A4 00 04 02
<=A4
=>3F 00
<=61 2F
=>80 F2 01 01 12
<=F2 8410A0000000871002FF86FFFF89FFFFFFFF 90 00

AID,即2F00的B2記錄中的一段 2F00 B2

=>00 A4 00 04 02
<=A4
=>3F 00
<=61 2F
=>00 A4 00 04 02
<=A4
=>2F 00
<=61 1C
=>00 b2 01 04 26
<=B2 61244F10A0000000871002FF86FFFF89FFFFFFFF5010434D43435744374D503176322E302020 90 00

2.讀取少於原有記錄長度

雖然F2讀取的內容和C0讀取的一樣,都是fcp。但是不像C0的讀取,沒讀取完需要接著讀取剩餘的位元組數,而是你要讀多少就給你多少,然後告訴你剩餘多少就行了。

=>00 A4 00 04 02
<=A4
=>3F 00
=>80 F2 00 00 20 
<=F2 622D8202782183023F00A50780017183024DB48A01058B062F0601020002C60F 61 0F //還剩餘0F的長度沒有讀取完成
=>80 F2 00 00 0F 
<=F2 622D8202782183023F00A507800171 61 20 //還剩餘20的長度沒有讀取完成

3.讀取多於/00原有資料

=>00 A4 00 04 02
<=A4
=>3F 00
=>80 F2 00 00 00 
<=6C 2F  //返回資料長度
=>80 F2 00 0C 00
<=6C 2F  //返回資料長度
=>80 F2 00 00 2F 
<=F2 622D8202782183023F00A50780017183024DB48A01058B062F0601020002C60F90016095010083010183018183010A 90 00