Codigo de barras em impressora termica

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Mensagem por rbonotto »

Código: Selecionar todos

function CalcEAN13(cBase) 
local nSum := 0 
local i 
for i := 1 to 12 
    nSum += Val(SubStr(cBase,i,1)) * if(i%2>0,1,3) 
next 
return if(nSum%10=0, "0", Str(((Int(nSum/10)+1)*10)-nSum,1)
)

Não entendi como usar esta função, tenho um sequencia de numeros, tipo: mYvar := 12345678912 ai chamo a funcao CalcEAN13(mYvar)

E ai...não entendi como somar o digito verificador..., este return no fim da função retorna o que ??

Devo adicionar mYvar + nSum ???
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

rbonotto escreveu:E ai...não entendi como somar o digito verificador..., este return no fim da função retorna o que ??
Ao passar pra função uma string com os 12 primeiros dígitos do EAN, ela retornará o DV deste EAN. Aí é só adicionar a ele pra imprimir os 13 dígitos corretos.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Mensagem por rbonotto »

Maligno escreveu:
rbonotto escreveu:E ai...não entendi como somar o digito verificador..., este return no fim da função retorna o que ??
Ao passar pra função uma string com os 12 primeiros dígitos do EAN, ela retornará o DV deste EAN. Aí é só adicionar a ele pra imprimir os 13 dígitos corretos.
Desculpe minha burrice, mas como devo proceder...a variavel nSum é o digito verificador ? deve ser somada a minha variavel ? teria um exemplo para de codigo para colocar aqui ??
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Mensagem por rbonotto »

Não existe outro método de imprimir códigos de barras que não possuam digitos verificadores ? tipo passo uma string e ele imprime os codigos de barras correspondentes ??

Pleeeeeeaaaaseeeee :D
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Vamos supor que o seu número aleatório apareça como uma seqüência de 12 dígitos: 123456789012, que está na variável cEAN. O número completo será o resultado de cEAN+CalcEAN13(cEAN), com 13 dígitos. Daí é só imprimir.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

rbonotto escreveu:Não existe outro método de imprimir códigos de barras que não possuam digitos verificadores ?
Depende do padrão escolhido e disponível no equipamento. O EAN13 precisa do DV calculado. Mas esse é o menor dos problemas. Se a largura do código (12 dígitos livres) servir, use-o à vontade.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Mensagem por rbonotto »

Vamos supor que o seu número aleatório apareça como uma seqüência de 12 dígitos: 123456789012, que está na variável cEAN. O número completo será o resultado de cEAN+CalcEAN13(cEAN), com 13 dígitos. Daí é só imprimir.

Ufas !!! deu certo agora !

Muito obrigado mesmo, e......valeu pela paciencia mestre ! :)Pos
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Que bom que deu certo. Fico contente. Agora, uma curiosidade minha: quanto custou essa impressora?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Se precisar de alghum exclarecimento sobre DV

checa aqui



https://pctoledo.org/forum/viewtopic.php?t=5841 :D
C:\Xharbour\Xdev\Fw\VSX
Responder