Jump to content
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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.