Java com Automação Comercial

36 respostas
D

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!

36 Respostas

C

“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é?

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:

C

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

C

Não, pq?

C

nada nao

D

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?

C

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:

S

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.

D

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:

U

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

T+

E

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

[]´s

Emanuel F Silva

D

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

:smiley:

L

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

C

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

D

O que seria melhor?

“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

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

S

“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

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:

D

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)…

S

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 …

U

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:

D

“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 :-)

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…

D

Pdf’s…

Abaixo um link para download do .pdf de comunicação direta com a impressora bematech e alguns conceitos básicos…

Bematech Comunicação Direra

Abaixo um link para download do .pdf de comunicação(com DLL :cry: ) com a impressora Daruma e alguns conceitos básicos…

Daruma Fs345

D

Hum…

Acho que a AFRAC não gostou muito da idéia de fazer uma Lib(OpenSource) em java, pois mandei dois e-mails e até agora naum recebi nenhuma resposta…

Mas mesmo assim… não irei dar para “tráz” vou fazer a lib… nas férias vou iniciar o projeto…

se alguém se kizer ajudar… :lol:

Flw! Inté+

C

cara, to super afim de fazer lhe ajudar, por mim, comecaria ja esta semana, oq vc acha? Se vc quiser posso comecar a fazer agora e quando chegar as suas ferias vc mete a mao na massa.

L

faz assim:
cria o projeto na sourceforge e avisa todo mundo nesse tópico quando ele for aprovado…

D

Pode até ser, porém não vou ter como dar muita atenção pois estou envolvido até o pescoço em um outro projeto…

Você já programo em impressoras Fiscais?

Flw

I

Estou acompanhando esta msg e gostei da idei , não sei se vocês viram estamos também iniciando um outro projeto , para a criação de um sistema open source( de Locadora) um tutorial desde o levantamento ! , quem sabe depois não poderiamos acoplar o seu projeto no nosso

D

Hum…

não sei se seria “compativel” pois impressora fiscal é para estabelecimentos que VENDEM em um ano um total de 1200 reais ou 12mil reais… seilá é algo assim…

C

Dai galera, so to mandando uma msg pq parece que o pessoal esqueceu desse topico, acho que agora nas ferias da pra galera se encarnar e bota a mão na massa…digo…no teclado.

H

Olá pessoal,
Estou vendo esse tópico somente agora :frowning: , que fim levou? vcs vão desenvolver o projeto opensource ? Ja existe alguma biblioteca 100% java para se trabalhar com impressoras fiscais?
Aguardo respostas.
[]’

A

e ai pessoal essa projeto ja andou :?: to precisando muito de uma biblioteca que integre as impressoras fiscais, precisando de ajuda …hehehehe
so da o toq…

M

Dennys:
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)…

Como assim a Daruma dá muito mais trabalho?
Tive que implentar uma no nosso sistema e demorei menos de 30 minutos. Uma das poucas difenças foi o fato dela retornar o nr. do próximo cupom, não o do último como a maioria das impressoras. Ultimamente as impressoras estão seguindo o padrão da Bematech em suas DLLs, reduzindo em muito o tempo de programação.
Muitas também estão disponibilizando interface para Linux.
Não sei para o Linux (não mexi com impressoras fiscais neste ambiente), mas se forem fazer no Windows, as DLLs podem poupar muito tempo.

M

Que vacilo! Só agora vi a data das mensagens.
:oops:

R

Tem como tu disponibilizar os pdf pois os links nao existem mais …

J

KKkkkkkkkkkkk

É vero , estava aqui lendo e nem percebi sobre a data…
mas e ae , em oque q deu essa ideia da LIB ?

omg

impressoras fiscais NÃO sao de Deus!!!

O

Então gostaria de saber desse projeto de desenvolvimento de automação comercial, eu iniciei em java faz tempo mas atualmente lido com asp, mas quero ir o mais rapido possivel trabalhar com java.

S

Dennys:
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…

Comece por criar uma interface ImpressoraFiscal com os métodos comuns.
Crie uma fábrica para retornar a implementação correta conforme um parametro dizendo qual a impressora real.
Crie uma implementação da interface que comunica com a DLL que já tem (GenericDLLImpressoraFiscal, por exemplo).
Na fábrica analize se está no window. Se sim, devolva uma instância de GenericDLLImpressoraFiscal.
Então, em windows, o seu sistema está nas mesmas condições que o em VB. O seu porte está feito.

Agora vc quer dar suporte em linux. Crie uma class de ImpressoraFiscal com JavaComm que comunica com a impressoa XPTO
(XPTOJavaCommImpressoraFiscal ). Crie uma classe destas quando precisa de dar suporte dela em linux. Seria bom ter uma ou duas implementações já prontas paras as mais utilizadas. Isto lhe vai dar conhecimento de como estruturar a sua classe baseada em JavaCom podendo ter um classe mae com os métodos mais utilizandos. O seu porte para linux será passo-a-passo conforme a necessidade. Se vc quiser fazer tudo de uma vez vc vai desistir antes de começar.

Use OO.

K

também quero participar e ja vou compartilhar o que eu encontrei

http://www.t2ti.com/java_pro_ecf_tef.php

espero comentário a respeito

Criado 4 de junho de 2003
Ultima resposta 27 de nov. de 2008
Respostas 36
Participantes 16