Java com Automação Comercial

Javaneses…

Convicto que Java é uma linguagem perfeita para portabilidade, baixo custo… resolvi então escrever minha aplicação em java.

Problemas que encontre na Análise…

Hoje a minha aplicação(feita em VB) é capaz de utilizar as seguintes impressoras fiscais…

Fabricante Modelo

ACR Modelo: Digisat 1 (OEM Mecaf)

AOKI Modelo: AOKI 1E (OEM Mecaf)

CHRONOS Modelo: CHRONOS - 250 1E (OEM Mecaf)

DATAREGIS Modelo: 375-EP-Vesão Firmware 02.03

DIGIARTE Modelo: Digiarte 1 (OEM Mecaf)

ELGIN Modelo: ECF IF 500 1E (OEM Mecaf)

MECAF Modelo: IF 100 (Mecaf Compact FCR)

PROCOMP Modelo: ECF 2011 (OEM Mecaf)

SCHALTER Modelo: 1E versão 3.01

SWEDA Modelo: IFS - 7000II

TRENDS STS Modelo: TRENDS 1.0 E (OEM Mecaf)

UNIGRAPH Modelo: UN-FI (OEM Mecaf)

ZANTHUS Modelo: QZ 1001 (OEM Mecaf)

BEMATECH Modelo: MP-20 FI II

Só foi possivel colocar TODAS estas impressoras fiscais graças a uma padronização, uma DLL que foi desenvolvida pela AFRAC (acho… www.afrac.com.br)…

Sabendo que o sistema também irá rodar em Linux como eu faria para utilizar esta DLL? ou eu naum usaria?

Se usar a DLL perco a portabilidade né?

Obrigado!

[quote=“Dennys”]Sabendo que o sistema também irá rodar em Linux como eu faria para utilizar esta DLL? ou eu naum usaria?

Se usar a DLL perco a portabilidade né?[/quote]

Exatamente… além de depender da AFRAC, já que se eles mudarem a DLL, voce vai ter que mudar sua aplicacao tambem.

As especificações são abertas, então acho que não é nada tão impossível desenvolver isso em Java usando os documentos que estão aqui:

http://www.afrac.com.br/nova/html/intgenerica/downloads.asp

Uma boa pitada de JavaComm e o problema tá resolvido :slight_smile:

cv, você ja faz algum sistema comercial que utilize impressora fiscal?

Não, pq?

nada nao

Vamos lá…

O que me levou a utlização da DLL da AFRAC?

a padronização! pois cada impressora fiscal tem um comando diferente para imprimir cupons, LeituraX…

Com essa DLL eu consigo colocar no sistema uasm 10 impressoras programando uma vêz só…

agora

se eu fosse fazer impressora por impressora eu levaria muito mais tempo o sistema ia ficar enorme com muito mais if’s…

Se eu for fazer usando o JavaComm acredito que é isso que vai acontercer… vou ter que programar para todas as impressoras… ai já fica difícil…

entendeu?

Consiga as informações sobre cada uma das impressoras fiscais, e o protocolo delas, e a gente inicia um projeto OpenSource pra criar uma lib em Java que lide com elas… fama, fortuna e emprego pro resto da vida! :smiley:

Se bobear, a gente consegue entrar em contato com os fabricantes e até ganha uma grana… que tal? :slight_smile:

Hummm …

Não vai ter tantos ifs assim … afinal programação orientada a objetos elimina um bocado de ifs.

Na verdade voê vai ter uma interface que representa a impressora ou uma classe abstrata que represente e já faça algumas atribuções em comum e depois vai ter uma classe extendendo a abstrata e/ou implementando a interface para cada impressora.

fica um puta projeto … vai ser independente de plataforma e facilmente extensivel, vcs soh tem que adicionar novas impressoras.

Você pode até fazer um esquema estilo plugins, vc vende a classe da impressora, o cara instala em um diretorio definido e seu programa já permite na configuração escolher essa impressora.

Muito melhor do que você fazer uma interface JNI para a dll que vc usa e ainda nao poder portar para outras plataforma.

Hum…

Vai ser um Pu#$_%($) projeto…

Vou entrar em contato com alguem da AFRAC para tidar umas dúvidas ai nós veremos o que fazer…

:lol:

se estiverem procurando ajuda para desenvolver este projetinho eu posso ajudar,
:slight_smile:

T+

Posso ate ser novo no forum mais acho q sei um pouco de java, se precisarem de ajuda, estou ai!!

[]´s

Emanuel F Silva

Eu enviei um e-mail para a AFRAC sobre o assunto assim que receber uma resposta vamos iniciar o projeto…

:smiley:

Nao seria mais simples/prático fazer algo feito o SWT?
se cria 1 framework OOP, mas acessamos tudo via .dll em windows e .so
em linux, afinal, a interface padrão supostamente tem versão linux…

Outra opção seria fazer umas gambi pra rodar a dll via wine
hehehehe

Galera, tbm to afim de paticipar desse super projeto, quando vcs comecarem é so mandar um alo

O que seria melhor?

[quote=“louds”]Nao seria mais simples/prático fazer algo feito o SWT?
se cria 1 framework OOP, mas acessamos tudo via .dll em windows e .so
em linux, afinal, a interface padrão supostamente tem versão linux…

Outra opção seria fazer umas gambi pra rodar a dll via wine
hehehehe[/quote]

Escrever uma lib inteirinha com os protocolos de cada impressora fiscal…

[quote=“louds”]Nao seria mais simples/prático fazer algo feito o SWT?
se cria 1 framework OOP, mas acessamos tudo via .dll em windows e .so
em linux, afinal, a interface padrão supostamente tem versão linux…

Outra opção seria fazer umas gambi pra rodar a dll via wine
hehehehe[/quote]

Hummm … usar o Wine seria interessante eheheh … mas eu passo! :shock:

Eu não entendo muito de impressoras fiscais … alias, não entendo nada :oops: , mas se for como uma impressora matricial qualquer desenvolver a interface em 100% java não é nada difícil. Pergunta: É?

Não estou pensando na parte contábil e legislativa da coisa, apenas na comunicação com a impressora. Uma solução no estilo DriverManager do SQL resolveria o problema com estilo … depois é só ir adicionando drivers das impressoras que quiser. O driver só precisa saber os comandos que deve enviar pra impressora em questão.

baba eheheheh … :stuck_out_tongue:

Vamos lá…

Funcionamento de uma impressora fiscal…

Uma impressora fiscal não é como uma impressora matricial… é TOTALMENTE DIFERENTE…

Isso acontece porque TUDO que passa na impressora fiscal (produtos,venda com cartão,dinheiro,cheque) é registrado em uma “memória”, evitando que o logista sonegue imposto = c (… heehehe

Cada impressora fiscal tem seus próprios comandos… vou colocar dois exemplos, um utilizando a impressora bematech(com a dll da mesma) e outro utilizando a impressora daruma(com a dll da mesma)…

procedimentos para imprimir um cupom

° Abre Cupom
° Vende Item
° Inicia o Fechamento do Cupom
° Efetua Forma de Pagamento
° Termina o Fechamento do Cupom

Bematech



Bematech_FI_AbreCupom("NUMERO DO DOC. CPF OU CNPJ") 

Bematech_FI_VendeItem("COD. PRODU","DESC. PRODU", "ALIQUOTA", "TIPO DE QUANTIDADE", "QTDE","CASAS DECIMAIS" ,  "VLR. UNI.", "TIPO DESCONTO", "DESCONTO")

Bematech_FI_IniciaFechamentoCupom("ACRESCIMO OU DESCONTO", "TipoAcrescimoDesconto", "Valor")

Bematech_FI_EfetuaFormaPagamento("FORMA DE PAGT", "VALOR")

Bematech_FI_TerminaFechamentoCupom("MSG PROMOCIONAL...")

Daruma


DAR_sAbreCupomFiscal(1)

DAR_sDesc1Lin6Dig("ALIQ.", "CODPRO","DESC. OU ACRES.", "VLR DA", "VLR. UNI", "QTDE", "DESCRICAO")

DAR_sSubtotal(1)

DAR_sTotaliza("NUM DESC", "VLR")

DAR_sDescFormPag("DESC. FORM. PAGT", "VALOR", "LINHA ADICI.")

DAR_sIdentConsum("INF. DOS CLIENTES")

DAR_sFechaCupom("MSG PROMOCIONAL")

Ok…

Diferenças Críticas…

Começar que a Bematech Identifica o Consumidor no Primeiro cupom, na abertura do cupom… a Daruma identifica o Consumidor no fim do cupom…

A Bematech é bem mais simples para trabalhar e possue uma rotina para verificar erros feita pela própria bematech(muito boa!) porém o valor da impressora é “pouco” caro… = c )

Já a Daruma dá MUITO mais trabalho para trabalhar porém o seu valor é menor que o da bematech…

Por ter estas diferenças e outras em VÁRIAS impressoras venhu procurando uma maneira para padronizar os comandos adicionando várias impressoras fiscais com uma maneira simples deixando a gosto do cliente, a impressora com tecnologia(Bematech) ou a de baixo custo valor(Daruma)…

Aaaae … gostei da explicação.

Bem, para padronizar será necessário definir todos os itens que compõe um cupom fiscal.

Fazer uma interface genérica que irá apenas SETAR todos esses itens … depois quando finalizada a transação essa interface vai instanciar um driver do fabricante em questão e esse driver terá que saber a ordem das coisas e os comandos para imprimir.

Teoricamente é facil … o Manager dos drivers é bastante simples de ser feito mas os drivers não porque vai depender do contato com o fabricante pra pegar os comandos que são passados pela COM (direto já que nao queremos usar a DLL do fabricante).

é por ai …

bom, o esquema não pode funcionar bem assim não,
por norma, precisa-se ir adicionando os itens ao cupom fiscal da impressora fiscal, ao mesmo tempo que são adicionados no software :slight_smile:

mas isto não é um problema tão gande assim, mas vai ditar a forma como o software trabalha :slight_smile:

[quote=“urubatan”]bom, o esquema não pode funcionar bem assim não,
por norma, precisa-se ir adicionando os itens ao cupom fiscal da impressora fiscal, ao mesmo tempo que são adicionados no software :slight_smile:

mas isto não é um problema tão gande assim, mas vai ditar a forma como o software trabalha :-)[/quote]

você kiz dizer ki a lib naum vai poder buefferizar informação? se for é isso mesmo… a medida que for lançando os intens vai imprimindo os itens lançados…

Isso! Grande Garoto! rs***

Há um doc no site da AFRAC que já tem todos os ITENS do CUPOM FISCAL…

Por que re inventar a roda?

Lá neste doc ele mostra todos os itens e a utilidade de cada um… naum podemos esquecer que há itens que não se enquadraraum em algumas impressoras…

EURÉCA! :smiley:
Consegui um .pdf explicando como se comunicar DIRETAMENTE com a impressora BEMATECH…