Dalam
artikel sebelumnya, saya menjelaskan secara singkat firmware saya untuk CTK SHTRIH-FR-K, yang memungkinkan Anda untuk mengontrol kepala termal, mesin dan, karenanya, mencetak apa pun. Pada bagian ini saya akan menunjukkan cara menulis perangkat lunak yang akan berkomunikasi dengan kasir dan memformat gambar untuk dicetak.

Mari kita mulai dengan menjelaskan paket yang kita butuhkan.
import cv2 import numpy as np import serial
cv2 - perpustakaan visi komputer OpenCV. Dibutuhkan semua beban memasukkan dan memformat gambar.
numpy adalah perpustakaan untuk bekerja dengan array. OpenCV tidak akan berfungsi tanpanya.
serial - pustaka untuk bekerja dengan PC com-port.
ser = serial.Serial('COM5', 9600, write_timeout=1, timeout=0.1)
Inisialisasi perpustakaan pada 9600 bps.
frame1 = cv2.imread('ars2.jpg')
Fungsi yang mengunduh gambar dari hard drive.
height = frame1.shape[0]//(frame1.shape[1]//432) frame1 = cv2.resize(frame1, (432,height), interpolation = cv2.INTER_AREA)
Fungsi mengubah gambar ke ukuran yang diberikan.
grayscaled1 = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY) ret,thresh1 = cv2.threshold(grayscaled1,127,255,cv2.THRESH_BINARY) img_bin = thresh1/255
Baris pertama membuat gambar hitam dan putih. Yang kedua melakukan binarisasi. Binarisasi - intinya adalah untuk mengubah gambar menjadi sebuah array di mana setiap piksel akan memiliki nilai 1 atau 0. Mesin kasir tidak dapat dilakukan dalam nuansa hitam, sehingga pemrosesan ini diperlukan. Dalam fungsi ini, semua piksel dengan nilai kurang dari 127 akan menjadi 0, lebih besar dari 1.
for n in range(img_bin.shape[0]): for m in range(img_bin.shape[1]):
Kode ini mengubah setiap baris menjadi satu set byte. Yaitu mengambil delapan piksel pertama dari sebuah string dan mengubahnya menjadi byte. Kemudian dibutuhkan 8 berikutnya dari baris yang sama dan mengubahnya menjadi byte.
while i: while u!=1: u = ser.write( b'P') u=0 ff=ser.read(1) if ff==b'B': i=0
Mulai transfer. Jika tidak ada respons yang diterima maka jangan mulai.
i=54 while i: while u!=1:
Mengirim garis dengan tanda centang untuk melihat apakah gambar sudah selesai.
if h==2: low=low+54 h=0
Satu fitur kecil. Jika gambar dikirim untuk dicetak apa adanya, tinggi gambar akan berkurang setengahnya. Ini disebabkan oleh pitch mesin. Tentu saja, Anda bisa melakukan dua langkah sekaligus, tetapi kemudian gambar akan redup.
while i: ff = ser.read(1)
Kami sedang menunggu huruf D untuk disinkronkan. Ini berarti bahwa mesin telah mencetak garis dan siap menerima data.
Tautan ke sumber
github.com/beetlea/shtrih-m-fr-kNah, di sini Anda memiliki vidosiki. Sayangnya, video itu sendiri dengan segel Keanu tidak bertahan.