การเขียน Program เชื่อมต่อ Smart Card Reader พร้อมการตรวจสอบสถานะต่างๆ
ในการเขียนโปรแกรมเชื่อมต่อ Smart Card Reader และตรวจสอบสถานะต่าง ๆ ของอุปกรณ์ด้วย Python สามารถทำได้โดยใช้ไลบรารีที่ชื่อว่า pyscard ซึ่งเป็นไลบรารีที่รองรับการทำงานกับ Smart Card และ Smart Card Reader ในระบบต่าง ๆ โดยละเอียดสามารถทำตามขั้นตอนดังนี้:

ขั้นตอนที่ 1: การติดตั้ง pyscard
ก่อนอื่นให้ติดตั้งไลบรารี pyscard โดยใช้คำสั่งด้านล่าง:
pip install pyscard
Code language: Python (python)ขั้นตอนที่ 2: การเขียนโปรแกรมเชื่อมต่อ Smart Card Reader
เมื่อทำการติดตั้งเสร็จแล้ว คุณสามารถใช้โค้ดนี้เพื่อเชื่อมต่อกับ Smart Card Reader และตรวจสอบสถานะของอุปกรณ์ได้:
from smartcard.System import readers
from smartcard.Exceptions import NoCardException
from smartcard.util import toHexString
# ตรวจสอบว่ามี Smart Card Reader เชื่อมต่ออยู่หรือไม่
def connect_reader():
    try:
        reader_list = readers()
        if not reader_list:
            print("ไม่พบ Smart Card Reader ที่เชื่อมต่ออยู่")
            return None
        print(f"พบ Reader: {reader_list[0]}")
        return reader_list[0]
    except Exception as e:
        print(f"เกิดข้อผิดพลาดในการเชื่อมต่อ: {e}")
        return None
# ฟังก์ชันสำหรับอ่านข้อมูลจากการ์ด
def read_card(reader):
    connection = reader.createConnection()
    try:
        connection.connect()
        print("เชื่อมต่อกับ Smart Card สำเร็จ")
        
        # ส่งคำสั่ง APDU ไปยังการ์ดเพื่ออ่านข้อมูล (ตัวอย่าง)
        # คำสั่งนี้ขึ้นอยู่กับชนิดของการ์ดที่ใช้และการอ่านข้อมูลที่ต้องการ
        apdu_command = [0x00, 0xA4, 0x04, 0x00, 0x00]  # APDU Command ตัวอย่าง
        data, sw1, sw2 = connection.transmit(apdu_command)
        print("ข้อมูลที่อ่านได้:", toHexString(data))
        print(f"สถานะการ์ด: {hex(sw1)} {hex(sw2)}")
    except NoCardException:
        print("ไม่มีการ์ดใน Reader")
    except Exception as e:
        print(f"เกิดข้อผิดพลาดในการอ่านข้อมูลจากการ์ด: {e}")
    finally:
        connection.disconnect()
# ตัวอย่างการใช้งาน
reader = connect_reader()
if reader:
    read_card(reader)
Code language: Python (python)อธิบายโค้ดทีละขั้นตอน
- ฟังก์ชัน connect_reader(): ฟังก์ชันนี้จะตรวจสอบว่า Smart Card Reader เชื่อมต่ออยู่หรือไม่ หากเชื่อมต่ออยู่ จะคืนค่าตัวอ่าน (reader) ที่พบตัวแรก
- ฟังก์ชัน read_card(reader): ฟังก์ชันนี้ใช้เชื่อมต่อกับการ์ด หากมีการ์ดอยู่ใน Reader จะส่งคำสั่ง APDU เพื่ออ่านข้อมูลจากการ์ด ตัวอย่างนี้ใช้คำสั่งAPDUที่เป็นค่าทั่วไป ซึ่งอาจต้องปรับแต่งตามรูปแบบของการ์ดและข้อมูลที่ต้องการอ่าน
- การจัดการข้อผิดพลาด: มีการตรวจสอบข้อผิดพลาดเช่น ไม่มี Reader หรือไม่มีการ์ดอยู่ใน Reader เป็นต้น เพื่อให้โปรแกรมทำงานได้ราบรื่นขึ้น






