Com o objetivo de integrar as impressoras fiscais Bematech com aplicações de automação comercial, desenvolvidas na linguagem de programação Java, compatibilizamos nossa dll BemaFI32
O JNI permite que um código escrito em Java utilize a implementação de uma biblioteca escrita em C/C++, assembly ou outras linguagens de programação. Além disso, ele serve para interagir entre programas Java e outros programas escritos em linguagens diferentes. A figura abaixo demonstra isso:
Existe um pacote chamado Bematech.jar, o qual contém todas as classes utilizadas para realizar as operações com as impressoras fiscais. Mas, para poder utilizá-lo, é necessário possuir instalado o ou superior e, alem disso, as variáveis de ambiente path, classpath e java_home configuradas corretamente.
•
|
Configurando as variáveis path, classpath e java_home
|
Para configurar as variáveis, proceda da seguinte forma:
1) Clique com o botão direito em "Meu Computador" e escolha "Propriedades";
2) Clique na aba "Avançado" e no botão "Variáveis de Ambiente";
3) Nas variáveis de usuário, procure a variável chamada path, se não existir crie-a, definindo path como seu nome e o diretório onde estão os arquivos binários do java, por exemplo:
Nome da variável: path
Valor da variável: C:\Arquivos de programas\Java\jre1.5.0_05\bin
4) Procure a variável JAVA_HOME. Caso ela não exista, crie-a, atribuindo-lhe como valor o local onde o JRE está instalado, por exemplo:
Valor da variável: C:\Arquivos de programas\Java\jre1.5.0_05
5) A variável CLASSPATH deve ser configurada com o seguinte valor:
Valor da variável: .;JAVA_HOME
•
|
Entendendo os métodos da classe Bematech
|
A utilização dos métodos nativos que acessam as funções da BemaFI32.dll é feita da seguinte forma:
1) Adicionar no projeto Java o arquivo Bematech.jar, do pacote da BemaFI32.dll disponível no site.
2) Adicionar a seguinte linha de código à classe do projeto:
import bemajava.*;
Observação:
· | No pacote Bematech.jar existem duas classes para tratamento de retornos da impressora. Uma para tratar os retornos tipo Integer e outra para String. Estas classes são: |
· | A classe BemaInteger armazena um valor inteiro e a classe BemaString armazena uma string de caracteres. Elas servem para ser passadas como parâmetro nos métodos que retornam informações da impressora, por exemplo o método Bematech.NumeroCupom: |
(...)
BemaString numerocupom;
numerocupom = new BemaString();
Bematech.NumeroCupom( numerocupom );
System.out.println( "Número do Cupom: " + numerocupom.getBuffer() );
(...)
· | Os nomes dos atributos (buffer e number) não podem ser modificados. |
Exemplo:
import bemajava.*;
class TesteBematech
{
public static void main(String[] args)
{
int iRetorno;
BemaInteger ACK, ST1, ST2, ST3;
ACK = new BemaInteger();
ST1 = new BemaInteger();
ST2 = new BemaInteger();
ST3 = new BemaInteger();
// Habilitando o retorno estendido da impressora MFD
iRetorno = Bematech.HabilitaDesabilitaRetornoEstendidoMFD( "1" );
// Emitindo uma Leitura X
iRetorno = Bematech.LeituraX();
System.out.println( "Retorno: " + iRetorno );
// Pegando o retorno da impressora MFD
iRetorno = Bematech.RetornoImpressoraMFD( ACK, ST1, ST2, ST3 );
String retorno = "ACK: " + ACK.number
retorno += "\nST1: " + ST1.number
retorno += "\nST2: " + ST2.number
retorno += "\nST3: " + ST3.number;
System.out.println( "Retorno Impressora MFD: \n" + retorno );
}
}
|