Dans un
article précédent, j'ai brièvement décrit mon firmware pour le CTK SHTRIH-FR-K, qui vous permet de contrôler la tête thermique, les moteurs et, en conséquence, d'imprimer quoi que ce soit. Dans cette partie, je montrerai comment écrire un logiciel qui communiquera avec le caissier et formatera l'image pour l'impression.

Commençons par décrire les packages dont nous avons besoin.
import cv2 import numpy as np import serial
cv2 - Bibliothèque de vision par ordinateur OpenCV. Il faut tout le fardeau de la saisie et du formatage de l'image.
numpy est une bibliothèque pour travailler avec des tableaux. OpenCV ne fonctionnera pas sans lui.
serial - bibliothèque pour travailler avec le port com du PC.
ser = serial.Serial('COM5', 9600, write_timeout=1, timeout=0.1)
Initialisation de la bibliothèque à 9600 bps.
frame1 = cv2.imread('ars2.jpg')
Une fonction qui télécharge une image depuis un disque dur.
height = frame1.shape[0]//(frame1.shape[1]//432) frame1 = cv2.resize(frame1, (432,height), interpolation = cv2.INTER_AREA)
La fonction de changer l'image à une taille donnée.
grayscaled1 = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY) ret,thresh1 = cv2.threshold(grayscaled1,127,255,cv2.THRESH_BINARY) img_bin = thresh1/255
La première ligne rend l'image en noir et blanc. Le second fait la binarisation. Binarisation - l'essentiel est de transformer une image en un tableau où chaque pixel aura une valeur de 1 ou 0. La caisse enregistreuse ne peut pas être réalisée dans des tons de noir, donc ce traitement est nécessaire. Dans cette fonction, tous les pixels d'une valeur inférieure à 127 seront 0, supérieur à 1.
for n in range(img_bin.shape[0]): for m in range(img_bin.shape[1]):
Ce code transforme chaque ligne en un ensemble d'octets. C'est-à-dire prend les huit premiers pixels d'une chaîne et les transforme en octets. Ensuite, il prend les 8 suivants de la même ligne et les transforme en octets.
while i: while u!=1: u = ser.write( b'P') u=0 ff=ser.read(1) if ff==b'B': i=0
Début du transfert. Si aucune réponse n'est reçue, ne démarrez pas.
i=54 while i: while u!=1:
Envoi d'une ligne avec un chèque pour voir si l'image est terminée.
if h==2: low=low+54 h=0
Une petite fonctionnalité. Si l'image est envoyée pour l'impression telle quelle, la hauteur de l'image sera réduite de moitié. Cela est dû au pas du moteur. Bien sûr, vous pouvez faire deux étapes à la fois, mais l'image sera alors sombre.
while i: ff = ser.read(1)
Nous attendons la synchronisation de la lettre D. Cela signifie que la machine a imprimé une ligne et est prête à recevoir des données.
Lien vers les sources
github.com/beetlea/shtrih-m-fr-kEh bien, vous avez ici le vidosiki. Malheureusement, les vidos eux-mêmes avec le sceau de Keanu n'ont pas survécu.