Próbuje odpalić drukarkę fiskalną
port COM przekierowałem na TCP poprzez com2tcp-rfc2217
teraz jestem na początku instrukcji programisty w której pisze
2 Jednobajtowe instrukcje sterujące
2.1 ENQ - Żądanie odesłania statusu drukarki (5h)
no więc próbuje wysłać "\x05" przez socket ale skrypt nie pokazuje żadnej odpowiedzi, proszę o sugestie co robię źle
$ENQ = "\x05"; $STX = "\x02"; $TAB = "\x09"; $ETX = "\x03"; $HASH = "\x23"; $AT = "\x40"; function fiscalprint($ip, $port, $postString, $writeOnly) { //create if(!($sock = socket_create(AF_INET, SOCK_STREAM, 0))) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); } //connect if(!socket_connect($sock , $ip , $port)) { $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); } //write while (true) { $sent = socket_write($sock, $postString, $length); if ($sent === false) { break; } if ($sent < $length) { $length -= $sent; } else { break; } } //read if($writeOnly != 1){ if(!socket_last_error($sock)){ if($buffer=socket_read($sock,512,PHP_NORMAL_READ)){ return $buffer; }}} socket_close($sock); } $post_string = $ENQ; $ip = '127.0.0.1'; $port = 5333; $hdResponse = fiscalprint($ip, $port, $post_string,0);
chyba jeszcze tego bajta trzeba wysłać w takiej postaci?
3 Ogólny format rozkazów
Wszystkie rozkazy przesyłane do drukarki mają jednolity format w postaci ciągu kodów
ASCII, rozpoczynających się znakami <ESC>P (identyfikującymi początek rozkazu) i
kończących się z znakami <ESC>\ (identyfikującymi koniec rozkazu). ( Kod <ESC> odpowiada
1Bh w formacie ASCII ).
Wszystkiego rodzaju liczby i kwoty takie jak np. BRUTTO lub NETTO towarów są również
przesyłane w formacje ASCII. Tak więc gdy istnieje potrzeba wysłania liczby np. 10000.00 to
należy wysłać łącznie 8 znaków w formacie ASCII (7 cyfr i kropkę).
Poniżej przedstawiono typowy format rozkazów sterujących drukarką:
<ESC>P P1;P2;P3;...;Pn $X <text 1> CR <text 2> CR ... <text n> CR [liczba1] / [liczba2] / ... /
[liczba n] / <check> <ESP> \
tego trochę bardzo nie kumam tzn w przykładach widzę że zaczyna \x02 i kończy \x03 czyli mój request powinien wyglądać \x02\x05\x03 ? jednak zaprzecza to trochę powyżej instrukcji które kazuję wysyłać <ESC> i <ESP> \
znalazłem że <ESC> to \x1Bh
użyje sygnału dźwiękowego żeby sprawdzić czy jest jakaś reakcja \x07
i na koniec <ESP> \ wie ktoś jaki to kod w ASCII ?