Generar código de barras
Publicado por MªRosa (19 intervenciones) el 07/11/2005 12:55:07
Hola a todos!! he estado investigando todas las consultas del foro sobre la generación de códigos de barras y ninguna me sirve para lo que quiero.
Tengo un lector de códigos de barras que lee BarCode 128 y mi código de barras seria una cosa tal que así 'NA080077000000001'; me han comentado que debería pasarle un algoritmo de conversión a mi código de barras porque sinó al asignarlo a un documento Word con fuente Barcode 128 el lector de códigos de barras no lo leería bien.
Alguien me podría proporcionar el algoritmo o explicarme almenos en que sonsiste?.
Gracias.
De momento la función que yo tengo es esta:
"
String lcStart, lcStop, lcRet, lcCheck, lcCar
Integer lnLong, lnI, lnCheckSum, lnAsc, lnPosicion
lcStart = Char(105 + 32)
lcStop = Char(106 + 32)
lnCheckSum = Asc(lcStart) - 32
lcRet = Trim(as_codibarres)
lnLong = Len(lcRet)
//***** La longitud debe ser par *****
If Mod(lnLong,2) <> 0 Then
lcRet = "0" + lcRet
lnLong = Len(lcRet)
End If
//***** Convierto los pares a caracteres *****
lcCar = ""
lnI = 1
do While lnI <= lnLong
lcCar = lcCar + Char(integer(Mid(lcRet, lnI, 2)) + 32)
lnI=lnI+2
loop
lcRet = lcCar
lnLong = Len(lcRet)
lnI = 1
do while lnI <= lnLong
lnAsc = Asc(Mid(lcRet, lnI, 1)) - 32
lnCheckSum = lnCheckSum + (lnAsc * lnI)
lnI = lnI + 1
loop
lcCheck = Char(MOD(lnCheckSum,103) + 32)
lcRet = lcStart + lcRet + lcCheck + lcStop
//***** Para cambiar los caracteres invalidos *****
lnLong = Len(lcRet)
lnI = 1
do while lnI <= lnLong
lnPosicion = POS(lcRet, Char(32), lnI)
If lnPosicion <> 0 Then
lcRet = Left(lcRet, lnPosicion - 1) + Char(232) + Mid(lcRet, lnPosicion + 1, lnLong)
End If
lnPosicion = Pos(lcRet, Char(127), lnI)
If lnPosicion <> 0 Then
lcRet = Left(lcRet, lnPosicion - 1) + Char(192) + Mid(lcRet, lnPosicion + 1, lnLong)
End If
lnPosicion = Pos(lcRet, Char(128), lnI)
If lnPosicion <> 0 Then
lcRet = Left(lcRet, lnPosicion - 1) + Char(193) + Mid(lcRet, lnPosicion + 1, lnLong)
End If
lnI = lnI + 1
loop
//***** Retorno la cadena transformada *****
return lcRet
"
pero me funciona en el caso que todos los carácteres del código de barras sean números.
Gracias.
Tengo un lector de códigos de barras que lee BarCode 128 y mi código de barras seria una cosa tal que así 'NA080077000000001'; me han comentado que debería pasarle un algoritmo de conversión a mi código de barras porque sinó al asignarlo a un documento Word con fuente Barcode 128 el lector de códigos de barras no lo leería bien.
Alguien me podría proporcionar el algoritmo o explicarme almenos en que sonsiste?.
Gracias.
De momento la función que yo tengo es esta:
"
String lcStart, lcStop, lcRet, lcCheck, lcCar
Integer lnLong, lnI, lnCheckSum, lnAsc, lnPosicion
lcStart = Char(105 + 32)
lcStop = Char(106 + 32)
lnCheckSum = Asc(lcStart) - 32
lcRet = Trim(as_codibarres)
lnLong = Len(lcRet)
//***** La longitud debe ser par *****
If Mod(lnLong,2) <> 0 Then
lcRet = "0" + lcRet
lnLong = Len(lcRet)
End If
//***** Convierto los pares a caracteres *****
lcCar = ""
lnI = 1
do While lnI <= lnLong
lcCar = lcCar + Char(integer(Mid(lcRet, lnI, 2)) + 32)
lnI=lnI+2
loop
lcRet = lcCar
lnLong = Len(lcRet)
lnI = 1
do while lnI <= lnLong
lnAsc = Asc(Mid(lcRet, lnI, 1)) - 32
lnCheckSum = lnCheckSum + (lnAsc * lnI)
lnI = lnI + 1
loop
lcCheck = Char(MOD(lnCheckSum,103) + 32)
lcRet = lcStart + lcRet + lcCheck + lcStop
//***** Para cambiar los caracteres invalidos *****
lnLong = Len(lcRet)
lnI = 1
do while lnI <= lnLong
lnPosicion = POS(lcRet, Char(32), lnI)
If lnPosicion <> 0 Then
lcRet = Left(lcRet, lnPosicion - 1) + Char(232) + Mid(lcRet, lnPosicion + 1, lnLong)
End If
lnPosicion = Pos(lcRet, Char(127), lnI)
If lnPosicion <> 0 Then
lcRet = Left(lcRet, lnPosicion - 1) + Char(192) + Mid(lcRet, lnPosicion + 1, lnLong)
End If
lnPosicion = Pos(lcRet, Char(128), lnI)
If lnPosicion <> 0 Then
lcRet = Left(lcRet, lnPosicion - 1) + Char(193) + Mid(lcRet, lnPosicion + 1, lnLong)
End If
lnI = lnI + 1
loop
//***** Retorno la cadena transformada *****
return lcRet
"
pero me funciona en el caso que todos los carácteres del código de barras sean números.
Gracias.
Valora esta pregunta


0