Vývoj mobilní aplikace pro prodej zboží v terénu přišel s požadavkem tisknout účtenky. Hledali jsme tedy způsob, jak vytisknout z hybridní aplikace definovanou šablonu. Chtěli jsme tiskárnu, která se připojuje přes Bluetooth a která spolupracuje s iPadem, na kterém naše aplikace funguje.
Dotaz do komunity, hleadání na Alze. Tiskárny EPSON jsou prý spolehlivé, avšak nejsou v nabídce. Alza nabízí značku Cashino. Tisknou na termopapír, mají možnost připojení přes wifi, infrared a bluetooth. Z diskuse pod produkty bylo vidět, že je nějaký problém s podporou iOS.
Na technické podpoře firmy Expro Mobil s.r.o., která tiskárny dováží, jsme se dozvěděli, že s iOS problém není, jen je třeba objednat ten správný typ, případně si nechat vyměnit čip, výměna stojí 200,- Kč.
Tiskárnu jsme objednali, konkrétně typ PTP-III BT4 se šířkou 80mm v Bluetooth verzi pro iOS. Tiskárna má připojení přes infraport, Bluetooth a USB.
Na první pohled bylo jasné, proč je třeba jiný HW pro iOS – poslední verze produktů Apple podporují pouze Bluetooth verze 4, klasický BT verze 2 s iPhone nefunguje. Na Androidu starý Bluetooth stále funguje.
Ani na iPadu ani na iPhone nebyla tiskárna v nastavení Bluetooth iPadu vidět. Až pomocí speciální aplikace LightBlue Explorer (https://itunes.apple.com/us/app/lightblue-explorer-bluetooth/id557428110?mt=8) bylo vidět, že je všechno v pořádku, ukázala se tiskárna i služby, které nabízí.
Další krok bylo připojit se a vytisknout něco z Cordovy. Pomohl plugin Bluetooth LE: https://github.com/randdusing/cordova-plugin-bluetoothle , který má poměrně dobrou dokumentaci, takže zde nebudeme rozebírat detaily, které jsou napsané tam.
Výsledná funkční sekvence kroků je:
Poslat na tiskárnu samotný řetězec „Hello world“ nevystiskne nic. Na začátku tisku je potřeba poslat inicializační řetězec ESC @, třeba takto: „\x1b@Write Hello World\r\n“.
Ovládání tiskárny a formátování textu se provádí přes ESC POS sekvence. Pro první pokusy s ESC POS a pro vyvíjení šablony je výhodné si tiskárnu připojit přes USB a posílat do ní data přímo. Na OS X je třeba doinstalovat ovladač pro PL2303, v linuxu je přístupná ihned na ttyUSB:
> echo -n -e "\x1B@ahoj\n" > /dev/ttyUSB0
Formátování textu – velikost a typ písma, zarovnání, … se provádí pomocí ESC POS sekvencí. Např. pro vytisknutí textu tučně: „\x1B!\x08text\x1B!\x00“. Vytvořili jsme jednoduchý překladač podmnožiny HTML tagů do ESC POS sekvencí a šablonu účtenky spáchali v HTML.
Kódování češtiny: tiskárna nepodporuje UTF-8, pouze vybrané kódové stránky, např. win 1250.
Obrázky: je možné vytisknout obrázek a funguje to. Protože ale na účtenkách tiskneme stále dokola jeden stejný obrázek – logo, je možné si ho uložit do NV paměti a při tisku se na něj odkázat – je to rychlejší, není třeba vždy posílat tisková data.
V pondělí začíná pilotní provoz v terénu.
Ještě odkaz do githubu na testovací aplikaci: https://github.com/inited/tisk-cashino
To zajímavé je v souboru www/app/services/print.service.js a bluetooth.service.js
Detail vlastní aplikace: Firmu jsme zbavili papírů a zrychlili prodej zboží
Diskuse k článku na Facebooku.
blablabl