Consegui usar o BematechMonitor porque vi em uma discusão até bem antiga(2005) que colocando inkey(x) e commit o BematechMonitor consegue ler o arquivo .cmd e enviar a impressora. Pois sem esse recurso não imprime nada. O problema é que isso causa demora na resposta do BematechMonitor e quando é impressora matricial o tempo tem que ser maior pois se não ele não lê mesmo. Aí é que a coisa fica feia pois o usuário não quer esperar tanto para imprimir cada item ou fechamento do cupom.
E ainda quando se faz muita venda, no meio da venda aparece o erro : CREATE ERROR BEMATECH32.CMD e o programa tem que ser encerrado. Parece que ele vai consumindo toda a memória do micro até dar o erro.
Se alguém conseguiu resolver esse problema por favor me ajude a resolver o meu.
Obrigado
Exemplo da rotina que estou usando para impressão (peguei no site da Bematech - programa ROTINA.PRG) :
Comunica_Impressora_Fiscal( "003", clicpf1 )
function Comunica_Impressora_Fiscal( cIndice, cDados )
if file( "BemaFI32.cmd" )
delete file( "BemaFI32.cmd" )
endif
cArquivo := fcreate( "BemaFI32.cmd" )
if len( cDados ) = 0
cBuffer := cIndice + "|"
else
cBuffer := cIndice + "|" + cDados + "|"
endif
fwrite( cArquivo, @cBuffer, len( cBuffer ) )
fclose( "BemaFI32.cmd" )
__CopyFile( "BemaFI32.cmd", "C:\dos\BemaFI32.cmd" )
commit
inkey(2)
return
BematechMonitor
Moderador: Moderadores
-
Sergio Cabral
- Usuário Nível 2

- Mensagens: 52
- Registrado em: 18 Set 2004 18:51
- Localização: São José dos Campos
BematechMonitor
Sou programador em Clipper 5.01 a 15 anos e procuro melhorar meus conhecimentos. Este site me parece muito bom e poderemos nos ajudar.
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Re: BematechMonitor
Amiguinho
A informação que voce precisa pode ser melhorada com o post na sessão codigo fonte no tópico Presente de Ano Novo...ECFs.
O codigo que voce pegou no site da Bematech tem um erro, o qual cauxa esta lentidão.
O comando acima pode até funcionar mas ele provavelmente não fechará o arquivo .CMD pois FCLOSE() precisa de um handler.
Para que seu codigo funcione corretamente voce não deverá copiar o arquivo como eles expoem e sim desta forma:
O comando __COPY() pode sofrer travamento no momento que o monitor tentar abrir o arquivo sendo criado na copia, por isto, a copia é feita para um outro arquivo e renomeado, pois no momento de trocar o nome a velocidade de troca suplanta a velocidade do monitor permitindo que o mesmo abra o arquivo sem travar o sistema.
A informação que voce precisa pode ser melhorada com o post na sessão codigo fonte no tópico Presente de Ano Novo...ECFs.
O codigo que voce pegou no site da Bematech tem um erro, o qual cauxa esta lentidão.
Código: Selecionar todos
fclose( "arquivo.cmd" )
Código: Selecionar todos
cArquivo := fCreate( "BemaFI32.cmd" )
...
fClose( cArquivo )
Código: Selecionar todos
cArquivo := fCreate( "BemaFI32.pos" )
...
fclose( cArquivo )
__CopyFile( "BemaFI32.pos", "C:\dos\BemaFI32.pos" )
FRename( "C:\dos\BemaFI32.pos", "C:\dos\BemaFI32.cmd" )
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
-
edmilsonmva
- Usuário Nível 1

- Mensagens: 5
- Registrado em: 20 Jun 2009 18:15
- Localização: marialva-pr
Re: BematechMonitor
seguinte estou usando o bematechmonitor num sistema de frente de caixa para venda com ecf, e estou com um problema, o clipper gera um arquivo temporario e so apaga quando sai do sistema e trava pois fica muitos arquivos temporarios sera q tem como excluir os arquivos temporarios automaticamente sem sair do sistema.
meu exemplo:
IF File( "C:\ECF\STATUS.TXT" )
Delete File( "C:\ECF\STATUS.TXT" )
ENDIF
IF File( "C:\ECF\BEMAFI.CMD" )
Delete File( "C:\ECF\BEMAFI.CMD" )
ENDIF
iArquivo := FCreate( "C:\ECF\ECF.TXT" )
FWrite( iArquivo, @Comando, Len( Comando ) )
FClose( iArquivo )
FRename ("C:\ECF\ECF.TXT", "C:\ECF\BEMAFI.CMD")
com isso gera uns arquivos temporarios na pasta C:\ECF e trava quando esta muito cheio ou seja muita venda sem sair do sistema.
tem alguma solucao para apagar os arquivos temporarios dentro do sistema ?
meu exemplo:
IF File( "C:\ECF\STATUS.TXT" )
Delete File( "C:\ECF\STATUS.TXT" )
ENDIF
IF File( "C:\ECF\BEMAFI.CMD" )
Delete File( "C:\ECF\BEMAFI.CMD" )
ENDIF
iArquivo := FCreate( "C:\ECF\ECF.TXT" )
FWrite( iArquivo, @Comando, Len( Comando ) )
FClose( iArquivo )
FRename ("C:\ECF\ECF.TXT", "C:\ECF\BEMAFI.CMD")
com isso gera uns arquivos temporarios na pasta C:\ECF e trava quando esta muito cheio ou seja muita venda sem sair do sistema.
tem alguma solucao para apagar os arquivos temporarios dentro do sistema ?
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Re: BematechMonitor
Amiguinho,
Voce tera de criar arquivos temporarios numerados, ou seja, para cada PDV voce cria um arquivo temporario com numero do PDV e depois renomeia para o arquivo CMD.
Acho até que voce se daria melhor se criasse estes arquivos comporarios com numeros aleatorios(tipo: PDV01N10, PDV01N11, etc) e usasse um aplicativo monitorando tais arquivos.
Ao encontra-los adicionaria os nomes em um DBF e com um WHILE fosse renomeando cada um para BEMAFI.CMD caso o BEMAFI.CMD nao existisse na pasta do monitor Bematech.
Voce tera de criar arquivos temporarios numerados, ou seja, para cada PDV voce cria um arquivo temporario com numero do PDV e depois renomeia para o arquivo CMD.
Acho até que voce se daria melhor se criasse estes arquivos comporarios com numeros aleatorios(tipo: PDV01N10, PDV01N11, etc) e usasse um aplicativo monitorando tais arquivos.
Ao encontra-los adicionaria os nomes em um DBF e com um WHILE fosse renomeando cada um para BEMAFI.CMD caso o BEMAFI.CMD nao existisse na pasta do monitor Bematech.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
-
DLZ
- Usuário Nível 3

- Mensagens: 184
- Registrado em: 09 Jun 2008 10:09
- Localização: Ibirubá - RS - Brasil
Re: BematechMonitor
Oh amiginho !!
Cosidere a hipótese de converter seu executável de frente de caixa para Xharbour, dessa forma vc vai poder usar a Bemafi32.dll. Dessa forma vc nunca mais vai precisar se preocupar com comunicação entre seu sistema e a impressora fiscal.
Dependendo das Libs que vc usa atualmente no seu sistema é mole mole converter para Xharbour.. Meia duzia de alteração e compilar..
Eu fiz isso e foi a melhor coisa que poderia ter feito...
Só tive que fazer num ambiente console, pois no clipper eu utilizava a LLIBg q no Xharbour não existe.. Parece que agora está saindo uma LIB para substituir a LLIBG no Xharbour... ai sim vai ficar show de bola !!
Um abraço..
Cosidere a hipótese de converter seu executável de frente de caixa para Xharbour, dessa forma vc vai poder usar a Bemafi32.dll. Dessa forma vc nunca mais vai precisar se preocupar com comunicação entre seu sistema e a impressora fiscal.
Dependendo das Libs que vc usa atualmente no seu sistema é mole mole converter para Xharbour.. Meia duzia de alteração e compilar..
Eu fiz isso e foi a melhor coisa que poderia ter feito...
Só tive que fazer num ambiente console, pois no clipper eu utilizava a LLIBg q no Xharbour não existe.. Parece que agora está saindo uma LIB para substituir a LLIBG no Xharbour... ai sim vai ficar show de bola !!
Um abraço..