PHP een javascript bestand aan laten roep in cronjob
- 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?
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.
Als ik het goed En als je echt JavaScript (en meer) wilt uitvoeren is node.js misschien iets, al heb ik daar verder geen ervaring mee.
Als ik de cronjob php pagina in de browser open, werkt het wel gewoon.
Dus als tussenoplossing maar even in dat bestand
gezet.
Maar dan moet er dus wel constant een computer en browser open staan... nog niet ideaal maar het resultaat is nog even hetzelfde.
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.
Gewijzigd op 08/08/2015 16:00:49 door Thomas van den Heuvel
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.
Mompelt iets van weget. Ik weet even zo niet exact de juiste opties die je moet meegeven aan de wget lijn.
Waarom aansturing via een javascript? Je kunt de printer ook aansturen direct vanuit een php programma.
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!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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...";
?>
$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...";
?>
Dat had inderdaad het probleem een stuk eenvoudiger gemaakt.
Dit is het een deel van het script wat ik hiervoor gebruik.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
<?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);
}
?>
$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);
}
?>
Bedankt, dat ga ik eens proberen.
Maar is dat ook voor de Epson TM-88V-i ?
Succes.
Gewijzigd op 08/08/2015 21:30:21 door Ramon van Dongen
Dan moet et toch wel lukken?
Ik krijg inderdaad een print zo uit de printer, ook de cutter wordt aangestuurd.
Geweldig!
Heel apart dat er niets over in de handleiding staat dat het ook met php kan.
Heb jij toevallig ergens een overzicht wat de codes betekenen zoals "\x1B\x40" ?
Dan kan ik namelijk daarop door gaan zoeken zoals voor de pulse voor een kassalade.
Toevoeging op 11/08/2015 12:18:34:
Blijkt dit dus te zijn: fwrite($pp, "\x1B\x70\x0\x100\x100");
Toevoeging op 11/08/2015 12:28:32:
Voor iemand anders die er ooit naar aan het zoeken is: http://content.epson.de/fileadmin/content/files/RSD/downloads/escpos.pdf
code-bom
ifelseelseifififelse-hell
waterval php
Ik heb er geen andere woorden voor.
Tijd voor een refactor nadat het werkt ;)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$printer = '192.168.100.10'; // ip adres printer
$pp = fsockopen($printer, 9100); // verbinding met printer maken, openen
fwrite($pp, "\x1B\x40"); // clear buffer
fwrite($pp, "Een regel tekst"."\r\n");
fwrite($pp, "\x0A\x0A\x1D\x56\x41"); // op paar mm na cutten
fwrite($pp, "\x1B\x40"); // clear buffer
fclose($pp); // verbinding sluiten
?>
$printer = '192.168.100.10'; // ip adres printer
$pp = fsockopen($printer, 9100); // verbinding met printer maken, openen
fwrite($pp, "\x1B\x40"); // clear buffer
fwrite($pp, "Een regel tekst"."\r\n");
fwrite($pp, "\x0A\x0A\x1D\x56\x41"); // op paar mm na cutten
fwrite($pp, "\x1B\x40"); // clear buffer
fclose($pp); // verbinding sluiten
?>
Een heel stuk simpeler en overzichtelijker dan wat dus standaard in de voorbeelden van de TM-88V-i meegeleverd wordt.
Gewijzigd op 11/08/2015 16:15:09 door Ramon van Dongen
perfecto
Wat ik me dan afvraag; zou het een reden hebben dat Epson alleen maar een omslachtige methode met Javascript of XML meelevert terwijl dit volgens mij veel stabieler is maar sowieso simpeler?