
Sebuah pencarian kecil untuk mengganti printer pesanan dapur di restoran dengan monitor 24 "dengan pesanan raspberryPi pada malam hari. Hal ini berlaku untuk hampir semua sistem erp (semua sistem 1C modern dalam printer resi peralatan komersial mendukung printer, seperti halnya dengan sistem lain).
Komentar
Di restoran dan kafe, printer pesanan (printer "merek") paling sering digunakan untuk mencetak pesanan di dapur. Ini adalah printer termal kecil (kerabat register kas), tetapi tanpa drive fiskal, dan mereka paling sering memiliki satu tombol - pita berliku. Sebelumnya, printer termal terutama terhubung ke sistem seperti FrontOffice melalui port COM, tetapi sekitar 10 tahun yang lalu situasinya berubah, dukungan Ethernet muncul di printer.
Pengalaman
Printer yang ditemukan dalam karya pabrikan Shtrikh-M, Posiflex, Sam4s, dari jenis yang sama, mereka menggunakan protokol RAW (One-way Protocol) untuk mencetak. Mereka memiliki server web kecil dengan pengaturan untuk kecepatan cetak, spesifikasi port, pengkodean, fungsionalitas tambahan, dan pengaturan jaringan. Beberapa model memiliki kemampuan untuk menghubungkan pemindai barcode untuk pemberitahuan tentang kesiapan piring (mengirim barcode ke jaringan). Biaya untuk hari ini untuk model anggaran dimulai dari 10 tr. dan dapat mencapai hingga 30 tr pada Epson. Harapan hidup dalam penggunaan intensif dari beberapa tahun. Penyebab utama kegagalan adalah kerusakan pada pemotong kertas, pelumas (menutupi printer di bagian luar dan sebagian mekanisme di dalam), kegagalan kepala termal, pengeringan rol dan roda gigi plastik, dan printer dibanjiri cairan. Perbaikan dan penggantian elemen adalah 50% dari biaya printer, ditambah, tentu saja, bahan habis pakai adalah kertas termal.
Tantangan
Jadi, sesuai dengan dapur dan administrasi, alih-alih printer termal yang gagal berikutnya, monitor dengan raspberry pi 3 B dengan kartu SD 2 GB dipasang.
Tugas utama adalah untuk tidak membuat perubahan pada sistem FrontOffice, dan untuk perangkat lunak tidak berbeda dari printer kwitansi / pesanan.Perangkat lunak pelayan FrontOffice Shtrikh-M, Shtrih-600 ditetapkan sebagai printer pesanan. Sebelumnya, ketika printer Rusia berubah menjadi Korea, ternyata halaman kode tempat paket dikirimkan adalah Windows-1251 port 9100.
Pemilihan dan pengaturan OS
Karena mini-PC akan menjadi Raspberry Pi 3 Model B, kami akan menerapkan di dalamnya sistem
Raspbian Stretch Lite yang ringan.
Kami akan melakukan sedikit penyetelan: kami akan mengirimkan manajer jendela openbox, manajer login LightDM ke sistem, mengkonfigurasi login otomatis, menyembunyikan log unduhan.
Sedikit analisis
Selanjutnya, kita akan membangun server soket sederhana untuk mengetahui bagaimana informasi dikodekan dalam paket, dan apa yang umumnya dikirim ke printer termal di sana.
Perangkat lunak FrontOffice mengirimkan data dalam satu paket di mana paket khusus terbang. karakter sebelum dan sesudah bagian utama. Informasi referensi tentang font dan ukurannya dikodekan dengan karakter yang tidak ada dalam utf8 encoding. Setiap baris diikuti oleh / r / n. Dimungkinkan untuk menulis fungsi yang memfilter karakter khusus, tetapi kami memiliki satu malam, dan pada "tanda" awalnya dipisahkan dengan sangat baik oleh serangkaian tanda bintang, yang diakhiri oleh serangkaian karakter minus. Tambahkan kruk, buang karakter khusus di awal dan akhir, decode di utf8. Di jendela konsol kita mendapatkan tanda terima, seperti ketika mencetak pada "tanda" dari printer.
Arsitektur Aplikasi Masa Depan
Mari kita lihat arsitektur aplikasi.
- Server soket yang terus-menerus menunggu penerimaan.
- Server web.
- Aplikasi tampilan adalah browser dengan layar penuh.
- Sistem pesan antara server soket dan server web.
Produksi
Kami akan menyelesaikan poin pertama dan keempat dengan menambahkan server soket yang dijelaskan di atas - redis - dengan penyimpanan nilai kunci, dengan memperhatikan peningkatan di masa mendatang (saluran - langganan), di sepanjang jalan kami akan mengurangi keausan kartu sd. Dan menambahkan sinyal - pemberitahuan tentang kedatangan pesanan baru, kami akan bermain melalui HDMI pada kolom monitor. Output suara diaktifkan melalui raspi-config.
Pada paragraf kedua, kami akan mengunggah server web ke labu dengan perpanjangan otomatis setiap 15 detik (untuk sekarang ini adalah pilihan termudah), dalam daftar tugas kami akan menandai socketio dan antriannya mungkin seledri atau pada redis. Kami memilah-milah semua pasangan nilai kunci yang tersedia dan menampilkannya di halaman. Dengan mengklik pada "merek" kami akan menghapus masing-masing dari redis dan dari desktop.
Tambahkan template jinja
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="refresh" content="30"/> <title> </title> <link href="http://fonts.googleapis.com/css?family=Reenie+Beanie:regular" rel="stylesheet" type="text/css"> </head> <body> <ul> {% for key in di %} <li> <a href="/del/{{key}}"> {% for item in di[key].splitlines() %} <p>{{ item }}</p> {% endfor %} </a> </li> {% endfor %} </ul> </body> </html>
Ada item 3, kita akan membuat browser paling minim tanpa tombol 13 baris.
import sys from PySide import QtCore, QtGui, QtWebKit class MainWindow(QtGui.QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.showFullScreen() self.web = QtWebKit.QWebView(self) self.web.load(QtCore.QUrl('http://127.0.0.1:5000')) self.setCentralWidget(self.web) app = QtGui.QApplication(sys.argv) main_window = MainWindow() main_window.show() sys.exit(app.exec_())
Selanjutnya, Anda perlu membuat layanan untuk menjalankan semua skrip yang ditulis di atas.
Atau dengan cepat mendaftarkannya di file openbox autostart.