Estoy intentando crear un prototipo para imprimir datos de mapa de bits para un archivo de texto en mi impresora habilitada para LAN LAN TM-T88V.Facturación de extranjeros a través de la impresora POS e impresión de imágenes
Si bien no tengo problemas para enviar texto y las instrucciones de formato de texto, no entiendo, lo que tengo que hacer, para que mi impresora imprima los datos del Arecibo message.
primeras líneas:
00000010101010000000000
00101000001010000000100
10001000100010010110010
10101010101010100100100
00000000000000000000000
00000000000011000000000
00000000001101000000000
00000000001101000000000
00000000010101000000000
00000000011111000000000
00000000000000000000000
11000011100011000011000
10000000000000110010000
11010001100011000011010
11111011111011111011111
00000000000000000000000
00010000000000000000010
00000000000000000000000
00001000000000000000001
El mensaje tiene 73 filas y 23 columnas resultantes en 1679 elementos de imagen. Cada uno de estos elementos está definido por un 1 para negro o un 0 como blanco y debe imprimirse como un cuadrado de 8x8 (o 16x16) puntos. el resultado se traduciría en
Arecibo message http://www.satsig.net/seti/message-to-gliese-581.gif
De especificaciones de la impresora:
Mientras que - como dije - la conexión y enviar a la impresora no es ningún problema, simplemente no consigo, lo que esta instrucción me quiere decir ¿Cuál sería en el caso del mensaje de Arecibo
¿Qué números debo enviar a la impresora? ¿Debo enviar cada punto? ¿Qué significa nL, nH specify the number of dots of the image data in the horizontal direction as (nL + nH × 256).
?
Aquí es mi sencillo programa de Python que uso para la creación de prototipos:
# -*- coding: utf-8 -*-
import struct
import socket
def sendInstructions(mySocket,l):
for x in l:
mySocket.send(struct.pack('h', *[x]),1)
def emphasizeOn(mySocket):
sendInstructions(mySocket,[27,33,48])
def emphasizeOff(mySocket):
sendInstructions(mySocket,[27,33,0])
def lineFeed(mySocket,number):
for i in range(number):
sendInstructions(mySocket,[0x0a,])
def paperCut(mySocket):
sendInstructions(mySocket,[29,86,0])
def sendText(mySocket,string):
mySocket.send(string.encode('UTF-8'))
def main():
mySocket = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
mySocket.connect(('192.168.1.15',9100))
lines = ["Hello,","World!"]
emphasizeOff(mySocket)
lineFeed(mySocket,2)
for l in lines:
if lines.index(l) == 0:
emphasizeOn(mySocket)
else:
emphasizeOff(mySocket)
sendText(mySocket,l)
lineFeed(mySocket,2)
lineFeed(mySocket,4)
paperCut(mySocket)
mySocket.close()
if __name__=="__main__":
main()
Y qué tiene esto que ver con los extraterrestres de facturación? – LarsH
+1 para la facturación de extranjeros – Seth
@LarsH - solo para llamar su atención:) ... No en serio: necesito imprimir datos de mapas de bits, y como sentí que necesito ilustrar eso, pensé en usar un ejemplo famoso, el mensaje de Arecibo . ¿Pero a qué enviaría un Alien, si usted es una impresora POS? Bills! – vikingosegundo