Sunday, August 30, 2015

Koneksi Thermal Printer POS LAN/Ethernet ke Linux (OpenWRT)

Beberapa waktu lalu saya sempat mendapat proyek yang mengharuskan saya menghubungkan sebuah miniPC berbasis Linux agar dapat langsung terhubung ke Printer Epson (Thermal Printer) melalui LAN.

Thermal Printer POS (EPPOS)

Thermal Printer POS dengan antarmuka Ethernet/LAN

Memang cukup banyak sekali tutorial yang disediakan agar sistem operasi Linux dapat terhubung ke printer melalui jaringan Ethernet. Akan tetapi hampir semua tutorial itu menggunakan salah satu PC sebagai printer server, dan printer terhubung ke PC server melalui koneksi USB. Hal ini tentu saja sedikit berbeda dengan sistem yang ingin saya kembangkan. Berikut ini ilustrasi alur yang ingin saya kembangkan.

Thermal Printer POS ke PC melaui LAN

Thermal Printer POS ke PC melalui Router
Pada awalnya, coba saya mengirimkan perintah secara langsung melalui raw data TCP dengan menggunakan perintah ESC/POS. Pilihan software yang saya gunakan adalah netcat.
Karena OpenWRT yang saya gunakan tidak menyediakan netcat pada awal install, maka saya coba untuk install terlebih dahulu.


opkg install netcat

Kemudian saya coba kirimkan data ke printer (IP Printer 192.168.1.87 dan port standar 9100).


echo "Rattonics" | nc 192.168.1.87 9100

Wow..printer langsung merespon dengan mencetak kalimat Rattonics.

Hasil cetak Thermal Printer dari OpenWRT dengan mengguankan netcat

Kemudian muncul kendala lainya, kalau ingin mengiriman perintah untuk mencetak barcode, atur font, dll, pasti akan susah kalau hanya pakai perintah "echo". Setelah mencari beberapa jam dengan mengubah kata kunci beberapa kali, akhirnya saya temukan sebuah blog yang memberikan pencerahan dari masalah ini.
http://mike.bitrevision.com/blog/2014-10-26-setting-up-an-epson-receipt-printer

Pada tutorial ini memang dia menggunakan printer Epson TM-T28II, sedangkan saya menggunakan EPPOS EP 80 USL. Berbeda memang, akan tetapi kedua printer ini sama-sama mendukung perintah ESC/POS. Oleh karena itu, saya mencoba untuk langsung mencoba dengan menggunakan kode program yang dia berikan.

Wow...Magic....ternyata o'on juga ya saya....wkwkkwkwkk...
Kenapa ya tidak terpikirkan oleh saya jika menggunakan sebuah logika pemrograman untuk membantu mencetak karakter2 yang dipelukan pada ESC/POS.

Pada blog tersebut menggunakan pemrorgaman php, akan tetapi saya coba ganti dengan menggunakan python. Berikut ini contoh kode program jika dipindah ke python dengan nama file "print.py"

#!/usr/bin/python

# ASCII constants
ESC = "\x1b"
GS="\x1d"
NUL="\x00"

# Output an example receipt
print ESC+"@"     # Reset to defaults
#print ESC+"E"+chr(1)    # Bold
print "Rattonics"    
print "Barrier Gate System"   

print GS+"k"+chr(4)+"123456"+NUL  # Print barcode
#print "123456"    # Print number
print GS+"V\x41"+chr(3)    # Cut

Kemudian panggil program python tersebut dengan perintah :


python print.py | nc -c 192.168.1.87 9100

atau (file print.py harus executable)


./print.py | nc -c 192.168.1.87 9100

Berikut ini hasil cetaknya :
Hasil cetak thermal printer dengan bantuan python
Bagaimana, mudah bukan?
Selamat berkreasi..!!!

0 comments:

Post a Comment