JNI e JNA
Fala galera!
Após um tempo longe (bem longe para falar a verdade lá no congresso nacional), voltei aqui para mostrar-lhes o que na verdade é JNI e JNA e como utiliza-las para conectarmos uma impressora à nossa aplicação java!!! Vamos lá e bons códigos!
Diagrama JNI / JNA

Hoje, vamos ver o quando é fácil fazer um Cupom Fiscal no Java utilizando a camada JNA.
Primeiramente crie um novo projeto.

Agora baixe o driver JNA no site da daruma: http://www.desenvolvedoresdaruma.com.br

O conteúdo da pasta vem zipado, extraia estes arquivos.

Retorne ao Projeto Java, clique com o botão direito em Bibliotecas e em seguida clique em Adicionar JAR/pasta...

Selecione agora o conteúdo da pasta com o driver DarumaFramework.JAR,e clique em OK.

Pronto! Já esta importada a camada JNA DarumaFramework paraseu projeto.


Agora necessitamos importar a camada JNA de maneira quepossamos manipular suas funções através do código do projeto.
Em nosso caso iremos importar o pacote com os métodos uteis para todos osprodutos que é representado pela classe UTIL e os métodos das ImpressorasFiscais contidos na classe ECF.
Conforme abaixo:
Em nosso caso iremos importar o pacote com os métodos uteis para todos osprodutos que é representado pela classe UTIL e os métodos das ImpressorasFiscais contidos na classe ECF.
Conforme abaixo:

Crie uma pequena interface gráfica em um formulário, semelhante ao exemploabaixo:

Agora na prática!
Verificando Porta e a Velocidade da Impressora
Verificando Porta e a Velocidade da Impressora
1 2 3 4 5 | private void mainPanelPropertyChange(java.beans.PropertyChangeEvent evt) { int iRetorno; iRetorno= ECF.eBuscarPortaVelocidade(); } |
Abertura de Cupom Fiscal
1 2 3 4 5 | private void cmd_abrirMouseClicked(java.awt.event.MouseEvent evt) { int iRetorno; iRetorno= ECF.iCFAbrirPadrao(); } |
Registro de Item
1 2 3 4 5 6 7 8 9 10 11 | private void cmd_venderMouseClicked(java.awt.event.MouseEvent evt) { int iRetorno; cmd_abrir.setEnabled( false ); String aliquota, preco, codigo, descricao; aliquota= txt_aliquoata.getText(); preco=txt_preco.getText(); codigo=txt_cod.getText(); descricao=txt_desc.getText(); iRetorno= ECF.iCFVenderResumido(aliquota, preco, codigo, descricao); } |
Totalização do Cupom Fiscal
1 2 3 4 5 6 7 8 9 10 11 12 13 | private void cmd_totalizarMouseClicked(java.awt.event.MouseEvent evt) { pnl_venda.setEnabled( false ); cmd_vender.setEnabled( false ); int iRetorno= ECF.iCFTotalizarCupomPadrao(); if (iRetorno==1){ JOptionPane.showMessageDialog( null , "Cupom Fiscal Totalizado!" ); } else { JOptionPane.showMessageDialog( null , "Cupom Fiscal não Totalizado!" ); } |
Efetua Pagamento Padrão (Dinheiro)
1 2 3 4 | private void cmd_pgtoMouseClicked(java.awt.event.MouseEvent evt) { cmd_totalizar.setEnabled( false ); int iRetorno= ECF.iCFEfetuarPagamentoPadrao(); } |
Encerramento de Cupom Fiscal
1 2 3 4 | private void cmd_finalizaMouseClicked(java.awt.event.MouseEvent evt) { cmd_pgto.setEnabled( false ); int iRetorno= ECF.iCFEncerrarConfigMsg( "Volte Sempre!" ); } |
É isso ai galera! Espero que mais uma vez tenha sido útil para vocês e que todos tenham desmitificado esta etapa da programação.
Abraços de seu amigo Bruno Rafael!
Boa noite Bruno, estou começando a trabalhar com o DarumaFramework.dll, embora esteja trabalhando com o eclipse, fiz os procedimentos que você indicou incluindo os 3 JARs nas minhas libs. Mas continua dando falha que não pode validar o link com o "DarumaFramework" no JNA, já tentei colocar as DLLs na pasta de src, na pasta do windows, na system32, junto com os jars da Daruma, já tentei renomear a DLL para ter o W minusculo, porque quando baixamos ela vem DarumaFrameWork.dll e nada funcinou. Tem alguma sugestão que possa me ajudar? Onde você colocou essas DLLs? rs O que eu fiz de errado?
ResponderExcluirOu teria como você me enviar a estrutura do teu projeto compilado? não sei se tem algum problema com a versão recente do site?
Agradeço qualquer ajuda... Abraços
Olá meu caro Rodrigo, para saber qual o problema que está acontecendo, mande o erro que ele deve estar causando para que eu possa analisa-lo. Aguardo
ExcluirVerifique este exemplo. Qualquer dúvida estamos à disposição:
ExcluirBaixar Exemplo