Ik heb het idee dat het niet kan, maar wellicht weet iemand van jullie een oplossing.

- Een cronjob (php) checkt in database of er nog niet geprinte keukenbonnen zijn (WHERE geprint = 0 bijvoorbeeld)
- Indien ja; roep een javascript bestand aan om te printen

Het javascript bestand zet dan een Epson TM-88V-i bonnenprinter in werking om te printen.

- Een cronjob instellen is geen probleem
- Database verhaal ook niet
- De printer laten printen met JS ook niet

... maar die cronjob dat js bestand aan laten roepen... kan dat?
Als ik het goed begrijp kunnen die TM-printers via HTML/XML/JavaScript aangestuurd worden? Je zou een HTTP-request naar die printer kunnen sturen via Curl wellicht?

En als je echt JavaScript (en meer) wilt uitvoeren is node.js misschien iets, al heb ik daar verder geen ervaring mee.
Ik ga eens naar node.js kijken.

Als ik de cronjob php pagina in de browser open, werkt het wel gewoon.
Dus als tussenoplossing maar even in dat bestand

<meta http-equiv="refresh" content="10" />
gezet.

Maar dan moet er dus wel constant een computer en browser open staan... nog niet ideaal maar het resultaat is nog even hetzelfde.
Mja, daar zat ik ook al naar te kijken, het printen wordt nu gefaciliteerd door / met behulp van de browser maar wellicht moet je dus naar een oplossing toe die de printer rechtstreeks aanstuurt, zonder tussenkomst van een browser.

In dat cheesy filmpje waar ik eerder naar linkte (~2:50) zat iets over een ePOS-Print API - had je daar al naar gekeken?

Omstreeks ~4:05 wordt ook iets gezegd over ingebouwde webserver met PHP-ondersteuning.
Ja die had ik al eerder bekeken

HTML zeggen ze in dat filmpje maar verwijst elke keer naar toch een bestand met javascript erin.
XML heeft een bestand nodig van Epson online en ik wil het lokaal kunnen draaien

dus blijft javascript over

Dat werkt goed, echter nu met cronjob dus even een uitdaging

Ik ga er eens even goed over na denken.
Misschien niet DE oplossing, maar je kan een html/php pagina toch ook openen?
Mompelt iets van weget. Ik weet even zo niet exact de juiste opties die je moet meegeven aan de wget lijn.
Ramon,

Waarom aansturing via een javascript? Je kunt de printer ook aansturen direct vanuit een php programma.
En via welk script zou ik dat kunnen doen dan?

Voor zover ik kan vinden is het enkel mogelijk via XML (maar dan is er dus een bestand van Epson online nodig wat dus af valt) en Javascript.

Als je weet hoe, hoor ik het heel graag!

<?php 
$printer = "\\\\Pserver.php.net\\printername"); 
if($ph = printer_open($printer)) 
{ 
   // Get file contents 
   $fh = fopen("filename.ext", "rb"); 
   $content = fread($fh, filesize("filename.ext")); 
   fclose($fh); 
        
   // Set print mode to RAW and send PDF to printer 
   printer_set_option($ph, PRINTER_MODE, "RAW"); 
   printer_write($ph, $content); 
   printer_close($ph); 
} 
else "Couldn't connect..."; 
?>
Ja, zo'n script ken ik. Alleen werkt de betreffende bonnenprinter daar niet mee.
Dat had inderdaad het probleem een stuk eenvoudiger gemaakt.
Ramon,

Dit is het een deel van het script wat ik hiervoor gebruik.

<?PHP
$regel = array();

$regel[1] = "\x1B\x47\x31"."Naam : "."\x1B\x47\x30".$_SESSION['Naam']."\r\n";
$regel[2] = "\x1B\x47\x31"."Plaats : "."\x1B\x47\x30".$_SESSION['Plaats']."\r\n";
$regel[3] = "\r\n";
$regel[4] = "\x1B\x47\x31"." Aantal Prijs"."\r\n";

if (strlen($_SESSION['Aantalmet']) == 1)
{
$space1 = ' ';
}
else
{
$space1 = ' ';
}

if (strlen($_SESSION['Aantalmetbedrag']) == 4)
{
$space2 = ' ';
}
else
{
if (strlen($_SESSION['Aantalmetbedrag']) == 5)
{
$space2 = ' ';
}
else
{
$space2 = ' ';
}
}

$regel[5] = "\x1B\x47\x31"."Aantal met :"."\x1B\x47\x30".$space1.$_SESSION['Aantalmet'].$space2.$_SESSION['Aantalmetbedrag']."\r\n";

if (strlen($_SESSION['Aantalzonder']) == 1)
{
$space1 = ' ';
}
else
{
$space1 = ' ';
}

if (strlen($_SESSION['Aantalzonderbedrag']) == 4)
{
$space2 = ' ';
}
else
{
if (strlen($_SESSION['Aantalzonderbedrag']) == 5)
{
$space2 = ' ';
}
else
{
$space2 = ' ';
}
}

$regel[6] = "\x1B\x47\x31"."Aantal zonder :"."\x1B\x47\x30".$space1.$_SESSION['Aantalzonder'].$space2.$_SESSION['Aantalzonderbedrag']."\r\n";

if (strlen($_SESSION['OPmet']) == 1)
{
$space1 = ' ';
}
else
{
$space1 = ' ';
}

if (strlen($_SESSION['OPmetbedrag']) == 4)
{
$space2 = ' ';
}
else
{
if (strlen($_SESSION['OPmetbedrag']) == 5)
{
$space2 = ' ';
}
else
{
$space2 = ' ';
}
}

$regel[7] = "\x1B\x47\x31"."Pas(sen) met :"."\x1B\x47\x30".$space1.$_SESSION['OPmet'].$space2.$_SESSION['OPmetbedrag']."\r\n";

if (strlen($_SESSION['OPzonder']) == 1)
{
$space1 = ' ';
}
else
{
$space1 = ' ';
}

if (strlen($_SESSION['OPzonderbedrag']) == 4)
{
$space2 = ' ';
}
else
{
if (strlen($_SESSION['OPzonderbedrag']) == 5)
{
$space2 = ' ';
}
else
{
$space2 = ' ';
}
}

$regel[8] = "\x1B\x47\x31"."Pas(sen) zonder :"."\x1B\x47\x30".$space1.$_SESSION['OPzonder'].$space2.$_SESSION['OPzonderbedrag']."\r\n";

if (strlen($_SESSION['Totbedrag']) == 4)
{
$space1 = ' ';
}
else
{
if (strlen($_SESSION['Totbedrag']) == 5)
{
$space1 = ' ';
}
else
{
if (strlen($_SESSION['Totbedrag']) == 6)
{
$space1 = ' ';
}
else
{
$space1 = ' ';
}
}
}

$regel[9] = "\x1B\x47\x31"."Totaal bedrag".$space1.$_SESSION['Totbedrag']."\r\n";
$regel[10] = "\r\n";
$regel[11] = "\x1B\x47\x31"."Wandeldag : "."\x1B\x47\x30".$_SESSION['Wandeldag']."\r\n";
$regel[12] = "\x1B\x47\x31"."Afstand : "."\x1B\x47\x30".$_SESSION['Afstand']."\r\n";
$regel[13] = "\x1B\x47\x31"."Met medaille : "."\x1B\x47\x30".$_SESSION['Met']."\r\n";
$regel[14] = "\x1B\x47\x31"."Zonder medaille : "."\x1B\x47\x30".$_SESSION['Zonder']."\r\n";

// Totaal van de gevulde regels
$totregels = 14;

if ($_SESSION['Met'] > 0)
{
$regel[15] = "\r\n";
$regel[16] = "\x1B\x47\x31"."Medaille Nummer Aantal"."\r\n";
$totregels = $totregels + 2;

for ($i = 1; $i <= 12; $i++)
{
if (isset ($_SESSION['fmed'][$i]) &&
$_SESSION['fmed'][$i] > '')
{
if (strlen($_SESSION['fmed'][$i]) == 1)
{
$space1 = ' ';
}
else
{
$space1 = ' ';
}

if (strlen($_SESSION['famed'][$i]) == 1)
{
$space2 = ' ';
}
else
{
$space2 = ' ';
}

$j = 16 + $i;
$regel[$j] = $space1.$_SESSION['fmed'][$i].$space2.$_SESSION['famed'][$i]."\r\n";
$totregels = $totregels + 1;
}
}
}

$regellast1 = "\r\n";
$regellast2 = "\x1B\x47\x31"." Wij wensen u een fijne wandeling"."\r\n";

if ($_SESSION['fromaddr'] == '192.168.2.23' ||
$_SESSION['fromaddr'] == '192.168.2.31' ||
$_SESSION['fromaddr'] == '192.168.2.24' ||
$_SESSION['fromaddr'] == '192.168.2.26')
{
$printer = $_SESSION['printer'];
$printer1 = $_SESSION['printer1'];
}
else
{
$printer = $_SESSION['printer1'];
$printer1 = $_SESSION['printer'];
}

$pp = @fsockopen($printer, 9100, $errno, $errstr, 10);

if (!$pp)
{
$pp = @fsockopen($printer1, 9100, $errno, $errstr, 10);
}

if ($pp)
{
fwrite($pp, "\x1B\x40");

for ($i = 1; $i <= $totregels; $i++)
{
fwrite($pp, $regel[$i]);
}

fwrite($pp, $regellast1);
fwrite($pp, $regellast2);
fwrite($pp, "\x0A\x0A\x0A\x1D\x56\x41");
fwrite($pp, "\x1B\x40");
fclose($pp);
}
?>

Reageren