Estou implementando aqui um caixa rapido, e para este caixa rapido preciso de uma applet que comunique com a impressora fiscal.
Chrome tranquilo… firefox também…
Porém no IE quando eu do reload na pagina ja era!
segue o código.
[code]import java.applet.;
import java.security.;
import java.io.;
import java.awt.;
import java.lang.reflect.Method;
public class sisCmdAcj extends Applet
{
String msg;
String base;
public void init()
{
msg = this.getParameter("msg");
base = this.getParameter("base");
}
public String EXIST(final String nome)
{
String ret;
try
{
ret = (String) AccessController.doPrivileged(new PrivilegedExceptionAction()
{
public Object run() throws Exception
{
File arq = new File(base + "/" + nome);
if(arq.exists()) return "true";
return "false";
}
});
}
catch(Exception e)
{
StringWriter errors = new StringWriter();
e.printStackTrace(new PrintWriter(errors));
msg = errors.toString();
return msg;
}
return ret;
}
public String READALL(final String nome)
{
String ret;
try
{
ret = (String) AccessController.doPrivileged(new PrivilegedExceptionAction()
{
public Object run() throws Exception
{
File arq = new File(base + "/" + nome);
BufferedReader br = new BufferedReader(new FileReader(arq));
StringBuffer bufSaida = new StringBuffer();
String linha;
while( (linha = br.readLine()) != null )
{
bufSaida.append(linha + "\n");
}
br.close();
return bufSaida.toString();
}
});
}
catch(Exception e)
{
StringWriter errors = new StringWriter();
e.printStackTrace(new PrintWriter(errors));
msg = errors.toString();
return msg;
}
return ret;
}
public String READLN(final String nome, final int iLin)
{
String ret;
try
{
ret = (String) AccessController.doPrivileged(new PrivilegedExceptionAction()
{
public Object run() throws Exception
{
File arq = new File(base + "/" + nome);
BufferedReader br = new BufferedReader(new FileReader(arq));
StringBuffer bufSaida = new StringBuffer();
int rLin = 0;
String linha;
while( (linha = br.readLine()) != null )
{
if(iLin == rLin)
{
br.close();
return linha;
}
rLin += 1;
}
return "";
}
});
}
catch(Exception e)
{
StringWriter errors = new StringWriter();
e.printStackTrace(new PrintWriter(errors));
msg = errors.toString();
return msg;
}
return ret;
}
public String CREATE(final String nome)
{
String ret;
try
{
ret = (String) AccessController.doPrivileged(new PrivilegedExceptionAction()
{
public Object run() throws Exception
{
File arq = new File(base + "/" + nome);
boolean ret = arq.createNewFile();
if(ret == true) return "true";
return "false";
}
});
}
catch(Exception e)
{
StringWriter errors = new StringWriter();
e.printStackTrace(new PrintWriter(errors));
msg = errors.toString();
return msg;
}
return ret;
}
public void paint(Graphics g)
{
g.drawString(msg,20,20);
}
}
[/code]
import java.applet.*;
import java.security.*;
import com.sun.jna.Library;
import com.sun.jna.Native;
import java.io.*;
import java.awt.*;
import java.lang.reflect.Method;
import bemajava.*;
public class bemaFun extends Applet
{
String msg;
/**
*******************************************************************
* Funcao : init
* Descricao : equivale ao Main para um Applet
*******************************************************************/
public void init()
{
//msg = System.getProperty ("java.library.path");
msg = "222";
//~ BemaInteger iEstado = new BemaInteger();
//~ Integer ret = Bematech.VerificaEstadoGaveta(iEstado);
//~ BemaString qq = new BemaString();
//~ qq.buffer=" ";
//~ Integer ret = Bematech.RetornoAliquotas(qq);
BemaInteger ACK = new BemaInteger();
BemaInteger ST1 = new BemaInteger();
BemaInteger ST2 = new BemaInteger();
Integer ret = Bematech.VerificaEstadoImpressora(ACK,ST1,ST2);
msg = ACK.number + " " + ST1.number + " " + ST2.number;
//msg = "aaa " + iEstado.number;
//msg = "bbb " + qq.buffer;
//msg = Integer.toString(pEstado.number);
}
/**
*******************************************************************
* Funcao : paint
* Descricao : funcao que desenha na tela, sera removida do Applet futuramente,
* permanesce para facilitar Debug se necessario
*******************************************************************/
public void paint(Graphics g)
{
g.drawString(msg,100,20);
}
/**
*******************************************************************
* Funcao : callFun
* Descricao : funcao auxiliar para chamar uma funcao da dll
*******************************************************************/
public Object callFun(String funcao, Class[] proto, Object[] args)
{
try
{
Method met = Bematech.class.getMethod(funcao, proto);
return execPriv(null, met, args);
}
catch (Exception e)
{
StringWriter errors = new StringWriter();
e.printStackTrace(new PrintWriter(errors));
msg = errors.toString();
return 42;
}
}
/**
*******************************************************************
* Funcao : execPriv
* Descricao : executa a funcao dentro de um contexto privilegiado,
* assim o browser permitirá a ação
*******************************************************************/
public Object execPriv(final Object o, final Method m, final Object[] args) throws Exception
{
Object ret = (Object) AccessController.doPrivileged(new PrivilegedExceptionAction()
{
public Object run() throws Exception
{
return m.invoke(o, args);
}
});
return ret;
}
/**
*******************************************************************
* Funcao : jInt
* Descricao : transforma byte array em inteiro e formata para passar
* por JSON
*******************************************************************/
public String jInt(int par)
{
return Integer.toString( par );
}
/**
*******************************************************************
* Funcao : jStr
* Descricao : transforma byte array em String Fixa e formata para
* passar por JSON
*******************************************************************/
public String jStr(String par)
{
return "\""+par+"\"";
}
/**
*******************************************************************
* Funcao : json
* Descricao : recebe array de Strings e transforma em JSON
*******************************************************************/
public String json(String[] pars)
{
String eRet = "[";
eRet += pars[0];
for(int i=1;i<pars.length;i++)
{
eRet += "," + pars[i];
}
eRet += "]";
return eRet;
}
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
// CUPOM FISCAL
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
public int AbreCupom(String CPF_CGC)
{
return (int) callFun("AbreCupom"
,new Class[] {String.class}
,new Object[] {CPF_CGC});
}
public int AumentaDescricaoItem(String descricao)
{
return (int) callFun("AumentaDescricaoItem"
,new Class[] {String.class}
,new Object[] {descricao});
}
public int CancelaItemAnterior()
{
return (int) callFun("CancelaItemAnterior"
,new Class[] {}
,new Object[] {});
}
public int CancelaItemGenerico(String numeroItem)
{
return (int) callFun("CancelaItemGenerico"
,new Class[] {String.class}
,new Object[] {numeroItem});
}
public int CancelaCupom()
{
return (int) callFun("CancelaCupom"
,new Class[] {}
,new Object[] {});
}
public int EfetuaFormaPagamento(String formaPagamento, String valorFormaPagamento)
{
return (int) callFun("EfetuaFormaPagamento"
,new Class[] {String.class,String.class}
,new Object[] {formaPagamento,valorFormaPagamento});
}
public int EfetuaFormaPagamentoDescricaoForma(String formaPagamento, String valorFormaPagamento, String descricaoForma)
{
return (int) callFun("EfetuaFormaPagamentoDescricaoForma"
,new Class[] {String.class,String.class,String.class}
,new Object[] {formaPagamento,valorFormaPagamento,descricaoForma});
}
public int EstornoFormasPagamento(String formaOrigem,String formaDestino,String valor)
{
return (int) callFun("EstornoFormasPagamento"
,new Class[] {String.class,String.class,String.class}
,new Object[] {formaOrigem,formaDestino,valor});
}
public int FechaCupom(String formaPagamento,String acrescimoDesconto,String tipoAcrescimoDesconto
,String valorAcrescimoDesconto,String valorPago,String mensagem)
{
return (int) callFun("FechaCupom"
,new Class[] {String.class,String.class,String.class,String.class,String.class,String.class}
,new Object[] {formaPagamento, acrescimoDesconto, tipoAcrescimoDesconto, valorAcrescimoDesconto, valorPago, mensagem});
}
public int FechaCupomResumido(String formaPagamento,String mensagem)
{
return (int) callFun("FechaCupomResumido"
,new Class[] {String.class, String.class}
,new Object[] {formaPagamento, mensagem});
}
public int EfetuaFormaPagamentoIndice(String indice,String valorFormaPagamento)
{
return (int) callFun("EfetuaFormaPagamentoIndice"
,new Class[] {String.class, String.class}
,new Object[] {indice, valorFormaPagamento});
}
public int IniciaFechamentoCupom(String acrescimoDesconto,String tipoAcrescimoDesconto,String valorAcrescimoDesconto)
{
return (int) callFun("IniciaFechamentoCupom"
,new Class[] {String.class,String.class,String.class}
,new Object[] {acrescimoDesconto, tipoAcrescimoDesconto, valorAcrescimoDesconto});
}
public int VendeItem(String codigo, String descricao, String aliquota,String tipoQuantidade
,String cQuantidade, int iCasasDecimais, String cUnitario, String tipoDesconto,String desconto)
{
return (int) callFun("VendeItem"
,new Class[] {String.class, String.class, String.class,String.class,String.class, int.class, String.class, String.class,String.class}
,new Object[] {codigo, descricao, aliquota,tipoQuantidade, cQuantidade, iCasasDecimais, cUnitario, tipoDesconto, desconto});
}
public int VendeItemDepartamento(String codigo,String descricao,String aliquota,String valorUnitario,String cQuantidade
,String valorAcrescimo,String valorDesconto,String indiceDepartamento,String cUnidadeMedida)
{
return (int) callFun("VendeItemDepartamento"
,new Class[] {String.class ,String.class ,String.class ,String.class ,String.class,String.class ,String.class ,String.class ,String.class}
,new Object[] {codigo,descricao,aliquota,valorUnitario,cQuantidade,valorAcrescimo,valorDesconto,indiceDepartamento,cUnidadeMedida});
}
public int TerminaFechamentoCupom(String mensagem)
{
return (int) callFun("TerminaFechamentoCupom"
,new Class[] {String.class}
,new Object[] {mensagem});
}
public int UsaUnidadeMedida(String cUnidadeMedida)
{
return (int) callFun("UsaUnidadeMedida"
,new Class[] {String.class}
,new Object[] {cUnidadeMedida});
}
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
// RELATORIOS FISCAIS
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
public int LeituraMemoriaFiscalData(String dataInicial, String dataFinal)
{
return (int) callFun("LeituraMemoriaFiscalData"
,new Class[] {String.class,String.class}
,new Object[] {dataInicial,dataFinal});
}
public int LeituraMemoriaFiscalReducao(String cReducaoInicial, String cReducaoFinal)
{
return (int) callFun("LeituraMemoriaFiscalReducao"
,new Class[] {String.class,String.class}
,new Object[] {cReducaoInicial,cReducaoFinal});
}
public int LeituraMemoriaFiscalSerialData(String dataInicial, String dataFinal)
{
return (int) callFun("LeituraMemoriaFiscalSerialData"
,new Class[] {String.class,String.class}
,new Object[] {dataInicial,dataFinal});
}
public int LeituraMemoriaFiscalSerialReducao(String cReducaoInicial, String cReducaoFinal)
{
return (int) callFun("LeituraMemoriaFiscalSerialReducao"
,new Class[] {String.class,String.class}
,new Object[] {cReducaoInicial,cReducaoFinal});
}
public int LeituraX()
{
return (int) callFun("LeituraX"
,new Class[] {}
,new Object[] {});
}
public int LeituraXSerial()
{
return (int) callFun("LeituraXSerial"
,new Class[] {}
,new Object[] {});
}
public int ReducaoZ(String data, String cHora)
{
return (int) callFun("ReducaoZ"
,new Class[] {String.class,String.class}
,new Object[] {data,cHora});
}
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
// NAO FISCAL
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
public int UsaComprovanteNaoFiscalVinculado(String texto)
{
return (int) callFun("UsaComprovanteNaoFiscalVinculado"
,new Class[] {String.class}
,new Object[] {texto});
}
public int FechaComprovanteNaoFiscalVinculado()
{
return (int) callFun("FechaComprovanteNaoFiscalVinculado"
,new Class[] {}
,new Object[] {});
}
public int FechaRelatorioGerencial()
{
return (int) callFun("FechaRelatorioGerencial"
,new Class[] {}
,new Object[] {});
}
public int RelatorioGerencial(String texto)
{
return (int) callFun("RelatorioGerencial"
,new Class[] {String.class}
,new Object[] {texto});
}
public int RecebimentoNaoFiscal(String indiceTotalizador, String valorRecebimento, String formaPagamento)
{
return (int) callFun("RecebimentoNaoFiscal"
,new Class[] {String.class,String.class,String.class}
,new Object[] {indiceTotalizador,valorRecebimento,formaPagamento});
}
public int Sangria(String valor)
{
return (int) callFun("Sangria"
,new Class[] {String.class}
,new Object[] {valor});
}
public int Suprimento(String valor, String formaPagamento)
{
return (int) callFun("Suprimento"
,new Class[] {String.class,String.class}
,new Object[] {valor,formaPagamento});
}
public int AbreComprovanteNaoFiscalVinculado(String formaPagamento,String valor,String numeroCupom)
{
return (int) callFun("AbreComprovanteNaoFiscalVinculado"
,new Class[] {String.class,String.class,String.class}
,new Object[] {formaPagamento,valor,numeroCupom});
}
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
// INICIALIZACAO
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
public int AlteraSimboloMoeda(String simboloMoeda)
{
return (int) callFun("AlteraSimboloMoeda"
,new Class[] {String.class}
,new Object[] {simboloMoeda});
}
public int EspacoEntreLinhas(int dots)
{
return (int) callFun("EspacoEntreLinhas"
,new Class[] {int.class}
,new Object[] {dots});
}
public int ForcaImpactoAgulhas(int iValorImpacto)
{
return (int) callFun("ForcaImpactoAgulhas"
,new Class[] {int.class}
,new Object[] {iValorImpacto});
}
public int LinhasEntreCupons(int linhas)
{
return (int) callFun("LinhasEntreCupons"
,new Class[] {int.class}
,new Object[] {linhas});
}
public int NomeiaDepartamento(int indice, String departamento)
{
return (int) callFun("NomeiaDepartamento"
,new Class[] {int.class, String.class}
,new Object[] {indice, departamento});
}
public int NomeiaTotalizadorNaoSujeitoIcms(int indice, String totalizador)
{
return (int) callFun("NomeiaTotalizadorNaoSujeitoIcms"
,new Class[] {int.class, String.class}
,new Object[] {indice, totalizador});
}
public int ProgramaAliquota(String aliquota, int vinculo)
{
return (int) callFun("ProgramaAliquota"
,new Class[] {String.class, int.class}
,new Object[] {aliquota, vinculo});
}
public int ProgramaArredondamento()
{
return (int) callFun("ProgramaArredondamento"
,new Class[] {}
,new Object[] {});
}
public int ProgramaTruncamento()
{
return (int) callFun("ProgramaTruncamento"
,new Class[] {}
,new Object[] {});
}
public int ProgramaHorarioVerao()
{
return (int) callFun("ProgramaHorarioVerao"
,new Class[] {}
,new Object[] {});
}
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
// AUTENTICACAO
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
public int ProgramaCaracterAutenticacao(String caracter)
{
return (int) callFun("ProgramaCaracterAutenticacao"
,new Class[] {String.class}
,new Object[] {caracter});
}
public int Autenticacao()
{
return (int) callFun("Autenticacao"
,new Class[] {}
,new Object[] {});
}
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
// GAVETA DE DINHEIRO
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
public int AcionaGaveta()
{
return (int) callFun("AcionaGaveta"
,new Class[] {}
,new Object[] {});
}
public String VerificaEstadoGaveta()
{
BemaInteger pEstado = new BemaInteger();
Integer ret = (int) callFun("VerificaEstadoGaveta"
,new Class[]{BemaInteger.class}
,new Object[]{pEstado});
return json(new String[]{ jInt(ret) , jInt(pEstado.number) });
}
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
// TEF
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
public int IniciaModoTEF()
{
return (int) callFun("IniciaModoTEF"
,new Class[] {}
,new Object[] {});
}
public int UsaComprovanteNaoFiscalVinculadoTEF(String texto)
{
return (int) callFun("UsaComprovanteNaoFiscalVinculadoTEF"
,new Class[] {String.class}
,new Object[] {texto});
}
public int RelatorioGerencialTEF(String texto)
{
return (int) callFun("RelatorioGerencialTEF"
,new Class[] {String.class}
,new Object[] {texto});
}
public int FinalizaModoTEF()
{
return (int) callFun("FinalizaModoTEF"
,new Class[] {}
,new Object[] {});
}
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
// OUTRAS FUNCOES
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
public int AberturaDoDia(String valorAux,String formaPagamento)
{
return (int) callFun("AberturaDoDia"
,new Class[] {String.class,String.class}
,new Object[] {valorAux,formaPagamento});
}
public int AbrePortaSerial()
{
return (int) callFun("AbrePortaSerial"
,new Class[] {}
,new Object[] {});
}
public int AbreBilhetePassagem(String imprimeValorFim,String imprimeEnfatizado,String embarque,String destino,String linha,String prefixo,String agente,String agencia,String data,String hora,String poltrona,String plataforma)
{
return (int) callFun("AbreBilhetePassagem"
,new Class[] {String.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class}
,new Object[] { imprimeValorFim, imprimeEnfatizado, embarque, destino, linha, prefixo, agente, agencia, data, hora, poltrona, plataforma});
}
public int FechamentoDoDia()
{
return (int) callFun("FechamentoDoDia"
,new Class[] {}
,new Object[] {});
}
public int FechaPortaSerial()
{
return (int) callFun("FechaPortaSerial"
,new Class[] {}
,new Object[] {});
}
public int ImpressaoCarne(String titulo, String cParcela, String datas,int iQuantidade, String texto,String cliente,String cRGCPF,String cupom,int iVias,int iAssina)
{
return (int) callFun("ImpressaoCarne"
,new Class[] {String.class, String.class, String.class,int.class, String.class,String.class,String.class,String.class,int.class,int.class}
,new Object[] { titulo, cParcela, datas, iQuantidade, texto, cliente, cRGCPF, cupom, iVias, iAssina});
}
public int ImprimeConfiguracoesImpressora()
{
return (int) callFun("ImprimeConfiguracoesImpressora"
,new Class[] {}
,new Object[] {});
}
public int ImprimeDepartamentos()
{
return (int) callFun("ImprimeDepartamentos"
,new Class[] {}
,new Object[] {});
}
public int MapaResumo()
{
return (int) callFun("MapaResumo"
,new Class[] {}
,new Object[] {});
}
public int RelatorioTipo60Analitico()
{
return (int) callFun("RelatorioTipo60Analitico"
,new Class[] {}
,new Object[] {});
}
public int RelatorioTipo60Mestre()
{
return (int) callFun("RelatorioTipo60Mestre"
,new Class[] {}
,new Object[] {});
}
public int ResetaImpressora()
{
return (int) callFun("ResetaImpressora"
,new Class[] {}
,new Object[] {});
}
public int VerificaImpressoraLigada()
{
return (int) callFun("VerificaImpressoraLigada"
,new Class[] {}
,new Object[] {});
}
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
// INFORMACOES
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
public String RetornoAliquotas()
{
BemaString pAliquotas = new BemaString();
Integer ret = (int) callFun("RetornoAliquotas"
,new Class[] {BemaString.class}
,new Object[] {pAliquotas});
return json(new String[]{ jInt(ret) , jStr(pAliquotas.buffer) });
}
}