Я пытаюсь создать прототип для печати растровых данных для текстового файла на мой принтер epson pos с поддержкой локальной сети TM -T88V.
Хотя у меня нет проблем с отправкой текста и инструкциями по форматированию текста, я не понимаю, что мне нужно сделать, чтобы мой принтер распечатал данные сообщения Аресибо .
первые несколько строк:
00000010101010000000000
00101000001010000000100
10001000100010010110010
10101010101010100100100
00000000000000000000000
00000000000011000000000
00000000001101000000000
00000000001101000000000
00000000010101000000000
00000000011111000000000
00000000000000000000000
11000011100011000011000
10000000000000110010000
11010001100011000011010
11111011111011111011111
00000000000000000000000
00010000000000000000010
00000000000000000000000
00001000000000000000001
Сообщение состоит из 73 строк и 23 столбцов, что дает 1679 элементов изображения. Каждый из этих элементов определяется либо 1 для черного, либо 0 для белого и должен быть напечатан в виде квадрата 8x8 (или 16x16 )точек. результатом будет
(источник:satsig.net)
Из технических характеристик принтера:
Пока, как я уже сказал, подключение и отправка на принтер не проблема, я просто не понимаю, что эта инструкция хочет мне сказать. Что было бы в случае сообщения Аресибо
Какие числа я должен отправить на принтер? Нужно ли отправлять каждую точку? Что означает nL, nH specify the number of dots of the image data in the horizontal direction as (nL + nH × 256).
?
Вот моя простая программа на Python, которую я использую для прототипирования:
# -*- 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()