Bemafi - da o seguinte erro (erro ao criar arquivo)

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

JMARCELO
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 13 Jul 2004 09:39
Localização: presidente venceslau - sp
Contato:

Bemafi - da o seguinte erro (erro ao criar arquivo)

Mensagem por JMARCELO »

caros colegas



estou usando o bemafi.exe para impressao no ecf bematech so que algumas vezes na todas da o seguinte erro

limpa toda a tela e na linha 0 escreve a seguinte frase

erro ao criar arquivo status.txt pressione qualquer tecle

so que en nao escrevi esta frase e nao encontro o problema abaixo vou anexar a funcao que estou utilizando se alguem puder melhora-la agradeco


desde ja obrigado

/////////////////////
FUNCTION GRAVAECF
/////////////////////
PARAMETERS COMANDO,WTPRET
IF EMPTY(WTPRET)
WTPRET=0
ENDIF
DELETE FILE('C:\NOTA\BEMAFI.CMD')
DELETE FILE('C:\NOTA\STATUS.TXT')
DELETE FILE('C:\NOTA\RETORNO.TXT')
WIARQ:=FCREATE('C:\NOTA\BEMAFI.CMD')
FWRITE(WIARQ,@COMANDO,LEN(COMANDO) )
FCLOSE(WIARQ)
! C:\NOTA\BEMAFI.EXE
WSTART=SECONDS()
WTIMEO=60
DO WHILE .T.
IF FILE ('C:\NOTA\STATUS.TXT')
WASTS :=FOpen('C:\NOTA\STATUS.TXT')
IF FERROR() !=0
AVISO2('ATENCAO,,,ERRO NA ABERTURA DO ARQUIVO 01 STATUS')
RESTO SCREEN FROM WTELECF
IF WTPRET=1
RETURN(.F.)
ELSE
RETURN('0')
ENDIF
ENDIF
WTASTS :=FSeek(WASTS,0,2)
FClose(WASTS)
WASTS := FOpen('C:\NOTA\STATUS.TXT' )
IF FERROR() !=0
AVISO2('ATENCAO,,,ERRO NA ABERTURA DO ARQUIVO 02 STATUS')
RESTO SCREEN FROM WTELECF
IF WTPRET=1
RETURN(.F.)
ELSE
RETURN('0')
ENDIF
ENDIF
WSRET := ' '
WDSTS := ''
FOR X1 := 1 TO WTASTS
FREAD(WASTS,@WSRET,1)
WDSTS=WDSTS+WSRET
NEXT X1
//// ST1 ////////////////////////////////////////////////////////
WST1_BIT_0= "N£mero de parƒmetros de CMD inv lido"
WST1_BIT_1= "Cupom aberto"
WST1_BIT_2= "Comando inexistente"
WST1_BIT_3= "Primeiro dado de CMD nÆo foi ESC (1Bh)"
WST1_BIT_4= "Impressora em erro"
WST1_BIT_5= "Erro no rel¢gio"
WST1_BIT_6= "Pouco papel"
WST1_BIT_7= "Fim de papel"
//// ST2 //////////////////////////////////////////////////////
WST2_BIT_0= "Comando nÆo executado"
WST2_BIT_1= "CNPJ/IE do propriet rio nÆo programados"
WST2_BIT_2= "Cancelamento nÆo permitido"
WST2_BIT_3= "Capacidade de al¡quotas lotada"
WST2_BIT_4= "Al¡quota nÆo programada"
WST2_BIT_5= "Erro na Mem¢ria RAM CMOS nÆo vol til"
WST2_BIT_6= "Mem¢ria fiscal lotada"
WST2_BIT_7= "Tipo de parƒmetro de CMD inv lido"
WIACK:=VAL(SUBSTR(WDSTS,1,3))
WIST1:=VAL(SUBSTR(WDSTS,4,3))
WIST2:=VAL(SUBSTR(WDSTS,7,3))
IF WIACK=21
AVISO2("ATENCAO,,,IMPRESSORA RETORNO NAK!!! ERRO COMINICACAO")
RESTO SCREEN FROM WTELECF
IF WTPRET=1
RETURN(.F.)
ELSE
RETURN('0')
ENDIF
ENDIF
IF WIACK<>21 .AND. WIACK<>06
AVISO2("ATENCAO,,,IMPRESSORA RETORNO INFORMACAO INVALIDA")
RESTO SCREEN FROM WTELECF
IF WTPRET=1
RETURN(.F.)
ELSE
RETURN('0')
ENDIF
ENDIF
//// Verificando o ST1 /////////////////////////////////////////
WMENS1=SPACE(30)
WMENS2=SPACE(30)
WRET1=.T.
WRET2=.T.
IF WIST1 = 128
WMENS1=WST1_BIT_7
WRET1=.F.
ENDIF
IF WIST1 = 64
WMENS1=WST1_BIT_6
ENDIF
IF WIST1 = 32
WMENS1=WST1_BIT_5
WRET1=.F.
ENDIF
IF WIST1 = 16
WMENS1=WST1_BIT_4
WRET1=.F.
ENDIF
IF WIST1 = 8
WMENS1=WST1_BIT_3
WRET1=.F.
ENDIF
IF WIST1 = 4
WMENS1=WST1_BIT_2
WRET1=.F.
ENDIF
IF WIST1 = 2
WMENS1=WST1_BIT_1
WRET1=.F.
ENDIF
IF WIST1 = 1
WMENS1=WST1_BIT_0
WRET1=.F.
ENDIF
//// Verificando o ST2 /////////////////////////////////////////
IF WIST2 = 128
WMENS2=WST2_BIT_7
WRET2=.F.
ENDIF
IF WIST2 = 64
WMENS2=WST2_BIT_6
WRET2=.F.
ENDIF
IF WIST2 = 32
WMENS2=WST2_BIT_5
WRET2=.F.
ENDIF
IF WIST2 = 16
WMENS2=WST2_BIT_4
WRET2=.F.
ENDIF
IF WIST2 = 8
WMENS2=WST2_BIT_3
WRET2=.F.
ENDIF
IF WIST2 = 4
WMENS2=WST2_BIT_2
WRET2=.F.
ENDIF
IF WIST2 = 2
WMENS2=WST2_BIT_1
WRET2=.F.
ENDIF
IF WIST2 = 1
WMENS2=WST2_BIT_0
WRET2=.F.
ENDIF
IF WRET1=.F. .OR. WRET2=.F.
SAVE SCREEN TO WTELST
SET COLO TO B/W
@ 20,00 CLEA TO 23,79
@ 20,00 TO 23,79
SET COLO TO R/W
@ 21,01 SAY 'Mensagem ST1 '
SET COLO TO B/W
@ 21,COL()+1 SAY ALLTRIM(WMENS1)
SET COLO TO R/W
@ 22,01 SAY 'Mensagem ST2 '
SET COLO TO B/W
@ 22,COL()+1 SAY ALLTRIM(WMENS2)
SET COLO TO &WCOR2
INKEY(0)
RESTO SCREEN FROM WTELST
IF WTPRET=1
RETURN(.F.)
ELSE
RETURN('0')
ENDIF
ENDIF
IF WIACK=06
IF FILE('C:\NOTA\RETORNO.TXT')
WASTSR :=FOpen('C:\NOTA\RETORNO.TXT')
IF FERROR() !=0
AVISO2('ATENCAO,,,ERRO NA ABERTURA DO ARQUIVO 01 RETORNO')
RESTO SCREEN FROM WTELECF
IF WTPRET=1
RETURN(.F.)
ELSE
RETURN('0')
ENDIF
ENDIF
WTASTSR :=FSeek(WASTSR,0,2)
FClose(WASTSR)
WASTSR := FOpen('C:\NOTA\RETORNO.TXT' )
IF FERROR() !=0
AVISO2('ATENCAO,,,ERRO NA ABERTURA DO ARQUIVO 02 RETORNO')
RESTO SCREEN FROM WTELECF
IF WTPRET=1
RETURN(.F.)
ELSE
RETURN('0')
ENDIF
ENDIF
WSRETR := ' '
WDSTSR := ''
FOR X2 := 1 TO WTASTSR
FREAD(WASTSR,@WSRETR,1)
WDSTSR=WDSTSR+WSRETR
NEXT X2
RETURN(WDSTSR)
ELSE
//// TESTAR ESTA LINHA
WDSTSR=.T.
EXIT
ENDIF
ENDIF
ELSE
IF (SECONDS()>=WSTART+WTIMEO)
AVISO2('ATENCA,,,HOUVE PROBLEMA COM O ECF!!')
RESTO SCREEN FROM WTELECF
IF WTPRET=1
RETURN(.F.)
ELSE
RETURN('0')
ENDIF
ENDIF
LOOP
ENDIF
ENDDO
RETURN(WDSTSR)
Responder