Strict Standards: Non-static method themeGluedIdeas_Subtle::initOptions() should not be called statically in /home/riopro/www/blog.riopro.com.br/wp-content/themes/gluedideas_subtle/header.php on line 19
Riopro Blog - » Instalando a Epson TM-T88III no Ubuntu

Instalando a Epson TM-T88III no Ubuntu



Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

A menos de 15 dias recebemos uma notícia na Riopro: teriamos que colocar uma impressora de cupom não fiscal para funcionar no Linux, mais precisamente no Ubuntu 6.06LTS. À primeira vista alguém poderia perguntar porque teriamos que ter uma instalação ao invés de simplesmente imprimirmos por uma /dev/ttySn da vida. O desafio surgiu do fato da inteface do sistema ser totalmente web e desejarmos utilizar apenas o browser, sem necessidade de instalações em clientes, como JRE’s para suportar applets assinados digitalmente.

Desafio lançado fomos à luta. Inicialmente ficamos maravilhados com a Daruma que possui um suporte ao desenvolvedor muito ativo, podendo ser acessado inclusive pelo Skype, e se propõe a suportar o Linux. Entramos em contato com o suporte e o mesmo foi extremamente receptivo. Mas, como tudo que está fácil demais tem que dar errado, tivemos um pequeno contratempo: a Daruma está sem estoque no Rio de Janeiro e segundo o distribuidor local, está com o pedido atrasado a algum tempo e sem data confirmada de chegada.

Como diz o ditado: “Rei morto, Rei posto”. Partimos então para uma alternativa proposta pelo revendedor, a mini-impressora Epson TM-T88III, que é uma impressora térmica. No começo não ficamos muito otimistas, pois o site do linuxprinting.org para essa impressora avisava: I haven’t got this printer to work with UNIX CUPS printing system, there is no driver which offers text-generic only printer…. Problemas à vista. Como o fornecedor havia dado a impressora para teste sem compromisso, resolvemos “meter a cara”. Pois é, conseguimos. Com um pequeno bug (um zero no inicio de cada linha), implementamos a mesma. Para não descrevermos de forma tão longa quanto o processo de aprendizado, segue abaixo a receita de bolo.

1) Como nenhum maluco no Ubuntu espera que você vá instalar uma impressora serial (esperam que você imprima direto pela porta), o primeiro passo é habilitar a porta serial na lista de portas de impressora disponíveis para impressão. No Ubuntu fizemos da seguinte maneira:

$ sudo ln -s /usr/lib/cups/backend-available/serial /usr/lib/cups/backend/serial

2) Partimos, então, para instalação da impressora como outra qualquer: fomos em Sistema | Administração | Imprimindo;

3) Escolhemos criar nova impressora local e escolhemos o Driver Generic | ESC/P Dot Matrix Printer e padrão epsonc;

4) Agora vem a parte mais chata. Se você testasse a impressora nesse momento, nada mais que lixo sairia impresso. O que acontece é que temos que setar a taxa de dados (na guia conexão) para 9600 e escolher na guia geral uma resolução apropriada. Nem todas as resoluções funcionam com sucesso. As que conseguimos foram: 120X180, 60×180, 120×216 e 60×216. Na verdade, conseguimos em algumas, mas não na 180×180.

É isso. Note que cada resolução impĺicará num espaçamento diferente entre linhas e no tamanho dos caracteres. Em linhas gerais, diria que ficou bem a contento. Vamos ainda fazer o teste com uma mini-impressora Epson no padrão matricial e com certeza, vamos atualizar o linuxprinting.org para facilitar o trabalho de difusão da informação.

 Atualizando: Só para acrescentar uma informação, instalamos a impressora serial e a paralela também. Um teste que ainda estou para fazer é colocar essa impressora paralela como ponto de rede (é que algumas impressoras são usadas mais parcialmente e fazer o compartilhamento pode ajudar na redução de custos).

Informações e Links

Junte-se comentando, lendo o que os outros dizem ou colocando um link a partir do seu blog.


Outros Artigos

Strict Standards: Only variables should be assigned by reference in /home/riopro/www/blog.riopro.com.br/wp-includes/post.php on line 117
E o nosso designer soltou o verbo

Strict Standards: Only variables should be assigned by reference in /home/riopro/www/blog.riopro.com.br/wp-includes/post.php on line 117
Altos e Baixos do JustJava 2006

Comente

Tire um tempo para comentar e nos dizer o que você acha. Alguns códigos HTML são permitidos para formatação.

Comentários dos Leitores


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Muito bom esse howto, parabéns!


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Vc tem experiencia com impressora fiscal instalada no linux e acessada por uma aplicação WEB ?


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

@Mariolando, esse era justamente o problema. Se a aplicação fosse desktop, não precisaríamos de nada disso, bastava o programa mandar texto para /dev/lp0 (ou, neste caso, /dev/ttyS0) para tudo funcionar. Mas como a aplicação era web, tivemos que implementar da maneira descrita para que o Firefox ou qualquer outro navegador pudessem imprimir para a impressora térmica / fiscal normalmente. A impressora aparece como uma qualquer do Gnome. Em breve deveremos receber outro modelo (matricial) para testar, se for muito diferente postamos aqui.


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Mariolando,
O problema de sistemas para cupom fiscal é que a impressão deve ser imediata, e não em spool. O que quero dizer com isso é que a receita obriga que seu sistema imprima a cada item e não após a conclusão de todos os itens. Isso para evitar estornos parciais, maracutaias e etc… Para isso, talvez o melhor seja o uso de um applet autenticado (para ter acesso à máquina) que esse applet realize a impressão de cada lançamento. Boa sorte.


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Otávio,

Você conseguiu fazer com que a impressão fosse feita diretamente na impressora? Sem passar pelo spool? Pois eu fiz uma aplicação Web que utiliza a TM-T88III, mas na impressão ela é gerenciada pelo Windows, o que eu não gostaria, queria poder mandar tudo direto para a impressora. Você teria alguma informação sobre?

Obrigado


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Ou você configura o driver para não utilizar o spool ou só fazendo um applet.


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Eu estou utilizando a RxTx.comm e escrevi um programa que acessa a lpt1, até então esse é um programa standalone. Para executar em minha aplicação intranet precisei reescrever em uma applet. OK.
Mas qdo executo tenho probelmas com a permissão da applet. O que devo fazer?
Estou a mais de um mês apanhando e não consigo assinar minha applet. Você teria um passo a passo de como fazê-lo de modo que eu estou utilizando a RxTx que é portável para qq S.O.


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Thiago, o uso de applets assinadas tem seus problemas. Você está com um certificado digital pago? A questão das policys e das diferentes jvm’s dos usuários também atrapalha bastante. Dá uma olhada nesse tutorial.

http://www.inf.ufrgs.br/procpar/disc/cmp167/trabalhos/sem2001-1/T2/herrmann/

Outra coisa, esse tipo de dúvida é legal postar num site específico como o guj (http://www.guj.com.br), até pra poder passar os erros que estão ocorrendo e etc…


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

É, eu até postei lá, mas não tive muita atenção nesse sentido. Algumas pessoas se preocuparam mais em criticar e dizer que minhas dúvidas já haviam sido esclarecidas em outros tópicos e etc…
Sendo que eu li todos eles, segui tutos sobre o assunto, fiz, refiz, já to ficando sem munição, sem alternativas…
Estou utilizando uma certificação própria de duração de 6 meses gerada com a keytool e assinando o jar com o jarsigner.
Acho que estou errando em algum passo.
Minhas dúvidas:
Como devo compactar o jar para fazê-lo funcionar?
Devo assinar o rxtx.comm também?
Se sim, como e aonde devo colocá-lo no projeto?
Declaro no manifest.mf?
Desculpe-me pelo texto enorme, mas estou ficando desesperado…
Muito Obrigado.


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Um jar já é um arquivo compactado. Você leu o link que eu postei? Leia o tópico:

HASH E O ARQUIVO ASSINADO

do link que eu passei acima. Ele diz a resposta. Não posso copiar pois não sei qual a licença do artigo. Assine seus arquivos no manifest


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Olá Otavio,
Você poderia me mostrar como você fazia para formatar seu texto enviado à impressora?
Obrigado.


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Thiago, se estivéssemos enviando pela porta eu mandaria texto plain. No caso, mando um html mesmo (com bold, diferentes tamanhos de fonte e tudo mais). Essa foi a “graça” dessa impressora instalada.

O que você tem que controlar é o número de colunas, pois ela tem 56 colunas. Então, seu programa deve quebrar as linhas para evitar sair da folha.

A gente só usa um método que tem uma constante com o número de colunas e passa uma linha pra esse método. O método então avalia se ele tem que quebrar a linha ou não, e se tiver, coloca em mais de uma linha.


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Não entendi. O que seria texto plain?
E atualmente a aplicação está mandando um html formatado, assim como a sua, mas preciso fazer o bendito acesso direto à lpt1 com o objetivo de agilizar os processos do PDV. Um deles seria não aparecer mais a tela de confirmação de impressão. Seria possível faze-lo já com a aplicação mandando o hmtl?


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Você não pode mandar um html. A impressora aceita receber um arquivo postscript. O que você pode fazer é gerar um postscript.

Se você vai fazer um PDV, tem que mandar direto, senão a Receita vai cair de pau no seu sistema.

Para enviar formatado sem ser postscript, só usando a própria linguagem da impressora. Cada impressora tem um conjunto de caracteres para bold, acentos,…

Não sei qual essa impressora usa, mas dá pra fazer. Outra coisa é que se você vai fazer isso pela lpt1, vai precisar fazer um applet ou uma aplicação desktop.

Um browser vai sempre te pedir para pressionar o botão de impressão. Isso não tem jeito, é questão de segurança.


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Desculpe-me por não ter me explicado direito. O PDV do qual me referi vende apenas serviço e não produtos, logo não se aplica.
Quanto à applet eu estou fazendo com ActiveX já que o enorme montante a ser gasto anualmente com registro de certificação RSA está fora do escopo de despesas da empresa.
Se um dia os terminais precisarem mudar para linux eu irei adaptar para algo semelhante nele e se não existir vou instalar o Internet Explorer no Wine mesmo…


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Thiago, minha opinião é: ActiveX é muito roubada! Mas, ok. O resto se mantém. Se for pela intranet, você não precisa pagar um certificador. Pode fazer um interno…. Boa sorte


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Olá otavio,
Consegui fazer a applet assinada!!!
Está funcionando… Mas eu ainda tenho um pequeno probleminha que não sei se será possível resolver.
Essa minha applet utiliza o driver da TM T88III, mas o que percebemos aqui é que a velocidade da impressão é baixa segundo às expectativas dos usuários quanto a um acesso direto à LPT1 (sabemos por motivos obvios o porquê), a questão é:
Será que existe algum modo de otimizar esse driver em relação à velocidade?
Se sim, você conheceria um modo ou alguém que já o tenha feito?
Muito obrigado.


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

quanto a otimização não sei. mas realmente, como ele gera o postscript é mais lento que o normal, ou impressão direto. abraços


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Pois é. Aí é que está minha dúvida. Eu não estou gerando nenhum arquivo postscript. Estou utilizando o próprio driver da impressora. A applet atua como um programa desktop recebendo informações para a impressão via javascript…


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

o driver justamente cria o arquivo postscript e manda para impressão. Existem alguns que mandam direto para a porta, mas não é esse o caso. O micro é bom? Tem boa velocidade? Se não for, testa com um micro rápido para saber se pode ser nele o problema de performance (essa impressora eu já reparei que tem um delay pequeno de inicialização e depois cospe tudo de uma vez). De qualquer maneira, impressora de cupom fiscal deve se preocupar, por exemplo, com as informações de rolo terminando, …


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

(comentário removido a pedido do autor)


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

bruno, isso funciona em um servidor? nesse caso, suporta mais de 1 impressora? roda em linux?


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

(comentário removido a pedido do autor)


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Cara, eu to penando aqui com a Daruma.
Mesmo minha aplicação sendo Desktop(Swing), no meu caso tem que ser via usb no Ubuntu.

Alguma sugestão?


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Lamento, mas não sei. Tente entrar em contato com a Daruma. Eles são bem receptivos e podem te ajudar.


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

Otavio você conseguiu fazer essa impressora imprimir em 180×180? Se conseguiu como fez?
Obrigado desde já.