quarta-feira, 14 de dezembro de 2011

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:

Crie uma pequena interface gráfica em um formulário, semelhante ao exemploabaixo:
Agora na prática!


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!

3 comentários:

  1. 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?

    Ou 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

    ResponderExcluir
    Respostas
    1. 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

      Excluir
    2. Verifique este exemplo. Qualquer dúvida estamos à disposição:

      Baixar Exemplo

      Excluir

Admin: Bruno

Olá Galera! muito grato por estarem acessando nosso blog. Espero que seja possível transmitir de forma compreensível um pouco de meus conhecimentos em programação, para esta comunidade de desenvolvedores que cresce cada vez mais! Espero que Gostem! Abraço! E meu enorme obrigado à Renato Simões, Átila Soares,Wanderson Quinto, Emerson e a toda galera que sempre ajudou meu sincero obrigado....
Especialmente a Natalia Failache e Rita de Cassia que sempre apoiaram este sonho....

De seu amigo Bruno Rafael.