Imprimir CODE 128 C na MP 4200

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

gilbertosilverio
Usuário Nível 3
Usuário Nível 3
Mensagens: 339
Registrado em: 18 Jan 2009 10:39
Localização: Ribeirao Pires - SP

Imprimir CODE 128 C na MP 4200

Mensagem por gilbertosilverio »

Ola amigos,

Estou tentando imprimir o Numero Chave da NF-e em um impressora MP 4200 não fiscal, e não estou conseguindo.

Alguem sabe qual e o codigo esc que devo usar, ja fiz varias tentativas mais não consegui.

PRIVATE TAM_WID:=CHR(29) + CHR(119) + CHR(3)
PRIVATE COD_39 :=CHR(29) + CHR(107) + CHR(69) + CHR(6) //+ STRZERO(NFS,6)
PRIVATE COD_39A:=CHR(29) + CHR(107) + CHR(69) + CHR(8)

PRIVATE COD_128:=CHR(29) + CHR(107) + CHR(73) + CHR(44) //+ STRZERO(nCHAVE,6)

No manual da Bematech, e informado assim:
Decimal 29 107 73 n d 1 ... d n

Minha duvida e "n", o que vai aqui?

Seguindo a logica do COD_39, que coloquei CHR(6), por tentativa e erro, coloquei chr(44), mais creio que não e isso...

Código: Selecionar todos


[Function] Print a CODE 39 barcode.
[Format] ASCII GS k E n d 1 ... d n
Hexadecimal 1D 6B 45 n d 1 ... d n
Decimal 29 107 69 n d 1 ... d n
[Description] This command is a copy of GS k EOT d 1 …d n NUL.

[Function] Print a CODE 128 barcode.
[Format] ASCII GS k I n d 1 ... d n
Hexadecimal 1D 6B 49 n d 1 ... d n
Decimal 29 107 73 n d 1 ... d n
[Range] 0 ≤ d n ≤ 127
[Description] d 1 …d n is a sequence of n bytes containing barcode information. The checksum digit is generated
automatically by the printer. The number of barcod

Grato.
GilbertoSilverio
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Imprimir CODE 128 C na MP 4200

Mensagem por JoséQuintas »

Código: Selecionar todos

Function] Print a CODE 128 barcode.
[Format] ASCII GS k I n d 1 ... d n
Hexadecimal 1D 6B 49 n d 1 ... d n
Decimal 29 107 73 n d 1 ... d n
[Range] 0 ≤ d n ≤ 127
[Description] d 1 …d n is a sequence of n bytes containing barcode information. The checksum digit is generated
automatically by the printer. The number of barcod
Parece que N é a quantidade de dígitos
Estranho o texto "dígito de checagem é gerado automaticamente pela impressora", o que sugere que seria um dígito a menos.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
gilbertosilverio
Usuário Nível 3
Usuário Nível 3
Mensagens: 339
Registrado em: 18 Jan 2009 10:39
Localização: Ribeirao Pires - SP

Imprimir CODE 128 C na MP 4200

Mensagem por gilbertosilverio »

Jose,

Encontrei na net, que e aceito em "n" 0 42 1 28 2 16, seguindo a logica, seria então 42, pois a numero chave da NF-e são 44 caracteres.

Ja no manual da NFe:

Código: Selecionar todos


Considerando que para cada símbolo da barra são codificados dois caracteres, então teremos:
Tamanho do campo = 44 (caracteres) / 2 = 22 (símbolos)
Considerando que cada símbolo possui 11 (módulos) * 22 (símbolos) = 242 posições
Margem clara = deve ter no mínimo a dimensão de 10 (módulos) * 2 = 20 posições
Start C = 11 (módulos) = 11 posições
DV = 11 (módulos) = 11 posições
Stop = 13 (módulos) = 13 posições
Tamanho total da simbologia = 242 + 20 + 11 + 11 + 13 = 297 (posições)
Largura mínima de cada módulo da barra = 6 cm / 297 (posições) = 0,02 cm
6.1 Cálculo do Dígito Verificador do CODE-128C
O dígito verificador é baseado em um cálculo do módulo 103 considerando a soma ponderada
dos valores de cada um dos dígitos na mensagem que está sendo codificada, incluindo o valor
do caractere de início (start).

Exemplo: consideremos que a chave de acesso fosse apenas de oito caracteres e contivesse
o seguinte número: 09758364
Chave de acesso START 09 75 83 64
Sequência A 1 2 3 4
Valor do caractere B 105 9 75 83 64
Valor Ponderado (A X B) C 105 9 150 249 256
 Na linha valor do caractere foi incluso o valor 105 que corresponde ao valor do caractere
de início (start) para o padrão Code C.
 Excetuando o caractere de start, os demais valores dos caracteres coincidem com os
valores da chave de acesso, isto porque estamos utilizando o padrão Code C de
codificação que é exclusivamente numérico.
 O dígito verificador do código será o resto da divisão da somatória dos valores ponderados
dividido por 103 (módulo 103).
Assim o dígito verificador será:
 Valor da soma ponderada = (1x105)+(1x9)+(2x75)+(3x83)+(4x64) = 769
 769/103 = 7 resta 48, assim o DV é 48
Pelo manual seriam 22, ja pela Bematech seriam 42, e ai... vou colocar 42 e ver o que da...

Tudo tão confuso, que so por tentativa e erro para achar a solução... kkkk

O duro e que não tenho a impressora aqui, preciso ficar pedindo para o pessoal ir testando ate achar a solução.


Grato Jose.

:%
GilbertoSilverio
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Imprimir CODE 128 C na MP 4200

Mensagem por JoséQuintas »

[Range] 0 ≤ d n ≤ 127
Qualquer número entre 0 e 127.
Ao que parece, o limite de tamanho é da NFE, e não do código de barras.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder