Clipper On Line • Ver Tópico - número de parámetros de CMD inválido ???
Página 1 de 1

número de parámetros de CMD inválido ???

MensagemEnviado: 18 Fev 2009 20:49
por marcelocordeiro
Pessoal, por favor se alguem puder me ajudar
Tem uma empresa que presto serviço esporádico, hj me chamaram afim de ver um problema na emissao do cupom fiscal, qdo abre o mesmo da a mensagem "número de parámetros de CMD inválido"

podem verificar o codigo abaixo que extrai do programa e dar uma ideia do que seja o problema

qq coisa estou no msn marcelocordeiro1974@msn.com
posso conversar por msn ou por telefone

agradeço desde ja qq ajuda

abracao pessoal

#INCLUDE "Fileio.ch"

#define ST1_BIT_0 "número de parámetros de CMD inválido"
#define ST1_BIT_1 "cupom aberto"
#define ST1_BIT_2 "comando inexistente"
#define ST1_BIT_3 "primeiro dado de CMD nÆo foi ESC (1Bh)"
#define ST1_BIT_4 "impressora em erro"
#define ST1_BIT_5 "erro no rel¢gio"
#define ST1_BIT_6 "pouco papel"
#define ST1_BIT_7 "fim de papel"

#define ST2_BIT_0 "comando nÆo executado"
#define ST2_BIT_1 "CGC/IE do propriet rio nÆo programados"
#define ST2_BIT_2 "cancelamento nÆo permitido"
#define ST2_BIT_3 "capacidade de al¡quotas program veis lotada"
#define ST2_BIT_4 "al¡quota nÆo programada"
#define ST2_BIT_5 "erro na Mem¢ria RAM CMOS nÆo vol til"
#define ST2_BIT_6 "Mem¢ria fiscal lotada"
#define ST2_BIT_7 "tipo de parƒmetro de CMD inv lido"

****************************************
FUNCTION COMUNICA(FBUFFER,tam_a_ser_ret)
****************************************
/* evia sequencia de bytes para impressora */
fwrite(PORTA, @FBUFFER, len(FBUFFER))
/* pega o retorno da impressora NAK/ACK ST1 ST2 */

GRAVALOG( SUBS(FBUFFER+SPACE(603),3,600))

retorno_impressora := ack := nak := st1 := st2 := space(1)
FTEMPO = LEN(FBUFFER) / 100
INKEY(FTEMPO)

for contador1 := 1 to 3

     fread(PORTA,@retorno_impressora,1)

     do case
        case contador1 = 1
             do case
                case asc(retorno_impressora) = 21 /* retorno em caracter 21d=15h=NAK */
                     MENFIS("Atencao... a impressora retornou 21d=15h=NAK")

                case asc(retorno_impressora) = 06
                     ack := transform(asc(retorno_impressora),"99")
                otherwise
                     MENFIS("Atencao... provavelmente o driver nao foi carregado !")
                     fclose(PORTA)
                     SET COLOR TO
                     CLEAR
                     quit
             endcase
        case contador1 = 2
             st1 := transform(asc(retorno_impressora),"999")
        case contador1 = 3
[b]            st2 := transform(asc(retorno_impressora),"999")[/b]
     endcase

next contador1

/* pega sequencia de retorno caso necess rio */

sequencia_retorno := ""
for contador2 := 1 to tam_a_ser_ret
    fread(PORTA, @retorno_impressora, 1)
    sequencia_retorno += retorno_impressora
next contador2
*-----------------------DECODIFICA
DECODIFICA(ack,st1,st2)

return sequencia_retorno /* executou_sn */

/////////////////////////////////////////////

/////////////////////////////////////////////////
static function DECODIFICA(ACK,ST1,ST2)
   Bit_st1:=Bit_st2:=Bit_ack:=0
   Bit_ack=Val(ACK)
   Bit_st1=Val(ST1)
   Bit_st2=Val(ST2)
//Tratamento do Ack ou NAk
  if Bit_ack # 6
   MENFIS("Problemas ao Enviar o Comando a Impressora Devolveu 21")
  end if

//Aqui ‚ Feito o Tratamento do St1 subtraindo  o Byte anterior pelo Seguinte
  if Bit_st1 >= 128;MENFIS(ST1_BIT_7) ;Bit_st1=Bit_st1-128 ;end if
  if Bit_st1 >= 64 ;MENFIS(ST1_BIT_6) ;Bit_st1=Bit_st1-64  ;end if
  if Bit_st1 >= 32 ;MENFIS(ST1_BIT_5) ;Bit_st1=Bit_st1-32  ;end if
  if Bit_st1 >= 16 ;MENFIS(ST1_BIT_4) ;Bit_st1=Bit_st1-16  ;end if
  if Bit_st1 >= 8  ;MENFIS(ST1_BIT_3) ;Bit_st1=Bit_st1-8   ;end if
  if Bit_st1 >= 4  ;MENFIS(ST1_BIT_2) ;Bit_st1=Bit_st1-4   ;end if
  if Bit_st1 >= 2  ;MENFIS(ST1_BIT_1) ;Bit_st1=Bit_st1-2   ;end if
  if Bit_st1 >= 1  ;MENFIS(ST1_BIT_0)                      ;end if
//Aqui ‚ Feito o Tratamento do St2 subtraindo  o Byte anterior pelo Seguinte
  if Bit_st2 >= 128;MENFIS(ST2_BIT_7) ;Bit_st2=Bit_st2-128 ;end if
  if Bit_st2 >= 64 ;MENFIS(ST2_BIT_6) ;Bit_st2=Bit_st2-64  ;end if
  if Bit_st2 >= 32 ;MENFIS(ST2_BIT_5) ;Bit_st2=Bit_st2-32  ;end if
  if Bit_st2 >= 16 ;MENFIS(ST2_BIT_4) ;Bit_st2=Bit_st2-16  ;end if
  if Bit_st2 >= 8  ;MENFIS(ST2_BIT_3) ;Bit_st2=Bit_st2-8   ;end if
  if Bit_st2 >= 4  ;MENFIS(ST2_BIT_2) ;Bit_st2=Bit_st2-4   ;end if
  if Bit_st2 >= 2  ;MENFIS(ST2_BIT_1) ;Bit_st2=Bit_st2-2   ;end if
  if Bit_st2 >= 1  ;MENFIS(ST1_BIT_0)                      ;end if
return NIL


---
Nota da Moderação (Maligno):
A presente mensagem foi editada com a única finalidade de inserir as tags que permitem uma melhor exposição do código acima.

Re: número de parámetros de CMD inválido ???

MensagemEnviado: 19 Fev 2009 12:10
por sygecom
Olá Marcelo,
Esse sistema é seu ?
Já tenho ir colocando um alert("aqui") para ver onde esta dando essa mensagem ? pelo que eu notei no seu codigo não tem nada dando referencia ao define ST2_BIT_7 que é o define onde esta dando a mensagem.

Re: número de parámetros de CMD inválido ???

MensagemEnviado: 19 Fev 2009 16:42
por marcelocordeiro
ola leonardo, agradeco muito a atencao!

esse sistema nao é meu, foi desenvolvido numa empresa que trabalhei a 6 anos atraz, mas o pessoal nao da mais manutencao no programa, inclusive estao subst por outro, mas voltou a funcionar deixa quieto

agora independente disso, quero entrar no site da Bematech e baixar programas de exemplo para comunicar com impressora fiscal, afim de desenvolver o meu

obrigado

abraço