Próbuję utworzyć prototyp do drukowania danych bitmapowych dla pliku tekstowego do mojej drukarki epson pos drukarki TM-T88V z obsługą sieci LAN.Rozliczanie cudzoziemców za pomocą drukarki POS i drukowanie obrazu
Chociaż nie mam problemów z wysłaniem instrukcji formatowania tekstu i tekstu, nie rozumiem, co muszę zrobić, aby drukarka wydrukowała dane z Arecibo message.
pierwsze kilka linijek:
00000010101010000000000
00101000001010000000100
10001000100010010110010
10101010101010100100100
00000000000000000000000
00000000000011000000000
00000000001101000000000
00000000001101000000000
00000000010101000000000
00000000011111000000000
00000000000000000000000
11000011100011000011000
10000000000000110010000
11010001100011000011010
11111011111011111011111
00000000000000000000000
00010000000000000000010
00000000000000000000000
00001000000000000000001
Komunikat ma 73 wierszy i 23 kolumn powstałych w 1679 elementów obrazu. Każdy z tych elementów jest zdefiniowany jako 1 dla czerni lub 0 jako biały i powinien być wydrukowany jako kwadrat z 8x8 (lub 16x16) punktów. wynik skutkowałoby
Arecibo message http://www.satsig.net/seti/message-to-gliese-581.gif
ze specyfikacji drukarki:
Choć - jak już mówiłem - łączący i wysyłanie do drukarki ma problemu, po prostu nie dostać, co ta instrukcja chce mi powiedzieć. Co by było w przypadku komunikatu Arecibo:
Jakie numery muszę wysłać do drukarki? Czy muszę wysłać każdą kropkę? Co oznacza nL, nH specify the number of dots of the image data in the horizontal direction as (nL + nH × 256).
?
Oto mój prosty program Python używam do prototypowania:
# -*- 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()
A co to ma do czynienia z obcymi rozliczeniowych? – LarsH
+1 za fakturowanie obcokrajowców – Seth
@LarsH - tylko po to, by zwrócić twoją uwagę:) ... Nie poważnie: muszę wydrukować dane bitmapowe, a ponieważ czułem, że muszę to zilustrować, pomyślałem o użyciu słynnego przykładu, wiadomości Arecibo . Ale co byś wysłał Obcego, jeśli masz drukarkę POS? Rachunki! – vikingosegundo