การดึงข้อมูลจากบัตรประชาชนด้วยภาษา java

ตอนนี้ผมกำลังเขียนการอ่านข้อมูลในส่วนของ public ด้วยภาษา Java อยู่ ใครพอจะมี source code ที่พอที่จะสามารถแบ่งปันได้รบกวนหน่อยครับ
ตัวอย่าง source code java

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication1;

import java.util.List;
import javax.smartcardio.*;

/**
*
* @author admin
*/
public class JavaApplication1 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        try{
            // show the list of available terminals
            TerminalFactory factory = TerminalFactory.getDefault();

            List<CardTerminal> terminals = factory.terminals().list();

            System.out.println("Terminals: " + terminals);
            
            // get the first terminal
            CardTerminal terminal = terminals.get(0);

            // establish a connection with the card
            Card card = terminal.connect("*");
            System.out.println("card: " + card);
        
            // get the ATR
            ATR atr = card.getATR();
            byte[] baAtr = atr.getBytes();

            System.out.print("ATR = 0x");
            for(int i = 0; i < baAtr.length; i++ ){
                System.out.printf("X ",baAtr);
            }

            CardChannel channel = card.getBasicChannel();
            byte[] cmdApduGetCardUid = new byte[]{
            (byte)0xFF, (byte)0xCA, (byte)0x00, (byte)0x00, (byte)0x00};
            
            ResponseAPDU respApdu = channel.transmit(
            new CommandAPDU(cmdApduGetCardUid));

            if(respApdu.getSW1() == 0x90 && respApdu.getSW2() == 0x00){

                byte[] baCardUid = respApdu.getData();

                System.out.println("Card UID = 0x");
                for(int i = 0; i < baCardUid.length; i++ ){
                    System.out.printf("X ", baCardUid );
                }
            }    

        card.disconnect(false);

        } catch (CardException e) {
         e.printStackTrace();
        }
    }
    
}
=============================================================================

ในบรรทัด
if(respApdu.getSW1() == 0x90 && respApdu.getSW2() == 0x00)

คำถาม
1. ลอง print ออกมาดูแล้ว SW1 ไม่เท่ากับ 0x90 เลยไม่เข้าเงื่อนไขทำให้ไม่สามารถเข้าไปทำในเงื่อนไขภายในได้
2. มี link หรือตัวอย่างการดึงข้อมูล public ในบัตรประชาชนที่ไหนบ้างครับ ที่พอจะสามารถนำมาใช้งานได้

ขอบคุณครับ ยิ้ม
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 2
https://ppantip.com/topic/36885937
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่