เขียนโปรแกรม Python เชื่อมต่อเครื่องพิมพ์บัตร
![](https://www.novelbiz.co.th/wp-content/uploads/2025/02/python-hitics200.png)
HiTi CS-200e เป็นเครื่องพิมพ์บัตรพลาสติกแบบ Direct-to-Card (DTC) ที่ใช้ความร้อนในการพิมพ์หมึกลงบนพื้นผิวบัตร PVC โดยตรง เหมาะสำหรับการพิมพ์บัตรพนักงาน บัตรนักเรียน บัตรสมาชิก และบัตรประจำตัวอื่น ๆ
คุณสมบัติหลักของ HiTi CS-200e
- เทคโนโลยีการพิมพ์: Direct-to-Card (DTC)
- ความละเอียดการพิมพ์: 300 dpi
- ความเร็วการพิมพ์:
- พิมพ์สี (YMCKO) ประมาณ 21 วินาที/ใบ
- พิมพ์ขาวดำ ประมาณ 4.5 วินาที/ใบ
- รองรับบัตร: ขนาดมาตรฐาน CR-80 (85.6 x 54 mm)
- การพิมพ์สองหน้า: ต้องกลับบัตรเอง (Manual Duplex)
- การเชื่อมต่อ: USB 2.0 (บางรุ่นอาจรองรับ Ethernet)
- ซอฟต์แวร์ที่รองรับ: มีไดรเวอร์สำหรับ Windows และอาจมี SDK สำหรับพัฒนาโปรแกรมเพิ่มเติม
การใช้งาน
เครื่องนี้สามารถใช้งานร่วมกับซอฟต์แวร์ออกแบบบัตร เช่น HiTi Card Desiree หรือโปรแกรมอื่น ๆ ที่รองรับเครื่องพิมพ์บัตรทั่วไป นอกจากนี้ยังสามารถพัฒนาโปรแกรมควบคุมการพิมพ์บัตรเองได้ผ่าน SDK หากต้องการใช้ร่วมกับระบบอื่น ๆ เช่น การพิมพ์บัตรนักเรียนหรือบัตรพนักงานอัตโนมัติ
Code Python เพื่อควบคุม
เนื่องจาก HiTi CS-200e เป็นเครื่องพิมพ์บัตรพลาสติกที่ทำงานผ่านไดรเวอร์ Windows และมักใช้การพิมพ์ผ่านคำสั่ง Windows Print API หรือ Direct Printing ผ่าน SDK, เราสามารถใช้ Python ควบคุมการพิมพ์ได้โดยใช้ไลบรารี
win32print
และ
PIL
(Pillow) เพื่อเตรียมภาพที่ต้องการพิมพ์
วิธีพิมพ์บัตรโดยใช้ Python ผ่าน Windows API
import win32print
import win32ui
from PIL import Image, ImageWin
# เลือกเครื่องพิมพ์ HiTi CS-200e
printer_name = "HiTi CS-200e"
hprinter = win32print.OpenPrinter(printer_name)
printer_info = win32print.GetPrinter(hprinter, 2)
pdc = win32ui.CreateDC()
pdc.CreatePrinterDC(printer_name)
# โหลดภาพที่ต้องการพิมพ์
image_path = "card_design.png" # เปลี่ยนเป็นพาธของภาพที่ต้องการพิมพ์
img = Image.open(image_path)
# ตั้งค่าขนาดภาพให้พอดีกับขนาดบัตร (CR-80: 85.6 x 54 mm)
width, height = 1011, 638 # พิกเซล (ขึ้นอยู่กับ 300 dpi)
img = img.resize((width, height))
# เริ่มการพิมพ์
pdc.StartDoc("Print ID Card")
pdc.StartPage()
dib = ImageWin.Dib(img)
dib.draw(pdc.GetHandleOutput(), (0, 0, width, height))
pdc.EndPage()
pdc.EndDoc()
pdc.DeleteDC()
win32print.ClosePrinter(hprinter)
print("พิมพ์บัตรเรียบร้อยแล้ว!")
Code language: Python (python)
อธิบายการทำงานของโค้ด
- เลือกเครื่องพิมพ์ – ใช้
win32print.OpenPrinter()
เพื่อเลือกเครื่องพิมพ์ HiTi CS-200e - โหลดภาพบัตร – ใช้
PIL.Image.open()
โหลดภาพที่ต้องการพิมพ์ - กำหนดขนาดบัตร – ปรับภาพให้พอดีกับขนาดมาตรฐานของบัตร (CR-80: 85.6 x 54 mm)
- สั่งพิมพ์ภาพลงบนบัตร – ใช้
win32ui.CreateDC()
เพื่อสร้างหน้าการพิมพ์ และใช้ImageWin.Dib().draw()
วาดภาพลงในเอกสารการพิมพ์ - เริ่มและจบการพิมพ์ – ใช้
StartDoc()
,StartPage()
,EndPage()
,EndDoc()
เพื่อดำเนินการพิมพ์
2. ถ้าต้องการพิมพ์ผ่านคำสั่ง Windows (Raw Printing)
หากต้องการส่งคำสั่งไปที่เครื่องพิมพ์โดยตรง (Raw Printing) สามารถใช้
win32print.WritePrinter()
ได้ เช่น
import win32print
printer_name = "HiTi CS-200e"
hprinter = win32print.OpenPrinter(printer_name)
hprinter_handle = win32print.StartDocPrinter(hprinter, 1, ("Print ID Card", None, "RAW"))
win32print.StartPagePrinter(hprinter)
# ส่งคำสั่ง RAW (ขึ้นอยู่กับ SDK ของ HiTi)
data = b'\x1B\x40' # ตัวอย่างคำสั่ง ESC/P สำหรับรีเซ็ตเครื่องพิมพ์
win32print.WritePrinter(hprinter, data)
win32print.EndPagePrinter(hprinter)
win32print.EndDocPrinter(hprinter)
win32print.ClosePrinter(hprinter)
print("ส่งคำสั่งไปยังเครื่องพิมพ์แล้ว!")
Code language: Python (python)
✅ วิธีนี้ใช้สำหรับพิมพ์ผ่านโค้ดที่ต้องส่งไปยังเครื่องพิมพ์โดยตรง เช่น คำสั่ง ESC/P หรือ ZPL ซึ่งอาจต้องดู SDK ของ HiTi CS-200e เพิ่มเติม
3. ถ้าต้องการใช้ SDK ของ HiTi CS-200e
HiTi มี SDK สำหรับพัฒนาแอปพลิเคชันพิมพ์บัตร สามารถดาวน์โหลดและใช้
ctypes
หรือ
win32com
ควบคุม API ของ SDK ได้โดยตรง เช่น
import ctypes
hiti_dll = ctypes.WinDLL("HiTi_SDK.dll") # โหลด SDK DLL ของ HiTi
hiti_dll.PrintCard("card_design.png") # ส่งไฟล์ภาพไปพิมพ์ (สมมติว่ามีฟังก์ชันนี้ใน SDK)
Code language: Python (python)
หากต้องการใช้วิธีนี้ คุณต้อง ดาวน์โหลด SDK จาก HiTi และศึกษาวิธีเรียก API ของ SDK
สรุป
✅ ถ้าพิมพ์บัตรแบบปกติ → ใช้
win32print
+
PIL
เพื่อสั่งพิมพ์ภาพลงบัตร
✅ ถ้าพิมพ์ผ่านคำสั่งดิบ (Raw Command) → ใช้
win32print.WritePrinter()
ส่งคำสั่งไปยังเครื่องพิมพ์โดยตรง
✅ ถ้าใช้ SDK ของ HiTi → ต้องดาวน์โหลด SDK และใช้
ctypes
หรือ
win32com
เรียก API