---
title: "Trabajar con hardware especial de China"
date: 2020-12-31
language: es
topics: ["android", "hacking", "lemmid-store", "programming", "snake", "work"]
source_url: https://willem.com/es/2020-12-31_trabajar-con-hardware-especial-de-china/
---
# Trabajar con hardware especial de China

*Sobre desarrollar software sin manual*

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

## App de pedidos de comida

A través de una_tienda_online_muy_optimizada (https://lemmid-store.com) 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.

![La gente usa la app para pedir comida: los pedidos se reenvían al personal de cocina y de reparto](https://willem.com/global/images/d9984fd291cb.webp)

### Hace falta una impresora

En los últimos meses he ido añadiendo_funciones (https://willem.com/blog/lemmid-store/) 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!

![Terminal Android de mano: hardware OEM directo de China](https://willem.com/global/images/be106b0b6553.webp)

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!

![Lleva Android, con un toque chino (en sentido figurado...)](https://willem.com/global/images/4ca3fdca17db.webp)

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.

![Su truco estrella es la impresora integrada: utilísima para gestionar pedidos (online)](https://willem.com/global/images/c22d0497647e.webp)

## 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 (https://willem.com/en/2020-09-28_refining-my-tablet-os-experience/) y me puse a trastear. Resulta que ya había creado una pequeña app_para_Android (https://snake97.com)... y me pareció la candidata perfecta para probar mi enlace de desarrollo con el dispositivo.

![¡Snake '97 en la impresora Lemmid, ja!](https://willem.com/global/images/490062964133.webp)

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!

![Código chino para hacer funcionar la impresora... ¿cómo se puede entender esto?](https://willem.com/global/images/e8928f950eb8.webp)

![¡Google Translate al rescate!](https://willem.com/global/images/f0cc5bc39dcb.webp)

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.

![Código Java para controlar la impresora](https://willem.com/global/images/31571969ba3a.webp)

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!

![¡SÍ! ¡La impresora imprime el logotipo de «Lemmid» en un ticket!](https://willem.com/global/images/25e13cb105b2.webp)

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