Seriele Printer capture -> pdf

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • ElMacaroni
  • Registratie: November 2012
  • Laatst online: 07:20

ElMacaroni

Laat de zon maar komen!

Topicstarter
Mijn vraag:
Oud beestje heeft seriele printeruitgang. Printer is niet meer. Gebruik al jaren de mobiel om foto van het scherm te maken. Wil deze printjobs toch naar PDF converteren.
Elke printjob zou een yymmddhhmmss.pcl moeten maken via socat?
Deze zou middels GhostPCL naar PDF geconverteerd worden en gersynced naar een SMB share.

Relevante software en hardware die ik gebruik:
Debian Linux (any)
socat? verzuip in de cmdline options.
GhostPCL? latere zorg.

hardware:
SchenckCAB700, maakt PCL voor HP Deskjet
Elfin EE-10 http://www.hi-flying.com/elfin-ee10-elfin-ee11 had ik nog liggen,

Wat ik al gevonden of geprobeerd heb
Socat cmd probeersel:
 socat -u TCP4-LISTEN:3334,reuseaddr,fork OPEN:./Test$(date +"%FT%H%M%S").pcltest,creat,append 

Dit maakt keurig bestandje door met nc data naar 127.0.0.1:3334 te jagen.
Maar zodra dit gerenamed en verse testdata erin met
 nc -N 127.0.0.1 3334 < testdata.txt 
krijgt het testbestand dezelfde naam/datum/tijd. Wie heeft de socat tip?

Morgen eerst eens de Elfin EE-10 aan de CAB700 knutselen, en dan verder!

SE2200+14xSF170S & SE1500M+4xTSM-375

Alle reacties


Acties:
  • +1 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Het probleem is dat de tijd wordt ingevuld op het moment dat je de command line uitvoerd. Voor jouw doel zou je EXEC kunnen gebruik ipv OPEN. Je krijgt dan iets als
 socat -u TCP4-LISTEN:3334,reuseaddr,fork EXEC:./Helper.sh

en Helper.sh doet dan
Bash:
1
2
3
4
5
6
7
8
#!/bin/sh

exec > ./Test$(date +"%FT%H%M%S").pcltest

while read line
do
    echo ${line}
done

Acties:
  • 0 Henk 'm!

  • ElMacaroni
  • Registratie: November 2012
  • Laatst online: 07:20

ElMacaroni

Laat de zon maar komen!

Topicstarter
Hmm, EE10 zit eraan, statuspagina OK, als ik 1 x een printjob aanschop en deze capture middels:
 socat -u TCP:192.168.44.218:8899 STDOUT > EE10.dump 

Dan zie ik op de statuspagina:
Afbeeldingslocatie: https://tweakers.net/i/cHMUYknHH13fjmBgMC9BEgH7xtA=/x800/filters:strip_exif()/f/image/kIeq35ZQ3QeP0WGTHJbPWY8g.png?f=fotoalbum_large
en is er een bestandje van 10458 bytes aangemaakt:

root@pve4:~/EE10# ls -la
total 50
drwxr-xr-x  2 root root    11 Mar  8 10:02 .
drwx------ 10 root root    34 Mar  8 09:52 ..
-rw-r--r--  1 root root 10458 Mar  8 09:50 EE10.dump


Echter, dit bestand bevat alleen hex 00. Wat kan dat zijn? Rx/Tx fout? Baudrate?

Ook met
 socat -u TCP:192.168.44.218:8899 STDOUT 
zie ik niks.

De eerder geplaatste ongewenste variant:
 socat -u TCP:192.168.44.218:8899 OPEN:./Test$(date +"%FT%H%M%S").pcltest,creat,append 
levert hetzelfde bestand, zelfde inhoud, zelfde grootte.

SE2200+14xSF170S & SE1500M+4xTSM-375


Acties:
  • 0 Henk 'm!

  • ElMacaroni
  • Registratie: November 2012
  • Laatst online: 07:20

ElMacaroni

Laat de zon maar komen!

Topicstarter
Hmpfr, baudrate terug naar antieke 9600 en dan krijg ik wat binnen!
ESC/P codes all around, even googlen naar convert ESC/P PDF.

--edit-- GhostPCL werkt uitstekend.

Probeer nu helper.sh om te bouwen naar prn2pdf-helper.sh
Gebruik een dump.pcl gemaakt met ik dacht
 socat -u TCP:192.168.44.218:8899 OPEN:./dump.pcl,creat,append 


Conversie naar pdf:
 cat dump.pcl | ./gpcl6 -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -o ./$(date +"%FT%H%M%S").pdf - 


werkt uitstekend! Perfecte PDF.

Probleem: helper.sh met de while read line; echo $(line) filtert de hex00 eruit. BASH dingetje lijkt het op.
Morgen verder onderzoek.

[ Voor 67% gewijzigd door ElMacaroni op 09-03-2023 00:25 . Reden: GhostPCL ]

SE2200+14xSF170S & SE1500M+4xTSM-375


Acties:
  • 0 Henk 'm!

  • ElMacaroni
  • Registratie: November 2012
  • Laatst online: 07:20

ElMacaroni

Laat de zon maar komen!

Topicstarter
Nou, het is een lelijke hack geworden.
Elke printjob zou 1 PDF moeten opleveren, maar dat lijkt niet te werken.
Op de EE10 kun je een time-out instellen, geen data van de UART dan disconnect 'ie de client, socat in dit geval. Binnen 10 seconden data dan append die het aan de bestaande printjob.

Dit in een loop, die kijkt of de EE10 te pingen is:
 #!/bin/bash
for (( ; ; ))
do
    if ping -q -c 1 192.168.44.29 > /dev/null 2>&1 ; then
        echo "running socat for 10 sec..."
# socat is terminated after 10 sec time-out no DATA from EE10
        socat -u TCP:192.168.44.29:8899 EXEC:./helper-cat.sh
    fi
        echo "infinite loop [ hit CTRL+C within 3 secs to stop]"
        sleep 3
done 


De helper-cat.sh:
 #!/bin/sh
# gpcl6 neemt input van STOUT en maakt pdf met datum/tijd in /spool
./gpcl6 -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -o ./spool/$(date +"%FT%H%M%S").pdf -


Daarna de pdf's verplaatsen, kan in de boven genoemde loop:
smbclient -m smb2 //SERVER/share -A .smbclient.cred -c 'prompt OFF; recurse ON; lcd spool; cd Reports ; mput *.pdf; ; lcd ..' 


spool legen, en begin van voren.
Iemand misschien suggesties hoe dit sjieker op te lossen?

SE2200+14xSF170S & SE1500M+4xTSM-375