---
title: "Lavorare con hardware speciale dalla Cina"
date: 2020-12-31
language: it
topics: ["android", "hacking", "lemmid-store", "programming", "snake", "work"]
source_url: https://willem.com/it/2020-12-31_lavorare-con-hardware-speciale-dalla-cina/
---
# 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 (https://lemmid-store.com) 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.

![Le persone usano l’app per ordinare cibo: gli ordini vengono inoltrati al personale di cucina e di consegna](https://willem.com/global/images/d9984fd291cb.webp)

### Serve una stampante

Negli ultimi mesi ho aggiunto_funzionalità (https://willem.com/blog/lemmid-store/) 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!

![Terminale Android portatile: hardware OEM direttamente dalla Cina](https://willem.com/global/images/be106b0b6553.webp)

È 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!

![Gira su Android, con un po’ di salsa cinese (in senso figurato...)](https://willem.com/global/images/4ca3fdca17db.webp)

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.

![Il suo asso nella manica è la stampante integrata, super utile per gestire gli ordini (online)](https://willem.com/global/images/c22d0497647e.webp)

## 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 (https://willem.com/en/2020-09-28_refining-my-tablet-os-experience/) e ho iniziato a smanettare! Per caso avevo già creato una piccola_app_Android (https://snake97.com)... mi sembrava la candidata perfetta per provare il mio collegamento di sviluppo con il dispositivo.

![Snake '97 sulla stampante Lemmid, ahah!](https://willem.com/global/images/490062964133.webp)

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!

![Codice cinese per far funzionare la stampante... come si fa a capirlo?](https://willem.com/global/images/e8928f950eb8.webp)

![Google Translate in soccorso!](https://willem.com/global/images/f0cc5bc39dcb.webp)

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!

![Codice Java per pilotare la stampante](https://willem.com/global/images/31571969ba3a.webp)

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!

![SÌ! La stampante stampa il logo "Lemmid" su uno scontrino!](https://willem.com/global/images/25e13cb105b2.webp)

## 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à!
