Trabalhar com hardware especial da China

Escrita · 31 dez 2020

Trabalhar com hardware especial da China

Sobre desenvolver software sem manual

Este mês recebi uma encomenda da China com hardware especial: dispositivos Android com impressoras integradas! Para facilitar a vida aos donos de restaurantes e negócios que usam a minha app de pedidos de comida, quero que estes dispositivos imprimam automaticamente os pedidos novos. Se eu conseguir pôr estas máquinas a funcionar com o meu software... desafio aceite!

App de pedidos de comida

Através de uma loja online altamente otimizada as pessoas podem pedir comida para levar e para entrega. Os meus clientes são donos de restaurantes e de lojas que vendem os seus produtos através da app. Os pedidos são encaminhados para a cozinha e para o pessoal de entregas, garantindo que tudo é preparado e entregue.

As pessoas usam a app para pedir comida: os pedidos são encaminhados para a cozinha e para o pessoal de entregas
As pessoas usam a app para pedir comida: os pedidos são encaminhados para a cozinha e para o pessoal de entregas

A necessidade de uma impressora

Nos últimos meses tenho vindo a acrescentar funcionalidades para ajudar os meus clientes a gerir melhor as suas lojas online. Um pedido muito frequente é acabar com o computador ou tablet que têm agora na cozinha para aceder aos pedidos online. Em vez de um computador grande e volumoso, procurei uma alternativa compacta.

Android com impressora integrada

Depois de vasculhar vários mercados internacionais, consegui contactar um fornecedor chinês de hardware que criou um dispositivo Android com impressora integrada! Poucas semanas depois chegou da China: que mundo maravilhoso em que vivemos!

Terminal Android de mão: hardware OEM diretamente da China
Terminal Android de mão: hardware OEM diretamente da China

É um hardware interessante porque:

  • é compacto (em comparação com um PC, tablet ou portátil convencional)
  • funciona a bateria e ligado à corrente
  • funciona por WiFi e tem a opção de internet móvel 4G
  • tem um ecrã tátil grande
  • corre apps Android nativas
  • consegue aceder à web
  • tem uma impressora integrada!
Corre Android, com um toque chinês (em sentido figurado...)
Corre Android, com um toque chinês (em sentido figurado...)

A impressora integrada é superprática, porque faz do dispositivo uma solução completa para tratar pedidos online. Com o ecrã tátil acedem-se aos pedidos e o dispositivo pode ser configurado para os imprimir automaticamente. Isto permite encaminhá-los facilmente para a cozinha e para o pessoal de entregas.

O seu truque de festa é a impressora integrada, superútil para tratar pedidos (online)
O seu truque de festa é a impressora integrada, superútil para tratar pedidos (online)

Correr alguma coisa / software

Para que tudo isto aconteça, preciso de conseguir correr software próprio nele. Embora corra Android, os dispositivos vieram sem manuais, sem instruções e sem kit de desenvolvimento de software. Ou seja, tive de fazer engenharia inversa para entrar neste dispositivo.

O melhor que podes fazer então é experimentar algo que conheças bem e ver se consegues pôr outra das tuas apps a correr no dispositivo. Liguei o dispositivo ao meu tablet Linux e comecei a mexer! Por acaso já tinha criado uma pequena app Android antes... e parecia o candidato perfeito para testar a minha ligação de desenvolvimento ao dispositivo.

Snake '97 na impressora Lemmid, ha!
Snake '97 na impressora Lemmid, ha!

A vantagem de correr algo bem conhecido em hardware desconhecido é que consegues estabelecer uma espécie de referência para as capacidades do hardware. Afinal, a impressora Android é bastante capaz!

Sem documentação nem SDK

Para aproveitar totalmente as capacidades do hardware, precisava de descobrir como programar a impressora integrada. O fornecedor chinês integrou a impressora de uma forma Android não standard (se é que existe uma forma standard no Android..). Os dispositivos que recebi vieram sem software nem código-fonte, uma grande chatice!

Investiguei os números de série e de modelo do dispositivo OEM. Procurei qualquer pista que encontrasse e pesquisei na internet por dispositivos semelhantes. Talvez encontrasse algum código-fonte (relacionado) que me desse um ponto de partida para trabalhar neste dispositivo.

Engenharia inversa de código Java

Depois de horas de pesquisa, encontrei, num canto remoto da internet, um pacote com código-fonte de um dispositivo semelhante! O problema era que estava tudo em chinês!

Código chinês para fazer a impressora funcionar... como é que se pode perceber isto?
Código chinês para fazer a impressora funcionar... como é que se pode perceber isto?
Google Translate em socorro!
Google Translate em socorro!

Analisei o código-fonte e depressa percebi como funcionava o básico. Com o Google Translate descobri que algumas partes do código-fonte eram limitadas ou não totalmente suportadas. Mas pelo menos dava-me um ponto de partida! No fim consegui não só ler o código-fonte chinês, como escrever software para ele!

Código Java para controlar a impressora
Código Java para controlar a impressora

O passo seguinte foi criar um programa de teste para ver se o código chinês adaptado funcionava mesmo. Se conseguisse, poderia começar a escrever software a sério para a impressora Android, software que acabaria por ser usado pelos meus clientes. Pois bem... olha só, funcionou! A impressora começou a fazer barulho e voilà: apareceu um logótipo Lemmid!

SIM! A impressora imprime o logótipo «Lemmid» num talão!
SIM! A impressora imprime o logótipo «Lemmid» num talão!

Conclusão

Isto é brilhante! Estou muito contente por ter encontrado uma forma de escrever software para este hardware especial. Permite-me integrar o hardware na plataforma que estou a construir para os meus clientes.

Se há uma coisa a reter deste artigo, é que às vezes basta tentar e ver se consegues descobrir uma forma de fazer as coisas funcionar. Porque só se não tentares é que podes ter a certeza de que não vai funcionar!

← Mais textos