def cetak_barcode_128(data_angka):
# Header ESC/P2 untuk Barcode
ESC = b'\x1b'
header = ESC + b'(B'
# Parameter Konfigurasi:
k = 8 # Code 128
m = 2 # Lebar modul (2 atau 3 untuk Dot Matrix)
s = 0 # Space adjustment
v1 = 40 # Tinggi barcode (40/180 inch)
v2 = 0 # High byte untuk tinggi
c = 0 # Check digit otomatis oleh printer
# Gabungkan parameter awal (k, m, s, v1, v2, c) = 6 bytes
# Beberapa manual printer hanya butuh k, m, s, v1, v2 (5 bytes)
# Kita gunakan standar 6 bytes untuk ESC/P2 modern
param_list = [k, m, s, v1, v2, c]
params = bytes(param_list)
# Hitung nL dan nH (Total bytes setelah nH)
total_bytes = len(params) + len(data_angka)
nL = total_bytes % 256
nH = total_bytes // 256
# Susun perintah lengkap
full_command = header + bytes([nL, nH]) + params + data_angka.encode('ascii')
return full_command
# Contoh Penggunaan:
data = "1234567890123456789012" # 22 Digit
perintah_printer = cetak_barcode_128(data)
print(f"Total Byte dikirim: {len(perintah_printer)}")
# Kirim perintah_printer ke port /dev/usb/lp0 atau LPT1