Página 1 de 1
Abrir Cupom e sequencia de itens
Enviado: 13 Dez 2005 17:18
por Hstadler
BOA TARDE AMIGOS
É A PRIMEIRA VEZ Q DESENVOLVEMOS UM SOFTWARE DE FRENTE DE CAIXA, POIS BEM, TEMOS UMA IMPRESSORA BEMATECH MP 25 FI.
PROBLEMA:
1. ABRE O CUPOM COM A TECLA "F2"
2. ENQUANTO O CUPOM ESTA ABRINDO, O OPERADOR DE CAIXA VAI LENDO OS CODIGO DE BARRAS, POREM , SE NÃO ESPERAR ABRIR O CUPOM FISCAL, VAI DAR ERRO NA LEITURA DOS CODIGOS.
3. PARA ABRIR O CUPOM FISCAL NÃO DEMORA MAIS QUE 3 SEGUNDOS, POREM O DONO DO MERCADO NÃO ACEITA POIS ELE VÊ EM OUTRAS REDES GRANDES, QUE NÃO PRECISA ESPERAR ABRIR O CUPOM.
NÃO SEI MAIS O QUE FAZER, JA TENTEI COLOCAR ESSES ITENS LIDOS EM ARQUIVO TEMPORARIO MAS NÃO ESTOU TENDO SUCESSO.
SE ALGUEM JA PASSOU POR ESSA DIFICULDADE E PODER AJUDAR AGRADEÇO, POIS É CAPAZ DE O CLIENTE ANO QUE VEM TROCAR MEU SISTEMA POR OUTRO.
OBRIGADO
HENRIQUE
Enviado: 13 Dez 2005 17:45
por josenilson
Prezado amigo,
A impressora que vc está usando é térmica?
Qual o meio de acesso que vc usa ( bematech monitor, bemafi.exe, mp20drv.exe) ?
Acho estranho essa demora para abrir o cupom.
Como sugestão, ao invés de teclar F2 para abrir o cupom, faz o seguinte:
Na hora em que o usuário passar o 1o código de barras, então o sistema abre automaticamente o cupom fiscal.
Também, vc pode colocar uma mensagem na tela avisando ao usuario que aguarde enquanto a impressora processa o comando enviado a ela.
É importante que vc informe o seu meio de acesso e se possível, os comandos que vc está utilizando. talvez o problema esteja aí, e naum na impressora fiscal. ok?
Enviado: 13 Dez 2005 18:43
por Hstadler
OI AMIGO
A IMPRESSORA É MATRICIAL, USO O BEMAFI.EXE, O F2 É SÓ PARA ABRIR O CUPOM FISCAL E DEPOIS VAI LER OS PRODUTOS COM O LEITOR DE CODIGO DE BARRAS.
HENRIQUE
Enviado: 13 Dez 2005 19:01
por Hstadler
OI JOSENILSON
TEM OUTRA COISA, EU FIZ O TESTE SEM O F2, O PROBLEMA ESTA NA SEQUENCIA DE ENVIO DE COMANDOS, POR EX.: SE EU LER 1º ITEM, VAI ABRIR O ECF E LANÇAR O ITEM SEGUIDAMENTE, MAS SE EU LER 3 OU 4 ITENS SEGUIDOS (O 1º +3 OU 4), DA UM ERRO, ACONTECENDO O QUE, VAI CONSEGUIR REGISTRAR NO ECF SOMENTE OS 2 PRIMEIROS ITENS E PERDE O RESTANTE TENDO QUE LER NOVAMENTE OS OUTROS.
POR CURIOSIDADE FIZ UM TESTE IMPRIMINDO O CUPOM COM 10 ITENS SOMENTE NO FINAL (EU SEI Q POR LEI NÃO PODE FOI SÓ UM TESTE), E VAI Q É UMA BLZ, AGORA NA CONCOMITANCIA, AÍ VAI O PROBLEMA ANTERIOR
OBRIGADO
HENRIQUE
Enviado: 13 Dez 2005 19:03
por Hstadler
OI JOSENILSON
TEM OUTRA COISA, EU FIZ O TESTE SEM O F2, O PROBLEMA ESTA NA SEQUENCIA DE ENVIO DE COMANDOS, POR EX.: SE EU LER 1º ITEM, VAI ABRIR O ECF E LANÇAR O ITEM SEGUIDAMENTE, MAS SE EU LER 3 OU 4 ITENS SEGUIDOS (O 1º +3 OU 4), DA UM ERRO, ACONTECENDO O QUE, VAI CONSEGUIR REGISTRAR NO ECF SOMENTE OS 2 PRIMEIROS ITENS E PERDE O RESTANTE TENDO QUE LER NOVAMENTE OS OUTROS.
POR CURIOSIDADE FIZ UM TESTE IMPRIMINDO O CUPOM COM 10 ITENS SOMENTE NO FINAL (EU SEI Q POR LEI NÃO PODE FOI SÓ UM TESTE), E VAI Q É UMA BLZ, AGORA NA CONCOMITANCIA, AÍ VAI O PROBLEMA ANTERIOR
OBRIGADO
HENRIQUE
Enviado: 14 Dez 2005 14:10
por jpalma
Colega
Já desenvolvi programas para a bematech fiscal e não tive este problema relatado.
Já com a sweda tive problema iguais ao seu e a solução foi colocar um LOOP aguardando o retorno da impressora.
Concordo tambem com Josenilson quanto a coloção de uma mensagem ao usuário.
sds
Enviado: 14 Dez 2005 17:49
por josenilson
Prezado henrique,
Ao meu ver, a unica saida pro teu problema seria fazer o seguinte:
Sempre que for enviado um comando pra impressora fiscal, o teu sistema deverar tratar o retorno da mesma, antes de enviar o proximo comando.
Um exemplo passo a passo:
1) Ler codigo de barras
2) Envia o produto para a impressora fiscal
3) Aguarda retorno da impressora
4) Se nao houve erros, vai para o passo 1
5) Se houve erro, mostra o erro ao usuario e vai para o passo 1
Lembre-se, sempre que enviar um comando para impressora, aguarde a resposta da impressora. E se a resposta for um pouco demorada, mostre uma mensagem para que o usuario aguarde.
Se por acaso vc não souber como tratar os retornos da impressora, me mande um e-mail que eu posso te dar uma ajuda.
josenilson@wcompany.com.br
:xau
Enviado: 15 Dez 2005 01:06
por rochinha
Amiguinho
O seu programa é homologado para ECF?
Se não esqueça o problema da comcomitancia, ja que seu cliente não entende, e grave todos os dados num .DBF e no final mande para a impressora.
@braços :?)
Enviado: 15 Dez 2005 01:26
por vagucs
Amigos,
Não tenho sistema de ECF mas ja migrei alguns e já até desenvolvi um do 0 para uma empresa.
Bom, primeiramente, evite uso de drives residentes que facilitam esta comunicação, melhor fazer a programação do protocolo assim vc pode fazer todo o processo de verificação de erros da impressora.
As impressoras bematech são as mais fáceis de serem programadas, alguns modelos de impressora SWEDA (Bematech tambem), vc tem que fazer a leitura da linha CTS para saber quando a impressora está preparada para a leitura do próximo comando, impressoras Sweda mais novas tem um buffer de 4k que salvam a vida neste ponto.
No sistema de ECF que desenvolvi, fiz o seguinte, ao passar o primeiro item ele ja abre o cupom, sem precisar de pressionar tecla especifica para isto. Outra coisa, todos os itens que estão sendo digitados ou lidos pelo leitor serial, são acumulados em um array que é como um acumulador de tarefas, isso em uma rotina rodando em background capturando as entradas de dados, e o programa processando os comandos deste array na impressora assim que ela estiver disponivel, foi a melhor forma e não perde vendas em hipotese nenhuma.
Enviado: 15 Dez 2005 04:43
por evaldo
Caro Hstadler.
A Rotina que você precisa é esta, outra coisa usa o bemafi.lib, com ele você vai eliminar muitos problema principalmente se você estiver usando o mp20drv.exe.
Como você esta comecando o seu sistema no ramo de supermercado, coloque no sistema o cartão gerencial, para desconto, cancelamento e autorização de crédito, no cartão você coloca um código de barra, assim você tem controle de quando o fiscal de caixa passa o cartão no leitor, se ele digitar o código de barra no teclado o sistema não aceita.
Código: Selecionar todos
*******************************
FUNCTION ImprimeCupom(lRetorno)
*******************************
//
LOCAL cSituacao := ""
LOCAL cStringI := ""
LOCAL cCQtd := ""
LOCAL nCQtd := 0
LOCAL cCVlunit := ""
LOCAL cCDesc := SPACE(29)
LOCAL lAber := .F.
//
ps := "" //prepara string
inip := chr(27) + chr(251) //abertura protocolo
fimp := "|"+ chr(27) //fechamento do protocolo
vcbuf := chr(27) + chr(251)
tmret := 0 //tamanho do retorno
//verifica se o cupom fiscal esta aberto
tmret := 6
ps := inip + "19" + fimp
cmc(ps,tmret,@lRetorno,@lAber)
//
IF !lAber
//
lAberto := .T.
ps := inip + "00" + fimp
cmc(ps,tmret,@lRetorno)
//
//numero do cupom fiscal
tmret := 6
ps := inip + "30" + fimp
nNroCupom := cmc(ps,tmret,@lRetorno)
tmret := 0
//
ENDIF
//
IF cSt == "F"
cSituacao := "FF"
ELSEIF cSt == "T"
IF nICMS = Parametro->t1
cSituacao := "01"
ELSEIF nICMS = Parametro->t2
cSituacao := "02"
ELSEIF nICMS = Parametro->t3
cSituacao := "03"
ELSEIF nICMS = Parametro->t4
cSituacao := "04"
ELSEIF nICMS = Parametro->t5
cSituacao := "05"
ELSEIF nICMS = Parametro->t6
cSituacao := "06"
ELSEIF nICMS = Parametro->t7
cSituacao := "07"
ELSEIF nICMS = Parametro->t8
cSituacao := "08"
ELSEIF nICMS = Parametro->t9
cSituacao := "09"
ELSEIF nICMS = Parametro->t10
cSituacao := "10"
ENDIF
ELSEIF cSt == "I"
cSituacao := "II"
ELSEIF cSt == "N"
cSituacao := "NN"
ENDIF
//
cQtd := STRTRAN(STRZERO(nQtd*1000,7),".","")
cVlunit := STRTRAN(STR(nVrUni),".","")
cVlunit := STRZERO(VAL(cVlunit),8)
cDesc := ProdECF->reduzida
//
cStringI := "56"+"|"+cCodBar+"|"+cDesc+"|"+cSituacao+"|"+cQtd+"|"+cVlunit+"|"+"0000"
ps := inip + cStringI + fimp
cmc(ps,tmret,@lRetorno)
//
RETURN(lRetorno)
Enviado: 15 Dez 2005 10:07
por Hstadler
MUITO OBRIGADO PESSOAL PELA AJUDA
JA ESTOU TENDO RESULTADOS MELHORES.
OBRIGADO
HENRIQUE