Página 1 de 1

BematechMonitor

Enviado: 12 Mai 2008 21:54
por Sergio Cabral
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

Re: BematechMonitor

Enviado: 13 Mai 2008 19:35
por rochinha
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.

Código: Selecionar todos

   fclose( "arquivo.cmd" )
O comando acima pode até funcionar mas ele provavelmente não fechará o arquivo .CMD pois FCLOSE() precisa de um handler.

Código: Selecionar todos

   cArquivo := fCreate( "BemaFI32.cmd" )
   ...
   fClose( cArquivo )
Para que seu codigo funcione corretamente voce não deverá copiar o arquivo como eles expoem e sim desta forma:

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" )
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.

Re: BematechMonitor

Enviado: 22 Ago 2009 14:03
por edmilsonmva
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 ?

Re: BematechMonitor

Enviado: 12 Set 2009 16:00
por rochinha
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.

Re: BematechMonitor

Enviado: 14 Set 2009 08:43
por DLZ
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..