Pagina 1 van 1

Aansturing POS printer vanuit PHP

Geplaatst: 18 aug 2014, 19:21
door joriz
Ik ben bezig met het uitwerken van een kleine PHP webpagina. De bedoeling is om via een simpele zoek functie data uit een database te halen en deze vervolgens te tonen op de webpagina. Deze functie is reeds werkend. Alleen moet de opgehaalde data ook af te printen zijn op een POS printer (point of sale). Dit zijn printers die je vaak bij kassa systemen ziet.
Deze printers zijn vaak aanstuurbaar op 2 manieren. Via een Windows driver, de driver doet de vertaling naar de printertaal. Of via Raw printing taal, de printertaal zal via de software (in dit geval php) direct naar de printer gestuurd worden.

In het geval van de raw printing optie moet de printer enkel geïnstalleerd worden op de server en niet op de client wat bij mij de voorkeur heeft.
Heeft iemand ervaring met het aansturen van printers vanuit PHP? Zijn er betere/eenvoudigere oplossingen?

Onderstaande code heb ik reeds kunnen uitwerken. De printer geeft aan dat er data ontvangen werd, maar er wordt totaal niets afgedrukt.

Code: Selecteer alles

<html>
<title>Test </title>
<body>

<?php
//open printer 
$handle = printer_open('\\\\server\printer1'); 

//set printing option to raw 
printer_set_option($handle, PRINTER_MODE, 'RAW'); 

//write data to printer
$data ='<SOF>TEST123<EOF>';

$ret = printer_write($handle, $data);
//close the printer handle 
printer_close($handle);

?>
</body>
</html>

Re: Aansturing POS printer vanuit PHP

Geplaatst: 18 aug 2014, 23:02
door ubremoved_539
Misschien wat vragen...

- Is UNC notatie mogelijk ?
- Moet je de stuurcodes niet hexadecimaal zetten ?

Re: Aansturing POS printer vanuit PHP

Geplaatst: 18 aug 2014, 23:03
door ITnetadmin
Waarom 4 ipv 2 backslashes aan het begin van dat UNC path?

Also, is "write data to printer" genoeg, of moet je de print instructie mss nog apart meegeven?

[Afbeelding Post made via mobile device ]

Re: Aansturing POS printer vanuit PHP

Geplaatst: 18 aug 2014, 23:11
door ubremoved_539
ITnetadmin schreef:Waarom 4 ipv 2 backslashes aan het begin van dat UNC path?
Om de backslash te escapen veronderstel ik... maar dan moeten er verder in het path ook twee backslashen staan ipv 1.

Re: Aansturing POS printer vanuit PHP

Geplaatst: 19 aug 2014, 12:17
door joriz
- UNC notatie is geen probleem
- Zoals r2504 aanhaalde zijn de 4 backslashen in het begin om de backslashen te escapen. En inderdaad, ik was 1 backslash vergeten voor de printernaam, dit heb ik nu aangepast. --> Wel bizar dat in de printqueue toch een printopdracht toekwam met 1 backslash en de printer aangaf dat er data toekwam maar uiteindelijk niets wou afprinten.

- De data die naar de printer gestuurd moet worden komt via $data.

Ik denk dat ik hier puur met een syntax probleem zit.
Als test heb ik de printer via een seriele poort aangesloten, en zo via putty de print commands naar de printer verzonden. Label kwam er uit zonder problemen.

De data die ik verstuur is als volgt, na elke lijn komt een enter, vermoedelijk gaat het daar fout in de php code.

FT "Swiss 721 BT"
PT "ABCDEFGHIJKLM"
PF

FT = font type
PT = print text
PF = print file

Dit is wat ik stuur vanuit php:

$data ='FT "Swiss 721 BT"';
$data ='PT "ABCDEFGHIJKLM"';
$data ='PF';

Re: Aansturing POS printer vanuit PHP

Geplaatst: 19 aug 2014, 14:19
door elmariachi2920
als je $data elke keer gelijk stelt aan de tekst er achter zit er in $data enkel "PF"
ook staat er geen enter na

ik vermoed dat je code dit moet zijn:

$data='FT "Swiss 721 BT"\r\n';
$data+='PT "ABCDEFGHIJKLM"\r\n';
$data+='PF\';

Re: Aansturing POS printer vanuit PHP

Geplaatst: 20 aug 2014, 03:43
door ITnetadmin
r2504 schreef:
ITnetadmin schreef:Waarom 4 ipv 2 backslashes aan het begin van dat UNC path?
Om de backslash te escapen veronderstel ik... maar dan moeten er verder in het path ook twee backslashen staan ipv 1.
Daar wou ik net op wijzen, als ie had geantwoord "om te escapen" ;-)

[Afbeelding Post made via mobile device ]

Re: Aansturing POS printer vanuit PHP

Geplaatst: 20 aug 2014, 11:28
door tb0ne
elmariachi2920 schreef: ik vermoed dat je code dit moet zijn:

$data='FT "Swiss 721 BT"\r\n';
$data+='PT "ABCDEFGHIJKLM"\r\n';
$data+='PF\';
Was concateneren niet met punten? En moet je die dubbele quotes ook niet escapen?
Al een paar jaar geleden wel sinds ik nog iets van php gedaan heb...

Zoiets?

Code: Selecteer alles

$data='FT \"Swiss 721 BT\"\r\n';
$data=$data.'PT \"ABCDEFGHIJKLM\"\r\n';
$data=$data.'PF';

Re: Aansturing POS printer vanuit PHP

Geplaatst: 20 aug 2014, 12:09
door Tim.Bracquez
PHP, dit is de juiste, de " moet je niet escapen als je met een ' start. Een . voor de = is om aan de var toe te voegen

Code: Selecteer alles

$data = 'informatie "klqds"';
$data .= 'klqsdfkq';
Testen kan ook hier: http://sandbox.onlinephpfunctions.com/c ... 276f0f8641

Re: Aansturing POS printer vanuit PHP

Geplaatst: 20 aug 2014, 13:40
door joriz
Bedankt, ik ga het testen.

Zijn er nog andere manieren op printers aan te sturen? Mijn kennis van PHP is hier te beperkt voor.
Om RAW printing te kunnen doen met de code hierboven is er de extensie php_printer nodig, deze is oud en dus ook niet meer supported. Laatste versie van PHP waar deze op draait is PHP 5.2.9.
Met deze PHP versie is het dan weer niet mogelijk om te connecteren met MSSQL 2012+.