Ir para conteúdo
Juscelino Barão

Code Bar i25 (ou Visual BASIC 6 para PHP)

Recommended Posts

Olá pessoal!
Estou com uma grande questão para resolver. Preciso  usar uma fonte TTF (2of5) para gerar códigos de barras no formato 2 of 5 interleaved.
 
O que descobri foi que se digitar 190035 numa fonte 2 of 5 interleaved ele não é interpretado 190035.
Se eu digitar Ë4!DÌ ai sim ele será interpretado como 190035.
Isto significa que tenho que primeiro encodar o código 190035 para poder usar na fonte 2 of 5 interleaved.
Veja no exemplo na imagem abaixo:
 

000.jpg

 
 
Então essa é a questão: encodar uma string para que possa usar numa fonte 2 of 5 interleaved.
 
Outros programas instaláveis dá pra ver esse 'encodamento' primeiro para depois gerar o código.
Exemplo na segunda imagem abaixo:

001.jpg

 
 
O problema é: qual fórmula usar?
 
Descobri um site que contém um .EXE para gerar códigos de barras no formato 2 of 5 interleaved e que também disponibiliza um código em Visual BASIC 6.
Link da página baixo:
 
Eu pensei em usar a formula matemática descrita no código para gerá-la em php, só que não entendo nada de VB.
Alguém poderia me ajudar?
 
 
CÓDIGO VB6 DO SITE GRANDZEBU:

 
Public Function Code25I$(chaine$, Optional key As Boolean)
  'V 2.0.0
  '
Parametres : * une chaine
 
'             * un drapeau vrai si une cle doit etre ajoutee
  '
Parameters : * a string
  '             * a flag true if a key must be added
  '
Retour : * une chaine qui, affichee avec la police CODE25I.TTF, donne le code barre
 
'         * une chaine vide si parametre fourni incorrect
  '
Return : * a string which give the bar code when it is dispayed with CODE25I.TTF font
 
'         * an empty string if the supplied parameter is no good
  Dim i%, checksum&, dummy%
  Code25I$ = ""
  If Len(chaine$) > 0 Then
    '
Verifier si caracteres valides
   
'Check for valid characters
    For i% = 1 To Len(chaine$)
      If Asc(Mid$(chaine$, i%, 1)) < 48 Or Asc(Mid$(chaine$, i%, 1)) > 57 Then Exit Function
    Next
    '
Ajouter si necessaire la cle
   
'Add if necessary the checksum
    If key Then
      For i% = Len(chaine$) To 1 Step -2
        checksum& = checksum& + Val(Mid$(chaine$, i%, 1))
      Next
      checksum& = checksum& * 3
      For i% = Len(chaine$) - 1 To 1 Step -2
        checksum& = checksum& + Val(Mid$(chaine$, i%, 1))
      Next
      chaine$ = chaine$ & (10 - checksum& Mod 10) Mod 10
    End If
    '
Verifier si la longueur est paire
   
'Check if the length is odd
    If Len(chaine$) \ 2 <> Len(chaine$) / 2 Then Exit Function
    '
Calculer la chaine de code
   
'Calculation of the code string
    For i% = 1 To Len(chaine$) Step 2
      dummy% = Val(Mid$(chaine$, i%, 2))
      dummy% = IIf(dummy% < 94, dummy% + 33, dummy% + 101)
      Code25I$ = Code25I$ & Chr$(dummy%)
    Next
    '
Ajoute START et STOP / Add START and STOP
   
Code25I$ = Chr$(201) & Code25I$ & Chr$(202)
  End If
End Function


Alguém pode me dar uma força para entender esse código e assim montar o que preciso?

Obrigado pela atenção.

 

000.jpg

001.jpg

002.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.