JavaFree.org | RubyOnBr.org

Acesso a hardware

Acompanhar Acesso a hardware 34 posts, 9 participantes

Páginas: 1 2

Avatar Khaoz 16 posts

Pessoal,
Qual a melhor forma de acessar dispositivos como:

Impressoras fiscais;
Balanças (aquelas encontradas em supermercados);
Máquinas de preencher cheques;
Leitores opticos;
Leitores de digitais (aquele lance de reconhecer seu dedão :D);

Entre outros…

Através de uma aplicação desenvolvida em rails ?

 
A013c064de659bbff814eb1f4410446b?s=80 Clovis 783 posts

Creio que seja possivel… mas eu gostaria de ver uma implementação dessas utilizando ruby/rails….

 
Avatar Shairon Toledo 1428 posts

Em rails eu não conheço mas se utilizar a classe IO dá pra fazer algumas coisas. Exemplo:

 
A013c064de659bbff814eb1f4410446b?s=80 Clovis 783 posts

mas por exemplo..
se eu quiser acesar um dispositivo na minha máquina, interagindo como um servidor web remoto…

sera que tem como??

Pq esse IO.open vai abrir uma requisicao IO no servidor.. não é naoo????

 
Avatar coherdeiro 105 posts

É acho que é só para ambientes internos esse código.

Acho que o maior problema está na configuração da página web. Estou precisando realizar impressão na impressora bematech, até aí ok, o problema é q na configuração de página do IE por exemplo fica aquela margem, top, left, right, e o ideal seria zerar.

Outro problema é que na impressão sai a url da página de onde está imprimindo, o ideal seria tirar isso.

Será que tem como fazer isso?

 
Avatar Eduardo Fiorezi 45 posts

Khaoz, eu abri um topico a um tempão atras, com a duvida para acessar dlls. No final do post dei um exemplo com o que o pessoal me passou de material.

Consegui comunicar com uma Impressora Fiscal Bematech perfeitamente…

bematech_test.rb

bematech.rb

 
Avatar Eduardo Fiorezi 45 posts

Mas cai no problema que o Clovis citou,, usando com Rails a comunicação vai ser no servidor. Parei de pesquisar porque vi que o pessoal aqui não iria aproveitar a idéia. :(

Como poderia executar isso localmente? alguém tem uma ideia?

Acho que o APOLLO cabe bem nesse caso… Dai ficaria um software em cada caixa…

 
Avatar Shairon Toledo 1428 posts

Qual sistema? Sei para linux.

 
A013c064de659bbff814eb1f4410446b?s=80 Clovis 783 posts

Realmente, para instanciar uma dll local.. não faço idéia de como funcionaria, ehehehe

só se vc criasse uma aplicacao pra cada cliente, e comunicasse com um banco, servidor remoto… ehehee

 
Avatar Shairon Toledo 1428 posts

não estou contando com dll sou analfabeto nessa disciplina win32

 
Avatar Ronie Uliana 906 posts

Hmmm… se vc está tentando fazer a impressão via IE (imprimir o HTML) pq vc não tenta gerar um PDF e imprimir ele?

 
Avatar Eduardo Fiorezi 45 posts

Então Ronnie, com as impressoras fiscais não é possivel imprimir o HTML,, o cupom tem q sair nela… para o governo descontar direto(nisso eles são bons). Seria mais ou menos assim o esquema.

1 app central.

3 terminais com 3 impressoras. Nesse terminal deve ter uma aplicação local para fazer essas impressoões e alimentar a aplicação…

 
Avatar Rodrigo Rosauro 310 posts

Para quem está querendo fazer a impressão local (no IE/Firefox), o seu problema não é com Ruby, mas sim com HTML e/ou coisas que sejam intepretadas localmente… se o seu client vai ser Internet Explorer acho que a maneira mais simples é fazer um ActiveX/VScript que acesse a impressora fiscal.

Para quem está querendo fazer isso no servidor (que esse sim está rodando o Ruby), a idéia é fazer igual o Eduardo Fiorezi mesmo, utilizando Win32API (se o seu servidor está rodando windows).

Se o seu servidor está rodando no linux (e vc já tem uma library linux que acessa a impressora), vc pode fazer usando o módulo DL, que é parecido com o Win32API, mas é multi-plataforma. Mais informações sobre como usar o módulo DL aqui: http://forum.rubyonbr.org/forums/1/topics/934

Agora, se o seu servidor está rodando linux, e você só tem DLL windows para acessar a impressora fiscal, vc pode usar DRB ou algo parecido para enviar uma mensagem para um daemon ruby que esteja rodando em um windows, e esse sim enviaria o comando para a impressora.

Bom.. tem outras soluções, lógico… essas são apenas sujestões ;)

 
Avatar Eduardo Fiorezi 45 posts

Hummm muito bom Rodrigo show de bola…

 
Avatar coherdeiro 105 posts

Rodrigo,

Você teria como passar alguma idéia de como desenvolver um Activex para acessar a impressora local?

 
Avatar TaQ 191 posts

Apesar de serem conhecidos por ser meio ‘instáveis’, uma boa solução são applets Java. Você foge da exclusividade do Internet Explorer e se aproveita do fato de ter JVM instalada em um monte de lugares. Tenho uns aqui que se comunicam com a paralela de boa. É só não mandar muita coisa para ele que ele não chia. :-)

 
Avatar Khaoz 16 posts

O objetivo não seria acessar as informações partindo do servidor e sim lá do lado cliente mesmo. A solução do TaQ é boa, vou dar uma olhada mais a fundo nisso.
Obrigado a todos.

 
Avatar Rodrigo Rosauro 310 posts

coherdeiro… infelizmente eu nunca fiz isso, mas um pessoal do meu trampo já fez activex (não sei se acessava DDL local)… Tá meio ruim de eu falar com eles agora pq to num escritório em chicago, mas assim que eu voltar posso verificar.

TaQ, eu já desenvolvi alguns applets… mas no caso de impressora fiscal, o applet teria que acessar uma DDL local via JNI, o que (in)felizmente só é possível se o applet for assinado por alguma empresa tipo a Verisign (e vc óbviamente paga por isso). Se isso não for um impeçilho, acho que seria uma bela solução, realmente ;)

 
Avatar TaQ 191 posts

Rodrigo, dá para alterar o arquivo de policies do Java para permitir o applet a arreganhar a máquina. Aí o bicho pega. :-)

 
Avatar coherdeiro 105 posts

Pessoal,

Estou desenvolvendo o activex, assim que estiver pronto posto um link ok.

Melhor ainda, achei o componente pronto para a web, com o exemplo de uso no html, referenciando a classe.

Segue link

Links: BemaFisc

 
Avatar Rodrigo Rosauro 310 posts

TaQ… mas o arquivo tem que ser alterado em cada uma das máquinas que for acessar o sistema, né?

Pensando para um sistema web externo é inviável… mas para sistema interno (com certeza vai ser interno se tem fiscal printer) realmente é uma boa :D

Só não pode esquecer de arreganhar só para o domínio “xyz”, porque se arreganhar para tudo… a máquina vai ficar sem segurança nenhuma ;)

 
Avatar TaQ 191 posts

Justamente, se tem uma impressora fiscal na jogada, implica que você tem um certo controle no computador onde o bicho está. Em um sistema aberto não vai ter nenhum maluco com uma impressora fiscal querendo que imprima alguma coisa doida lá. :-) Aí nesse caso você deixa um arquivinho com a configuração SÓ DAQUELE DOMÍNIO, lógico, vai lá copia e cola, e zerou.
E evita o ActiveX, que aí já implica em usar Internet Explorer e Windows.

 
Avatar Shairon Toledo 1428 posts

Olha uma solução seria mudar a estratégia.


Em unix temos o serviço de impressão lpd, para compartilhar uma(s) impressora(s) editamos(depende do sistema) o arquivos /etc/hosts.lpd liberando os hosts que podem usar o sistema de impressão da máquina. E ai? e ai que vc configura as impressoras local em cada máquina e dispara a impressão via lpr e funfa.


Configurar o servidor de impressão que pode ser o mesmo que roda o rails a fazer routing para impressoras compartilhadas em cada máquina do cliente. Exemplo:

Rails+Cups = 192.168.1.100

Win32Client 1 = 192.168.1.2
Win32Client 2 = 192.168.1.3

Quando usuário logar ele escolherá a impressora que uma aplicação rails vai disponibilizar dizendo “minha printer é …”
Para disparar a impressão utilize impressão em raw-data que funfa.


Outra seria uma mesclagem entre a estrategia 2 mas com um adendo no sentido de não depender do cups. Não obstante o desenvolvimento de um software simples seria necessário, com a resposabilidade de receber objetos via Drb de requisições de impressão e rails enviaria os dados para a máquina local.

Em verdade lhe digo isso tudo funciona só depende da modelo/pdl impressora.

 
Avatar coherdeiro 105 posts

Rodrigo,

Pensando para um sistema web externo é inviável… mas para sistema interno (com certeza vai ser interno se tem fiscal printer) realmente é uma boa :D

O q é inviável? o applet? Achei que o Taq sugeriu a utilização do applet justamente para acesso Web.

Taq,

Eu acredito que é necessário avaliar a quem se destina o aplicativo, para definir o q será melhor usar, se applet ou activex, no meu caso eu tenho certeza que 100% dos usuários utilizam o Internet Explorer, agora ter o JVM acredito que nem 10% saiba o q é.

 
Avatar Rodrigo Rosauro 310 posts

É inviável utilizar um applet para um sistema web EXTERNO (com acesso irrestrito pela internet). Isso porque antes de utilizar o applet com JNI você tem que alterar um arquivo do java que fica na máquina que está acessando o “site” (máquina cliente).

Mas levando em consideração que isso envolve uma impressora fiscal, é de se imaginar que isso será um sistema WEB INTERNO (continua sendo um sistema web, mas é para uso interno apenas). Nesse caso você tem maior controle sobre quais máquinas estarão acessando o sistema, possibilitando a alteração desse arquivo nas máquinas que vao usar impressora fiscal :)

Próxima página

Páginas: 1 2