我用STM32F103R8T6读取SIM卡,用的程序是官网的智能卡库,卡是联通卡。 现在读SIM卡数据正常,读ICCID有问题不明白 /* Read Binary in ICCID --------------------------------------------------*/ if(SC_Responce.SW1 == SC_EF_SELECTED) //9F { SC_ADPU.Header.CLA = SC_CLA_GSM11; //A0 SC_ADPU.Header.INS = SC_READ_BINARY; //B0 SC_ADPU.Header.P1 = 0x00; SC_ADPU.Header.P2 = 0x00; SC_ADPU.Body.LC = 0x00; SC_ADPU.Body.LE = 10; SC_Handler(&SCState, &SC_ADPU, &SC_Responce); } /* Select GSMDir ---------------------------------------------------------*/ if(((SC_Responce.SW1 << 8) | (SC_Responce.SW2)) == SC_OP_TERMINATED) //9000 { /* Copy the ICCID File content into ICCID_Content buffer */ for(i = 0; i < SC_ADPU.Body.LE; i++) { ICCID_Content = SC_Responce.Data; } for(i = 0; i < SC_ADPU.Body.LE; i++) { USART_SendData(USART1,ICCID_Content); //98 68 00 16 51 40 02 83 52 19 delay1(2); } 读了10个字节,数据是98 68 00 16 51 40 02 83 52 19 可是手机卡上的ICCID是8986,0112,8170,4100,187w。 我怎么对都对不上?是不是哪儿有问题?谢谢! |
这个和UDP发信息是一样的,号码字节高低位相反。没有具体读取过SIM卡的这个号码。网上搜的资料:
http://blog.csdn.net/hejianhua/article/details/5492399
没错,读出来的 98 68 00 16 51 40 02 83 52 19 是16进制, 变成2进制, 高四位与第四位互换, 再变回 16进制, 得到的就是 SIM卡背面的数字了。-------------------------------又想了一下, 发现有点不对,,, 所以前面说的作废。。。