Trabajar con hardware especial de China
Sobre desarrollar software sin manual
- Publicado
- Actualizado
- (creado )
- Escrito por
- Willem L. Middelkoop
- Temas
- android · hacking · lemmid-store · programación · snake · trabajo
- Versión humana de este artículo
- https://willem.com/es/2020-12-31_trabajar-con-hardware-especial-de-china/
- English
- Working with special hardware from China
- Nederlands
- Werken met speciale hardware uit China
- Deutsch
- Arbeiten mit spezieller Hardware aus China
- Français
- Travailler avec du matériel spécial venu de Chine
- Italiano
- Lavorare con hardware speciale dalla Cina
- Português
- Trabalhar com hardware especial da China
- Papiamentu
- Traha ku hardware special for di Sina
- Frysk
- Wurkje mei bysûndere hardware út Sina
- Idiomas
- Traducido del original en inglés por un modelo de lenguaje en dos pasadas (traducción y corrección) con un glosario y un corrector ortográfico; aún no revisado por un hablante nativo.
Resumen
Este mes me llegó un envío de China con hardware muy especial: ¡dispositivos Android con impresora integrada! Para facilitarles la vida a los dueños de restaurantes y negocios que usan mi app de pedidos de comida, quiero que estos dispositivos impriman solos los pedidos nuevos. Solo me falta conseguir que estas máquinas funcionen con mi software... ¡reto aceptado!
Texto completo
App de pedidos de comida
A través de una tienda online muy optimizada la gente puede pedir comida para llevar y a domicilio. Mis clientes son restaurantes y dueños de tiendas que venden sus productos con la app. Los pedidos se reenvían al personal de cocina y de reparto para que todo se prepare y se entregue.

Hace falta una impresora
En los últimos meses he ido añadiendo funciones para ayudar a mis clientes a gestionar mejor sus tiendas online. Una petición muy habitual es librarse del ordenador o la tableta que ahora tienen en la cocina para ver los pedidos online. En vez de un ordenador grande y aparatoso, busqué una alternativa compacta.
Android con impresora integrada
Tras rastrear varios mercados internacionales, conseguí contactar con un proveedor chino de hardware que ha creado un dispositivo Android con impresora integrada. Unas semanas después llegó de China: ¡qué mundo tan maravilloso el nuestro!

Es un hardware interesante porque:
- es compacto (comparado con un PC, una tableta o un portátil convencionales)
- funciona con batería y enchufado a la corriente
- va con WiFi y tiene opción de internet móvil 4G
- tiene una pantalla táctil grande
- puede ejecutar apps nativas de Android
- puede acceder a la web
- ¡lleva una impresora integrada!

La impresora integrada es superpráctica, porque convierte el dispositivo en una solución completa para gestionar pedidos online. Desde la pantalla táctil se accede a los pedidos y se puede configurar el dispositivo para que los imprima automáticamente. Así es fácil pasárselos al personal de cocina y de reparto.

Hacer que ejecute algo: software
Para que todo esto funcione, necesito poder ejecutar software propio en el dispositivo. Aunque lleva Android, llegó sin manuales, sin guías y sin kit de desarrollo de software. Es decir, tuve que hacer ingeniería inversa para poder entrar.
Lo mejor que puedes hacer entonces es probar algo que conoces bien y ver si consigues que otra de tus apps funcione en el dispositivo. Conecté el aparato a mi tableta con Linux y me puse a trastear. Resulta que ya había creado una pequeña app para Android... y me pareció la candidata perfecta para probar mi enlace de desarrollo con el dispositivo.

La ventaja de ejecutar algo que conoces bien en un hardware desconocido es que así tienes una referencia de lo que el hardware puede hacer. ¡Resulta que la impresora Android es bastante capaz!
Sin documentación ni SDK
Para aprovechar a fondo el hardware, necesitaba averiguar cómo programar la impresora integrada. El proveedor chino la integró de una forma poco estándar en Android (en la medida en que exista una forma estándar en Android...). Los dispositivos llegaron sin software ni código fuente: ¡un fastidio!
Investigué los números de serie y de modelo del dispositivo OEM. Busqué cualquier pista y rastreé internet en busca de dispositivos parecidos. Quizá encontrara algún fragmento de código fuente (relacionado) que me diera un punto de partida para trabajar con este aparato.
Ingeniería inversa de código Java
Tras horas de investigación, ¡encontré en un rincón remoto de internet un paquete con código fuente de un dispositivo parecido! El problema era que... ¡estaba todo en chino!


Analicé el código fuente y enseguida entendí cómo funcionaba lo básico. Con Google Translate descubrí que algunas partes del código eran limitadas o no estaban del todo soportadas. ¡Pero al menos tenía un punto de partida! Al final no solo conseguí leer el código fuente chino, sino también escribir software para él.

El siguiente paso fue crear un programa de prueba para comprobar si el código chino adaptado funcionaba de verdad. Si lo conseguía, podría empezar a escribir software de verdad para la impresora Android, software que acabarán usando mis clientes. Pues bien... ¡funcionó! La impresora empezó a hacer ruido y, voilà: ¡apareció un logotipo de Lemmid!

Conclusión
¡Esto es genial! Estoy muy contento de haber encontrado la manera de escribir software para este hardware tan especial. Me permite integrarlo en la plataforma que estoy construyendo para mis clientes.
Si te llevas una cosa de este artículo, que sea esta: a veces hay que intentarlo y ver si encuentras la manera de que las cosas funcionen. ¡Porque solo si no lo intentas puedes estar completamente seguro de que no funcionará!