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

Fórum sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (NFe, NFCe, NFSe, SPEED, Projeto ACBr, TEF, ECD, EFD, etc.)

Moderador: Moderadores

marcelocordeiro
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 14 Nov 2005 16:06
Localização: presidente prudente

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

Mensagem 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



Código: Selecionar todos

#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.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

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

Mensagem 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.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
marcelocordeiro
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 14 Nov 2005 16:06
Localização: presidente prudente

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

Mensagem 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
Responder