
Scrittura · 31 dic 2020
Lavorare con hardware speciale dalla Cina
Sviluppare software senza un manuale
Questo mese mi è arrivata dalla Cina una spedizione con hardware speciale: dispositivi Android con stampanti integrate! Per rendere la vita più facile ai ristoratori e ai commercianti che usano la mia app per ordinare cibo, voglio che questi dispositivi stampino automaticamente i nuovi ordini. Se solo riuscissi a far funzionare queste macchine con il mio software... sfida accettata!
App per ordinare cibo
Con un negozio online altamente ottimizzato le persone possono ordinare cibo da asporto e a domicilio. I miei clienti sono ristoranti e negozianti che vendono i loro prodotti tramite l’app. Gli ordini vengono inoltrati al personale di cucina e di consegna, per essere sicuri che tutto venga preparato e consegnato.

Serve una stampante
Negli ultimi mesi ho aggiunto funzionalità per aiutare i miei clienti a gestire meglio i loro negozi online. Una richiesta frequente è di eliminare il computer o il tablet che ora devono tenere in cucina per vedere gli ordini online. Al posto di un computer grande e ingombrante ho cercato un’alternativa compatta.
Android con stampante integrata
Dopo aver scavato in vari mercati online internazionali, sono riuscito a contattare un produttore cinese di hardware che ha creato un dispositivo Android con stampante integrata! Poche settimane dopo è arrivato dalla Cina: che mondo meraviglioso!

È un hardware interessante perché:
- è compatto (rispetto a un PC, un tablet o un laptop tradizionale)
- funziona a batteria e con alimentazione diretta
- funziona con WiFi e ha l’opzione per internet mobile 4G
- ha un grande schermo touch
- può eseguire app Android native
- può accedere al web
- ha una stampante integrata!

La stampante integrata è super pratica, perché rende il dispositivo una soluzione completa per gestire gli ordini online. Con lo schermo touch si accede agli ordini e il dispositivo può essere configurato per stamparli automaticamente. Così è facile inoltrarli al personale di cucina e di consegna.

Far girare qualcosa / software
Per far succedere tutto questo devo poter eseguire software personalizzato sul dispositivo. Anche se ha Android, i dispositivi sono arrivati senza manuali, istruzioni o kit di sviluppo software. Quindi ho dovuto farmi strada in questo dispositivo con il reverse engineering.
La cosa migliore da fare è provare qualcosa che conosci bene e vedere se riesci a far girare un’altra delle tue app sul dispositivo. Ho collegato il dispositivo al mio tablet Linux e ho iniziato a smanettare! Per caso avevo già creato una piccola app Android... mi sembrava la candidata perfetta per provare il mio collegamento di sviluppo con il dispositivo.

Il vantaggio di eseguire qualcosa di ben noto su hardware sconosciuto è che puoi stabilire una specie di riferimento per le capacità dell’hardware. Si scopre che la stampante Android è molto capace!
Nessuna documentazione né SDK
Per sfruttare fino in fondo l’hardware dovevo capire come programmare la stampante integrata. Il produttore cinese ha integrato la stampante in modo non standard per Android (per quanto esista un modo standard su Android..). I dispositivi che ho ricevuto non avevano software né codice sorgente, una vera seccatura!
Ho analizzato i numeri di serie e di modello del dispositivo OEM. Ho cercato qualsiasi indizio e ho setacciato internet in cerca di dispositivi simili. Magari trovavo qualche pezzo di codice sorgente (correlato) che mi desse un punto di partenza per lavorare su questo dispositivo.
Reverse engineering del codice Java
Dopo ore di ricerche ho trovato in un angolo remoto di internet un pacchetto con del codice sorgente per un dispositivo simile! Il problema era... che era tutto in cinese!


Ho analizzato il codice sorgente e ho capito subito come funzionavano le basi. Con Google Translate ho scoperto che alcune parti del codice sorgente erano limitate o non pienamente supportate. Ma almeno avevo un punto di partenza! Alla fine non solo sono riuscito a leggere il codice sorgente cinese, ma anche a scriverci software!

Il passo successivo è stato creare un programma di prova per verificare se il codice sorgente cinese adattato funzionasse davvero. Se ci fossi riuscito, avrei potuto iniziare a scrivere software vero per la stampante Android, software che alla fine avrebbero usato i miei clienti. Ebbene... guarda un po’, ha funzionato! La stampante ha iniziato a fare rumore ed ecco: è apparso un logo Lemmid!

Conclusione
È roba geniale! Sono davvero contento di aver trovato il modo di scrivere software per questo hardware speciale. Mi permette di integrare l’hardware nella piattaforma che sto costruendo per i miei clienti.
Se c’è una cosa da portarsi a casa da questo articolo è che a volte devi semplicemente provare e vedere se trovi il modo di far funzionare le cose. Perché solo se non provi puoi essere davvero sicuro che non funzionerà!