En un
artículo anterior, describí brevemente mi firmware para CTK SHTRIH-FR-K, que le permite controlar el cabezal térmico, los motores y, en consecuencia, imprimir cualquier cosa. En esta parte, mostraré cómo escribir software que se comunicará con el cajero y formateará la imagen para imprimir.

Comencemos describiendo los paquetes que necesitamos.
import cv2 import numpy as np import serial
cv2 - Biblioteca de visión por computadora OpenCV. Se necesita toda la carga de ingresar y formatear la imagen.
numpy es una biblioteca para trabajar con matrices. OpenCV no funcionará sin él.
serial: biblioteca para trabajar con PC com-port.
ser = serial.Serial('COM5', 9600, write_timeout=1, timeout=0.1)
Inicialización de la biblioteca a 9600 bps.
frame1 = cv2.imread('ars2.jpg')
Una función que descarga una imagen desde un disco duro.
height = frame1.shape[0]//(frame1.shape[1]//432) frame1 = cv2.resize(frame1, (432,height), interpolation = cv2.INTER_AREA)
La función de cambiar la imagen a un tamaño determinado.
grayscaled1 = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY) ret,thresh1 = cv2.threshold(grayscaled1,127,255,cv2.THRESH_BINARY) img_bin = thresh1/255
La primera línea hace que la imagen sea en blanco y negro. El segundo hace binarización. Binarización: el resultado final es convertir una imagen en una matriz donde cada píxel tendrá un valor de 1 o 0. La caja registradora no se puede hacer en tonos de negro, por lo que este procesamiento es necesario. En esta función, todos los píxeles con un valor inferior a 127 serán 0, mayores que 1.
for n in range(img_bin.shape[0]): for m in range(img_bin.shape[1]):
Este código convierte cada línea en un conjunto de bytes. Es decir toma los primeros ocho píxeles de una cadena y los convierte en bytes. Luego toma los siguientes 8 de la misma línea y los convierte en bytes.
while i: while u!=1: u = ser.write( b'P') u=0 ff=ser.read(1) if ff==b'B': i=0
Inicio de transferencia. Si no se recibe respuesta, no comience.
i=54 while i: while u!=1:
Enviar una línea con un cheque para ver si la imagen ha terminado.
if h==2: low=low+54 h=0
Una pequeña característica. Si la imagen se envía para imprimir como está, la altura de la imagen se reducirá a la mitad. Esto se debe a la inclinación del motor. Por supuesto, puede hacer dos pasos a la vez, pero luego la imagen será tenue.
while i: ff = ser.read(1)
Estamos esperando que la letra D se sincronice. Esto significa que la máquina ha impreso una línea y está lista para recibir datos.
Enlace a las fuentes
github.com/beetlea/shtrih-m-fr-kBueno, aquí tienes el vidosiki. Desafortunadamente, los vidos mismos con el sello de Keanu no sobrevivieron.