Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Obsługa drukarki fiskalnej
adi456
post 12.01.2019, 11:30:26
Post #1





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Witam

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

  1. $ENQ = "\x05";
  2. $STX = "\x02";
  3. $TAB = "\x09";
  4. $ETX = "\x03";
  5. $HASH = "\x23";
  6. $AT = "\x40";
  7.  
  8. function fiscalprint($ip, $port, $postString, $writeOnly)
  9. {
  10. //create
  11. if(!($sock = socket_create(AF_INET, SOCK_STREAM, 0)))
  12. {
  13. $errorcode = socket_last_error();
  14. $errormsg = socket_strerror($errorcode);
  15.  
  16. die("Error Code: [$errorcode] $errormsg \n");
  17. }
  18. //connect
  19. if(!socket_connect($sock , $ip , $port))
  20. {
  21. $errorcode = socket_last_error();
  22. $errormsg = socket_strerror($errorcode);
  23.  
  24. die("Error Code: [$errorcode] $errormsg \n");
  25. }
  26. //write
  27. $length = strlen($postString);
  28. while (true) {
  29. $sent = socket_write($sock, $postString, $length);
  30. if ($sent === false) {
  31. break;
  32. }
  33. if ($sent < $length) {
  34. $st = substr($st, $sent);
  35. $length -= $sent;
  36. } else {
  37. break;
  38. }
  39. }
  40. //read
  41. if($writeOnly != 1){
  42. if(!socket_last_error($sock)){
  43. if($buffer=socket_read($sock,512,PHP_NORMAL_READ)){
  44.  
  45. return $buffer;
  46. }}}
  47.  
  48. socket_close($sock);
  49.  
  50. }
  51. $post_string = $ENQ;
  52. $ip = '127.0.0.1';
  53. $port = 5333;
  54.  
  55. $hdResponse = fiscalprint($ip, $port, $post_string,0);
  56. echo( htmlentities($hdResponse));
  57.  


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 ?

Ten post edytował adi456 12.01.2019, 12:04:44
Go to the top of the page
+Quote Post
Pyton_000
post 12.01.2019, 12:10:55
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Powiedz jaka to drukarka to będzie łatwiej to ogarnąć.
Go to the top of the page
+Quote Post
adi456
post 12.01.2019, 12:13:59
Post #3





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


drukarka EMAR Printo line
Taką instrukcje dostałem

a jeszcze tak się zastanawiam jeśli nawet źle wysyłam komendę sterującą to czy nie powinienem dostać w odpowiedzi kod błędu?

Ten post edytował adi456 12.01.2019, 12:19:49
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 00:44