Komunikując się z drukarką fiskalną, należy co pewien czas sprawdzać jej status, czyli
- czy drukarka jest online,
- czy jest gotowa do przyjęcia do wydruku kolejnego paragonu/faktury,
- czy nie kończy (lub skończył) się papier lub czy drukarka jest podłączona do zasilania
Status Online
Sprawdzenie statusu online można wykonać wysalając polecenie /status lub /devicestatus, przykładowo:
1 |
curl -s -XPOST "http://localhost:3050/devicestatus?fulldebug=true" |
Dodatkowo, PosnetServer posiada funkcjonalność automatycznego monitorowania drukarki i zapisywania stanu w logach. Feature domyślnie jest wyłączony i aby go włączyć, należy w pliku konfiguracyjnym config.json, w sekcji posnet.ping, ustawić wartość atrybutu “enabled” na true.
1 2 3 4 5 6 7 |
"posnet": { ..... "ping": { "enabled": false, "interval": 60000, "type" : "status" /* one of: date, status */ }, |
Pole “interval” definiuje jak często PosnetServer ma sprawdzać status drukarki. W tym przykładzie jest to 60 000 ms (60s).
STATUS GOTOWOŚCI do wydruku
W tym celu należy przeanalizować odpowiedź z polecenia /devicestatus. Przykładowy response może wyglądać następująco:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "ok": true, "message": "", "code": 0, "device": { "ok": true, "chargerconnected": true, "status": "ok", "paperending": false, "queueempty": true }, "mechanism": { "ok": true, "status": "ok", "callservice": false } } |
- mechanism.ok – Jeśli “true”, wówczas oznacza to że udało się uzyskać wartości “status” oraz “callservice”. W przeciwnym wypadku pola “status” oraz “callservice” nie są uzupełniane i należy zweryfikować połączenie z drukarką,
- mechanism.status – Jeśli pole ma wartość “ok”, drukarka jest gotowa do przyjęcia nowego wydruku, w przeciwnym wypadku pole zawiera informację o błędzie, przykładowo: lever_open, mechanism_unavailable, cover_open, no_paper, wrong_temperature_or_power, temporal_power_issues, cutter_error, power_issue, cover_open_while_cutting
- mechanism.callservice – Jeśli “true” wówczas należy wezwać serwis drukarki fiskalnej, kasjer najprawdopodobniej nie będzie w stanie używać drukarki fiskalnej.
Aby jednoznacznie potwierdzić że drukarka jest gotowa do przyjęcia kolejnego wydruku obydwa pola mechanism.status i device.status muszą mieć wartość “ok”.
Statusy dodatkowe
W tym celu również należy przeanalizować odpowiedź z polecenia /devicestatus.
- device.ok – Jeśli “true”, wówczas oznacza to że udało się uzyskać wartości “queueempty”, “paperending” oraz “chargerconnected”. W przeciwnym wypadku pola “queueempty”, “paperending” oraz “chargerconnected” nie są uzupełniane i należy zweryfikować połączenie z drukarką,
- device.status – Jeśli pole ma wartość “ok”, drukarka jest gotowa do przyjęcia nowego wydruku, w przeciwnym wypadku pole zawiera informację o błędzie, przykładowo: in_menu, waiting_button, waiting_action
- device.chargerconnected – Jeśli “true” wówczas drukarka jest podłączona do zasilania, w przeciwnym wypadku pobiera prąd z wewnętrznego akumulatora (jeśli model z którym pracujemy posiada wbudowany akumulator)
- device.paperending – Jeśli “true” wówczas paper w drukarce wkrótce się skończy. Należy poinformować kasjera aby możliwie najszybciej wymienił papier w drukarce.
- device.queueempty – Jeśli “true”, wówczas drukarka jest aktualnie w trybie przetwarzania polecenia. Jeżeli z drukarką komunikuje się jedynie PosnetServer, wówczas wartość zawsze będzie “false”.