Files
Guna_Reparto_Imp/B4A/barcodeGenerator.bas
Javier e3614c5fcf ...
2025-11-04 10:26:50 -06:00

710 lines
24 KiB
QBasic

B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=12.2
@EndOfDesignText@
'version 1.02
Sub Class_Globals
Private xui As XUI
Public cvs As B4XCanvas
Private xview As B4XView
End Sub
Public Sub Initialize
Dim xview As B4XView = xui.CreatePanel(Null)
xview.SetLayoutAnimated(0, 0, 0, 1050dip, 300dip)
xview.Color = xui.Color_White
End Sub
#Region EAN13
Public Sub EAN13(codigo As String) As B4XBitmap
cvs.Initialize(xview)
cvs.ClearRect(cvs.TargetRect)
If codigo.Length=12 Then codigo = "0" & codigo
If codigo.Length=13 Then
Dim novoCodigo As String = preparaEAN13(codigo)
If novoCodigo<>"" Then
'Dim canvas As B4XCanvas
Dim alturaPainel As Int = xview.Height
Dim larguraPainel As Int = xview.Width
Dim larguraCodigo As Int = xview.Width - 100dip
'Calcula as dimensões dos elementos do código de barras'
Dim alturaNumero As Int = 40dip 'altura dos números abaixo do código'
Dim larguraBarra As Int = larguraCodigo / 95 'largura de cada barra'
Dim alturaBarra As Int = alturaPainel - alturaNumero'altura das barras'
'Desenha as barras e os números do código de barras'
Dim rect As B4XRect
rect.Initialize(0, 0, larguraPainel, alturaPainel)
cvs.DrawRect(rect, xui.Color_White, True, 0) 'fundo branco'
Dim larguraAtual As Int = 50dip
For i=0 To novoCodigo.Length-1
Dim cor As Int = xui.Color_Black
If novoCodigo.CharAt(i) = "0" Then cor = xui.Color_White
If novoCodigo.CharAt(i) = "2" Then
cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra, cor, larguraBarra)
Else
cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra - alturaNumero, cor, larguraBarra)
End If
larguraAtual = larguraAtual + larguraBarra
Next
'Desenha o número abaixo do código de barras'
Dim fonte As B4XFont = xui.CreateFontAwesome(63)
Dim sb As StringBuilder
sb.Initialize
For i=1 To codigo.Length
Dim codigoCaracter As String = codigo.CharAt(i-1)
sb.Append(codigoCaracter)
If i=1 Then
sb.Append(" ")
Else If i=7 Then
sb.Append(" ")
Else If i=13 Then
'nao adiciona nada
Else
sb.Append(" ")
End If
Next
cvs.DrawText(sb.ToString, 1dip, alturaBarra+10dip, fonte, xui.Color_Black, "LEFT")
End If
End If
cvs.Invalidate
Dim res As B4XBitmap = cvs.CreateBitmap
cvs.Release
Return res
End Sub
Private Sub preparaEAN13(codigo As String) As String
Dim primeiroDigito As String = codigo.SubString2(0,1)
Dim primeiroGrupo As String = codigo.SubString2(1,7)
Dim segundoGrupo As String = codigo.SubString2(7,13)
Dim sequenciaNovo As String = ""
Dim codigoNovo As String = "-" & primeiroGrupo & "=" & segundoGrupo & "-"
If primeiroDigito="0" Then sequenciaNovo="-LLLLLL=RRRRRR-"
If primeiroDigito="1" Then sequenciaNovo="-LLGLGG=RRRRRR-"
If primeiroDigito="2" Then sequenciaNovo="-LLGGLG=RRRRRR-"
If primeiroDigito="3" Then sequenciaNovo="-LLGGGL=RRRRRR-"
If primeiroDigito="4" Then sequenciaNovo="-LGLLGG=RRRRRR-"
If primeiroDigito="5" Then sequenciaNovo="-LGGLLG=RRRRRR-"
If primeiroDigito="6" Then sequenciaNovo="-LGGGLL=RRRRRR-"
If primeiroDigito="7" Then sequenciaNovo="-LGLGLG=RRRRRR-"
If primeiroDigito="8" Then sequenciaNovo="-LGLGGL=RRRRRR-"
If primeiroDigito="9" Then sequenciaNovo="-LGGLGL=RRRRRR-"
Dim sb As StringBuilder
sb.Initialize
For i=0 To codigoNovo.Length-1
Dim digitoGrupo As String = codigoNovo.CharAt(i)
Dim sequenciaGrupo As String = sequenciaNovo.CharAt(i)
If sequenciaGrupo="L" Then
If digitoGrupo="0" Then sb.Append("0001101")
If digitoGrupo="1" Then sb.Append("0011001")
If digitoGrupo="2" Then sb.Append("0010011")
If digitoGrupo="3" Then sb.Append("0111101")
If digitoGrupo="4" Then sb.Append("0100011")
If digitoGrupo="5" Then sb.Append("0110001")
If digitoGrupo="6" Then sb.Append("0101111")
If digitoGrupo="7" Then sb.Append("0111011")
If digitoGrupo="8" Then sb.Append("0110111")
If digitoGrupo="9" Then sb.Append("0001011")
else If sequenciaGrupo="G" Then
If digitoGrupo="0" Then sb.Append("0100111")
If digitoGrupo="1" Then sb.Append("0110011")
If digitoGrupo="2" Then sb.Append("0011011")
If digitoGrupo="3" Then sb.Append("0100001")
If digitoGrupo="4" Then sb.Append("0011101")
If digitoGrupo="5" Then sb.Append("0111001")
If digitoGrupo="6" Then sb.Append("0000101")
If digitoGrupo="7" Then sb.Append("0010001")
If digitoGrupo="8" Then sb.Append("0001001")
If digitoGrupo="9" Then sb.Append("0010111")
Else If sequenciaGrupo="R" Then
If digitoGrupo="0" Then sb.Append("1110010")
If digitoGrupo="1" Then sb.Append("1100110")
If digitoGrupo="2" Then sb.Append("1101100")
If digitoGrupo="3" Then sb.Append("1000010")
If digitoGrupo="4" Then sb.Append("1011100")
If digitoGrupo="5" Then sb.Append("1001110")
If digitoGrupo="6" Then sb.Append("1010000")
If digitoGrupo="7" Then sb.Append("1000100")
If digitoGrupo="8" Then sb.Append("1001000")
If digitoGrupo="9" Then sb.Append("1110100")
Else If sequenciaGrupo="-" Then
sb.Append("202")
Else If sequenciaGrupo="=" Then
sb.Append("02020")
End If
Next
Return sb.ToString
End Sub
#End Region
#Region UPCA
Public Sub UPCA(codigo As String) As B4XBitmap
cvs.Initialize(xview)
cvs.ClearRect(cvs.TargetRect)
If codigo.Length=11 Then codigo = "0" & codigo
If codigo.Length=12 Then
Dim novoCodigo As String = preparaUPCA(codigo)
If novoCodigo<>"" Then
'Dim canvas As B4XCanvas
Dim alturaPainel As Int = xview.Height
Dim larguraPainel As Int = xview.Width
Dim larguraCodigo As Int = xview.Width - 100dip
'Calcula as dimensões dos elementos do código de barras'
Dim alturaNumero As Int = 40dip 'altura dos números abaixo do código'
Dim larguraBarra As Int = larguraCodigo / 95 'largura de cada barra'
Dim alturaBarra As Int = alturaPainel - alturaNumero'altura das barras'
'Desenha as barras e os números do código de barras'
Dim rect As B4XRect
rect.Initialize(0, 0, larguraPainel, alturaPainel)
cvs.DrawRect(rect, xui.Color_White, True, 0) 'fundo branco'
Dim larguraAtual As Int = 50dip
For i=0 To novoCodigo.Length-1
Dim cor As Int = xui.Color_Black
If novoCodigo.CharAt(i) = "0" Then cor = xui.Color_White
If novoCodigo.CharAt(i) = "2" Then
cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra, cor, larguraBarra)
Else
cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra - alturaNumero, cor, larguraBarra)
End If
larguraAtual = larguraAtual + larguraBarra
Next
'Desenha o número abaixo do código de barras'
Dim fonte As B4XFont = xui.CreateFontAwesome(63)
Dim sb As StringBuilder
sb.Initialize
For i=1 To codigo.Length
Dim codigoCaracter As String = codigo.CharAt(i-1)
sb.Append(codigoCaracter)
If i=1 Then
sb.Append(" ")
Else If i=6 Then
sb.Append(" ")
Else If i=11 Then
sb.Append(" ")
Else If i=12 Then
'nao adiciona nada
Else
sb.Append(" ")
End If
Next
cvs.DrawText(sb.ToString, 1dip, alturaBarra+10dip, fonte, xui.Color_Black, "LEFT")
End If
End If
cvs.Invalidate
Dim res As B4XBitmap = cvs.CreateBitmap
cvs.Release
Return res
End Sub
Private Sub preparaUPCA(codigo As String) As String
Dim primeiroGrupo As String = codigo.SubString2(0,6)
Dim segundoGrupo As String = codigo.SubString2(6,12)
Dim sequenciaNovo As String = "-JLLLLL=RRRRRS-"
Dim codigoNovo As String = "-" & primeiroGrupo & "=" & segundoGrupo & "-"
Dim sb As StringBuilder
sb.Initialize
For i=0 To codigoNovo.Length-1
Dim digitoGrupo As String = codigoNovo.CharAt(i)
Dim sequenciaGrupo As String = sequenciaNovo.CharAt(i)
If sequenciaGrupo="L" Then
If digitoGrupo="0" Then sb.Append("0001101")
If digitoGrupo="1" Then sb.Append("0011001")
If digitoGrupo="2" Then sb.Append("0010011")
If digitoGrupo="3" Then sb.Append("0111101")
If digitoGrupo="4" Then sb.Append("0100011")
If digitoGrupo="5" Then sb.Append("0110001")
If digitoGrupo="6" Then sb.Append("0101111")
If digitoGrupo="7" Then sb.Append("0111011")
If digitoGrupo="8" Then sb.Append("0110111")
If digitoGrupo="9" Then sb.Append("0001011")
Else If sequenciaGrupo="J" Then
If digitoGrupo="0" Then sb.Append("0001101".Replace("1","2"))
If digitoGrupo="1" Then sb.Append("0011001".Replace("1","2"))
If digitoGrupo="2" Then sb.Append("0010011".Replace("1","2"))
If digitoGrupo="3" Then sb.Append("0111101".Replace("1","2"))
If digitoGrupo="4" Then sb.Append("0100011".Replace("1","2"))
If digitoGrupo="5" Then sb.Append("0110001".Replace("1","2"))
If digitoGrupo="6" Then sb.Append("0101111".Replace("1","2"))
If digitoGrupo="7" Then sb.Append("0111011".Replace("1","2"))
If digitoGrupo="8" Then sb.Append("0110111".Replace("1","2"))
If digitoGrupo="9" Then sb.Append("0001011".Replace("1","2"))
Else If sequenciaGrupo="R" Then
If digitoGrupo="0" Then sb.Append("1110010")
If digitoGrupo="1" Then sb.Append("1100110")
If digitoGrupo="2" Then sb.Append("1101100")
If digitoGrupo="3" Then sb.Append("1000010")
If digitoGrupo="4" Then sb.Append("1011100")
If digitoGrupo="5" Then sb.Append("1001110")
If digitoGrupo="6" Then sb.Append("1010000")
If digitoGrupo="7" Then sb.Append("1000100")
If digitoGrupo="8" Then sb.Append("1001000")
If digitoGrupo="9" Then sb.Append("1110100")
Else If sequenciaGrupo="S" Then
If digitoGrupo="0" Then sb.Append("1110010".Replace("1","2"))
If digitoGrupo="1" Then sb.Append("1100110".Replace("1","2"))
If digitoGrupo="2" Then sb.Append("1101100".Replace("1","2"))
If digitoGrupo="3" Then sb.Append("1000010".Replace("1","2"))
If digitoGrupo="4" Then sb.Append("1011100".Replace("1","2"))
If digitoGrupo="5" Then sb.Append("1001110".Replace("1","2"))
If digitoGrupo="6" Then sb.Append("1010000".Replace("1","2"))
If digitoGrupo="7" Then sb.Append("1000100".Replace("1","2"))
If digitoGrupo="8" Then sb.Append("1001000".Replace("1","2"))
If digitoGrupo="9" Then sb.Append("1110100".Replace("1","2"))
Else If sequenciaGrupo="-" Then
sb.Append("202")
Else If sequenciaGrupo="=" Then
sb.Append("02020")
End If
Next
Return sb.ToString
End Sub
#End Region
#Region CODE128
Public Sub CODE128(codigo As String) As B4XBitmap
cvs.Initialize(xview)
cvs.ClearRect(cvs.TargetRect)
Dim novoCodigo As String = preparaCODE128(codigo)
If novoCodigo<>"" Then
'Dim canvas As B4XCanvas
Dim alturaPainel As Int = xview.Height
Dim larguraPainel As Int = xview.Width
Dim larguraCodigo As Int = xview.Width - 100dip
'Calcula as dimensões dos elementos do código de barras'
Dim alturaNumero As Int = 40dip 'altura dos números abaixo do código'
Dim larguraBarra As Int = larguraCodigo / ((codigo.Length*11)+11+11+13) 'largura de cada barra'
Dim alturaBarra As Int = alturaPainel - alturaNumero'altura das barras'
'Desenha as barras e os números do código de barras'
Dim rect As B4XRect
rect.Initialize(0, 0, larguraPainel, alturaPainel)
cvs.DrawRect(rect, xui.Color_White, True, 0) 'fundo branco'
Dim larguraAtual As Int = 50dip
For i=0 To novoCodigo.Length-1
Dim cor As Int = xui.Color_Black
If novoCodigo.CharAt(i) = "0" Then cor = xui.Color_White
If novoCodigo.CharAt(i) = "2" Then
cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra, cor, larguraBarra)
Else If novoCodigo.CharAt(i) = "3" Then
cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra, xui.Color_Blue, larguraBarra)
Else
cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra - alturaNumero, cor, larguraBarra)
End If
larguraAtual = larguraAtual + larguraBarra
Next
'Desenha o número abaixo do código de barras'
Dim fonte As B4XFont = xui.CreateFontAwesome(63)
cvs.DrawText(codigo, cvs.TargetRect.CenterX, alturaBarra+10dip, fonte, xui.Color_Black, "CENTER")
End If
cvs.Invalidate
Dim res As B4XBitmap = cvs.CreateBitmap
cvs.Release
Return res
End Sub
Private Sub preparaCODE128(codigo As String) As String
Dim codigoNovo As String = codigo
Dim sb As StringBuilder
sb.Initialize
sb.Append("11010010000") ' iniciar codigo b
Dim somatoria As Int = 104 ' valor do inicio
For i=0 To codigoNovo.Length-1
Dim digitoGrupo As String = codigoNovo.CharAt(i)
Dim multiplicador As Int = (i+1)
Dim valorDigito As Int = valorDigitoCODE128(digitoGrupo)
Dim valorDigitoMultiplicado As Int = (multiplicador*valorDigito)
somatoria = (somatoria + valorDigitoMultiplicado)
sb.Append(sequenciaDigitoCODE128(digitoGrupo))
Next
Dim checksum As Int = (somatoria Mod 103)
Dim checksumDigito As String = codigoDigitoCODE128(checksum)
sb.Append(sequenciaDigitoCODE128(checksumDigito))
sb.Append("1100011101011") 'fim do codigo
Return sb.ToString
End Sub
Private Sub sequenciaDigitoCODE128(digitoGrupo As String) As String
If digitoGrupo=" " Then Return "11011001100"
If digitoGrupo="!" Then Return "11001101100"
If digitoGrupo=$"""$ Then Return "11001100110"
If digitoGrupo="#" Then Return "10010011000"
If digitoGrupo="$" Then Return "10010001100"
If digitoGrupo="%" Then Return "10001001100"
If digitoGrupo="&" Then Return "10011001000"
If digitoGrupo="'" Then Return "10011000100"
If digitoGrupo="(" Then Return "10001100100"
If digitoGrupo=")" Then Return "11001001000"
If digitoGrupo="*" Then Return "11001000100"
If digitoGrupo="+" Then Return "11000100100"
If digitoGrupo="," Then Return "10110011100"
If digitoGrupo="-" Then Return "10011011100"
If digitoGrupo="." Then Return "10011001110"
If digitoGrupo="/" Then Return "10111001100"
If digitoGrupo="0" Then Return "10011101100"
If digitoGrupo="1" Then Return "10011100110"
If digitoGrupo="2" Then Return "11001110010"
If digitoGrupo="3" Then Return "11001011100"
If digitoGrupo="4" Then Return "11001001110"
If digitoGrupo="5" Then Return "11011100100"
If digitoGrupo="6" Then Return "11001110100"
If digitoGrupo="7" Then Return "11101101110"
If digitoGrupo="8" Then Return "11101001100"
If digitoGrupo="9" Then Return "11100101100"
If digitoGrupo=":" Then Return "11100100110"
If digitoGrupo=";" Then Return "11101100100"
If digitoGrupo="<" Then Return "11100110100"
If digitoGrupo="=" Then Return "11100110010"
If digitoGrupo=">" Then Return "11011011000"
If digitoGrupo="?" Then Return "11011000110"
If digitoGrupo="@" Then Return "11000110110"
If digitoGrupo="A" Then Return "10100011000"
If digitoGrupo="B" Then Return "10001011000"
If digitoGrupo="C" Then Return "10001000110"
If digitoGrupo="D" Then Return "10110001000"
If digitoGrupo="E" Then Return "10001101000"
If digitoGrupo="F" Then Return "10001100010"
If digitoGrupo="G" Then Return "11010001000"
If digitoGrupo="H" Then Return "11000101000"
If digitoGrupo="I" Then Return "11000100010"
If digitoGrupo="J" Then Return "10110111000"
If digitoGrupo="K" Then Return "10110001110"
If digitoGrupo="L" Then Return "10001101110"
If digitoGrupo="M" Then Return "10111011000"
If digitoGrupo="N" Then Return "10111000110"
If digitoGrupo="O" Then Return "10001110110"
If digitoGrupo="P" Then Return "11101110110"
If digitoGrupo="Q" Then Return "11010001110"
If digitoGrupo="R" Then Return "11000101110"
If digitoGrupo="S" Then Return "11011101000"
If digitoGrupo="T" Then Return "11011100010"
If digitoGrupo="U" Then Return "11011101110"
If digitoGrupo="V" Then Return "11101011000"
If digitoGrupo="W" Then Return "11101000110"
If digitoGrupo="X" Then Return "11100010110"
If digitoGrupo="Y" Then Return "11101101000"
If digitoGrupo="Z" Then Return "11101100010"
If digitoGrupo="[" Then Return "11100011010"
If digitoGrupo="\" Then Return "11101111010"
If digitoGrupo="]" Then Return "11001000010"
If digitoGrupo="^" Then Return "11110001010"
If digitoGrupo="_" Then Return "10100110000"
If digitoGrupo="`" Then Return "10100001100"
If digitoGrupo="a" Then Return "10010110000"
If digitoGrupo="b" Then Return "10010000110"
If digitoGrupo="c" Then Return "10000101100"
If digitoGrupo="d" Then Return "10000100110"
If digitoGrupo="e" Then Return "10110010000"
If digitoGrupo="f" Then Return "10110000100"
If digitoGrupo="g" Then Return "10011010000"
If digitoGrupo="h" Then Return "10011000010"
If digitoGrupo="i" Then Return "10000110100"
If digitoGrupo="j" Then Return "10000110010"
If digitoGrupo="k" Then Return "11000010010"
If digitoGrupo="l" Then Return "11001010000"
If digitoGrupo="m" Then Return "11110111010"
If digitoGrupo="n" Then Return "11000010100"
If digitoGrupo="o" Then Return "10001111010"
If digitoGrupo="p" Then Return "10100111100"
If digitoGrupo="q" Then Return "10010111100"
If digitoGrupo="r" Then Return "10010011110"
If digitoGrupo="s" Then Return "10111100100"
If digitoGrupo="t" Then Return "10011110100"
If digitoGrupo="u" Then Return "10011110010"
If digitoGrupo="v" Then Return "11110100100"
If digitoGrupo="w" Then Return "11110010100"
If digitoGrupo="x" Then Return "11110010010"
If digitoGrupo="y" Then Return "11011011110"
If digitoGrupo="z" Then Return "11011110110"
If digitoGrupo="{" Then Return "11110110110"
If digitoGrupo="|" Then Return "10101111000"
If digitoGrupo="}" Then Return "10100011110"
If digitoGrupo="~" Then Return "10001011110"
Return ""
End Sub
Private Sub valorDigitoCODE128(digitoGrupo As String) As Int
If digitoGrupo=" " Then Return 0
If digitoGrupo="!" Then Return 1
If digitoGrupo=$"""$ Then Return 2
If digitoGrupo="#" Then Return 3
If digitoGrupo="$" Then Return 4
If digitoGrupo="%" Then Return 5
If digitoGrupo="&" Then Return 6
If digitoGrupo="'" Then Return 7
If digitoGrupo="(" Then Return 8
If digitoGrupo=")" Then Return 9
If digitoGrupo="*" Then Return 10
If digitoGrupo="+" Then Return 11
If digitoGrupo="," Then Return 12
If digitoGrupo="-" Then Return 13
If digitoGrupo="." Then Return 14
If digitoGrupo="/" Then Return 15
If digitoGrupo="0" Then Return 16
If digitoGrupo="1" Then Return 17
If digitoGrupo="2" Then Return 18
If digitoGrupo="3" Then Return 19
If digitoGrupo="4" Then Return 20
If digitoGrupo="5" Then Return 21
If digitoGrupo="6" Then Return 22
If digitoGrupo="7" Then Return 23
If digitoGrupo="8" Then Return 24
If digitoGrupo="9" Then Return 25
If digitoGrupo=":" Then Return 26
If digitoGrupo=";" Then Return 27
If digitoGrupo="<" Then Return 28
If digitoGrupo="=" Then Return 29
If digitoGrupo=">" Then Return 30
If digitoGrupo="?" Then Return 31
If digitoGrupo="@" Then Return 32
If digitoGrupo="A" Then Return 33
If digitoGrupo="B" Then Return 34
If digitoGrupo="C" Then Return 35
If digitoGrupo="D" Then Return 36
If digitoGrupo="E" Then Return 37
If digitoGrupo="F" Then Return 38
If digitoGrupo="G" Then Return 39
If digitoGrupo="H" Then Return 40
If digitoGrupo="I" Then Return 41
If digitoGrupo="J" Then Return 42
If digitoGrupo="K" Then Return 43
If digitoGrupo="L" Then Return 44
If digitoGrupo="M" Then Return 45
If digitoGrupo="N" Then Return 46
If digitoGrupo="O" Then Return 47
If digitoGrupo="P" Then Return 48
If digitoGrupo="Q" Then Return 49
If digitoGrupo="R" Then Return 50
If digitoGrupo="S" Then Return 51
If digitoGrupo="T" Then Return 52
If digitoGrupo="U" Then Return 53
If digitoGrupo="V" Then Return 54
If digitoGrupo="W" Then Return 55
If digitoGrupo="X" Then Return 56
If digitoGrupo="Y" Then Return 57
If digitoGrupo="Z" Then Return 58
If digitoGrupo="[" Then Return 59
If digitoGrupo="\" Then Return 60
If digitoGrupo="]" Then Return 61
If digitoGrupo="^" Then Return 62
If digitoGrupo="_" Then Return 63
If digitoGrupo="`" Then Return 64
If digitoGrupo="a" Then Return 65
If digitoGrupo="b" Then Return 66
If digitoGrupo="c" Then Return 67
If digitoGrupo="d" Then Return 68
If digitoGrupo="e" Then Return 69
If digitoGrupo="f" Then Return 70
If digitoGrupo="g" Then Return 71
If digitoGrupo="h" Then Return 72
If digitoGrupo="i" Then Return 73
If digitoGrupo="j" Then Return 74
If digitoGrupo="k" Then Return 75
If digitoGrupo="l" Then Return 76
If digitoGrupo="m" Then Return 77
If digitoGrupo="n" Then Return 78
If digitoGrupo="o" Then Return 79
If digitoGrupo="p" Then Return 80
If digitoGrupo="q" Then Return 81
If digitoGrupo="r" Then Return 82
If digitoGrupo="s" Then Return 83
If digitoGrupo="t" Then Return 84
If digitoGrupo="u" Then Return 85
If digitoGrupo="v" Then Return 86
If digitoGrupo="w" Then Return 87
If digitoGrupo="x" Then Return 88
If digitoGrupo="y" Then Return 89
If digitoGrupo="z" Then Return 90
If digitoGrupo="{" Then Return 91
If digitoGrupo="|" Then Return 92
If digitoGrupo="}" Then Return 93
If digitoGrupo="~" Then Return 94
Return 0
End Sub
Private Sub codigoDigitoCODE128(digitoGrupo As Int) As String
If digitoGrupo=0 Then Return " "
If digitoGrupo=1 Then Return "!"
If digitoGrupo=2 Then Return $"""$
If digitoGrupo=3 Then Return "#"
If digitoGrupo=4 Then Return "$"
If digitoGrupo=5 Then Return "%"
If digitoGrupo=6 Then Return "&"
If digitoGrupo=7 Then Return "'"
If digitoGrupo=8 Then Return "("
If digitoGrupo=9 Then Return ")"
If digitoGrupo=10 Then Return "*"
If digitoGrupo=11 Then Return "+"
If digitoGrupo=12 Then Return ","
If digitoGrupo=13 Then Return "-"
If digitoGrupo=14 Then Return "."
If digitoGrupo=15 Then Return "/"
If digitoGrupo=16 Then Return "0"
If digitoGrupo=17 Then Return "1"
If digitoGrupo=18 Then Return "2"
If digitoGrupo=19 Then Return "3"
If digitoGrupo=20 Then Return "4"
If digitoGrupo=21 Then Return "5"
If digitoGrupo=22 Then Return "6"
If digitoGrupo=23 Then Return "7"
If digitoGrupo=24 Then Return "8"
If digitoGrupo=25 Then Return "9"
If digitoGrupo=26 Then Return ":"
If digitoGrupo=27 Then Return ";"
If digitoGrupo=28 Then Return "<"
If digitoGrupo=29 Then Return "="
If digitoGrupo=30 Then Return ">"
If digitoGrupo=31 Then Return "?"
If digitoGrupo=32 Then Return "@"
If digitoGrupo=33 Then Return "A"
If digitoGrupo=34 Then Return "B"
If digitoGrupo=35 Then Return "C"
If digitoGrupo=36 Then Return "D"
If digitoGrupo=37 Then Return "E"
If digitoGrupo=38 Then Return "F"
If digitoGrupo=39 Then Return "G"
If digitoGrupo=40 Then Return "H"
If digitoGrupo=41 Then Return "I"
If digitoGrupo=42 Then Return "J"
If digitoGrupo=43 Then Return "K"
If digitoGrupo=44 Then Return "L"
If digitoGrupo=45 Then Return "M"
If digitoGrupo=46 Then Return "N"
If digitoGrupo=47 Then Return "O"
If digitoGrupo=48 Then Return "P"
If digitoGrupo=49 Then Return "Q"
If digitoGrupo=50 Then Return "R"
If digitoGrupo=51 Then Return "S"
If digitoGrupo=52 Then Return "T"
If digitoGrupo=53 Then Return "U"
If digitoGrupo=54 Then Return "V"
If digitoGrupo=55 Then Return "W"
If digitoGrupo=56 Then Return "X"
If digitoGrupo=57 Then Return "Y"
If digitoGrupo=58 Then Return "Z"
If digitoGrupo=59 Then Return "["
If digitoGrupo=60 Then Return "\"
If digitoGrupo=61 Then Return "]"
If digitoGrupo=62 Then Return "^"
If digitoGrupo=63 Then Return "_"
If digitoGrupo=64 Then Return "`"
If digitoGrupo=65 Then Return "a"
If digitoGrupo=66 Then Return "b"
If digitoGrupo=67 Then Return "c"
If digitoGrupo=68 Then Return "d"
If digitoGrupo=69 Then Return "e"
If digitoGrupo=70 Then Return "f"
If digitoGrupo=71 Then Return "g"
If digitoGrupo=72 Then Return "h"
If digitoGrupo=73 Then Return "i"
If digitoGrupo=74 Then Return "j"
If digitoGrupo=75 Then Return "k"
If digitoGrupo=76 Then Return "l"
If digitoGrupo=77 Then Return "m"
If digitoGrupo=78 Then Return "n"
If digitoGrupo=79 Then Return "o"
If digitoGrupo=80 Then Return "p"
If digitoGrupo=81 Then Return "q"
If digitoGrupo=82 Then Return "r"
If digitoGrupo=83 Then Return "s"
If digitoGrupo=84 Then Return "t"
If digitoGrupo=85 Then Return "u"
If digitoGrupo=86 Then Return "v"
If digitoGrupo=87 Then Return "w"
If digitoGrupo=88 Then Return "x"
If digitoGrupo=89 Then Return "y"
If digitoGrupo=90 Then Return "z"
If digitoGrupo=91 Then Return "{"
If digitoGrupo=92 Then Return "|"
If digitoGrupo=93 Then Return "}"
If digitoGrupo=94 Then Return "~"
Return " "
End Sub
#End Region