Codebar 128 c
Moderator: Rathinagiri
- edufloriv
- Posts: 240
- Joined: Thu Nov 08, 2012 3:42 am
- DBs Used: DBF, MariaDB, MySQL, MSSQL, MariaDB
- Location: PERU
Codebar 128 c
Saludos amigos,
Alguien tendrá la fuente para generar códigos de barra 128c (c128c.ttf). De ser posible si tuvieran también el proceso para generar el código porque he leido que hay un proceso para generar el inicio, el final y el código de control. Por favor agradeceré toda la ayuda que me puedan dar con este formato de código de barras.
Mil gracias.
Alguien tendrá la fuente para generar códigos de barra 128c (c128c.ttf). De ser posible si tuvieran también el proceso para generar el código porque he leido que hay un proceso para generar el inicio, el final y el código de control. Por favor agradeceré toda la ayuda que me puedan dar con este formato de código de barras.
Mil gracias.
Eduardo Flores Rivas
LIMA - PERU
- Rathinagiri
- Posts: 5480
- Joined: Tue Jul 29, 2008 6:30 pm
- DBs Used: MariaDB, SQLite, SQLCipher and MySQL
- Location: Sivakasi, India
- Contact:
Re: Codebar 128 c
Hi, you can use HMG_Zebra from HFCL library. Without any font you can create many varieties of barcode.
East or West HMG is the Best.
South or North HMG is worth.
...the possibilities are endless.
South or North HMG is worth.
...the possibilities are endless.
- edufloriv
- Posts: 240
- Joined: Thu Nov 08, 2012 3:42 am
- DBs Used: DBF, MariaDB, MySQL, MSSQL, MariaDB
- Location: PERU
Re: Codebar 128 c
Amigos EUREKAAAA !!!
Dos dias de investigación pero lo logré. A continuación el código para imprimir barcodes en el formato 128 C (Ojo, es la "C" para "A" y "B" hay que realizar algunas modificaciones a la función StrToBar128c() - "C" solo sirve para códigos con solo números. Porque insistí con este formato ? porque si bien, otros son más fáciles de usar, generan códigos de barra más largos. Además es un formato ampliamente aceptado y porque mi proveedor de facturas (que vienen con código de barras) usa este formato
También adjunto el .ZIP con la fuente y el código que me sirvió de guía (y que está escrito en un lenguaje que desconozco).
También pongo los 2 links geniales que me ayudaron un montonononon !!
http://www.adams1.com/128code.html" onclick="window.open(this.href);return false;
http://www.adams1.com/128table.html" onclick="window.open(this.href);return false;
Espero aportar con esta investigación.
Saludos cordiales a todos.
Dos dias de investigación pero lo logré. A continuación el código para imprimir barcodes en el formato 128 C (Ojo, es la "C" para "A" y "B" hay que realizar algunas modificaciones a la función StrToBar128c() - "C" solo sirve para códigos con solo números. Porque insistí con este formato ? porque si bien, otros son más fáciles de usar, generan códigos de barra más largos. Además es un formato ampliamente aceptado y porque mi proveedor de facturas (que vienen con código de barras) usa este formato

Code: Select all
#include <hmg.ch>
FUNCTION main()
DEFINE WINDOW barcode ;
AT 0 , 0 ;
WIDTH 580;
HEIGHT 220;
TITLE 'Program Barcode' ;
MAIN ;
ON INIT barcode_iniciar()
@ 050 , 020 LABEL Label_1 ;
VALUE 'Code' ;
WIDTH 050 ;
HEIGHT 24 ;
RIGHTALIGN
@ 050 , 080 TEXTBOX Text_1 ;
WIDTH 250 ;
HEIGHT 24
@ 050 , 340 BUTTON Button_1 ;
CAPTION 'Draw Code' ;
ACTION play_barcode() ;
FONT 'Arial' SIZE 9 ;
WIDTH 100 ;
HEIGHT 28
@ 050 , 450 BUTTON BImprime ;
CAPTION 'Print' ;
ACTION ImpBarras() ;
FONT 'Arial' SIZE 9 ;
WIDTH 100 ;
HEIGHT 28
@ 100 , 020 LABEL Label_2 ;
WIDTH 450 ;
HEIGHT 70
END WINDOW
CENTER WINDOW barcode
ACTIVATE WINDOW barcode
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROCEDURE BarCode_Iniciar
PUBLIC cQueFuente := 'Bcode128.ttf'
PUBLIC cNomFuente := 'BarCode 128 INTERAL'
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
FUNCTION Play_Barcode()
AddFont( cQueFuente )
setproperty( 'barcode' ,'label_2' ,'value' , StrToBar128c(Barcode.Text_1.value) )
setproperty( 'barcode' ,'label_2' ,'fontname' , cNomFuente )
setproperty( 'barcode' ,'label_2' ,'fontsize' , 48)
domethod('barcode' ,'label_2' ,'refresh' )
RemoveFont(cQueFuente)
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
FUNCTION AddFont(font)
LOCAL nRet := WAPI_ADDFONTRESOURCEEX(font)
RETURN Nil
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
FUNCTION RemoveFont(font)
LOCAL nRet := WAPI_REMOVEFONTRESOURCEEX(font)
RETURN Nil
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
FUNC StrToBar128c(tcString)
LOCAL lcStart := CHR(105 + 32)
LOCAL lcStop := CHR(106 + 32)
LOCAL lnCheckSum := ASC(lcStart) - 32
LOCAL lcRet := ALLTRIM(tcString)
LOCAL lnLong := LEN(lcRet)
IF (lnLong / 2) <> int(lnLong / 2)
lcRet := '0'+lcRet
lnLong := LEN(lcRet)
ENDIF
lcCar := ''
FOR lnI = 1 TO lnLong STEP 2
lcCar := lcCar + CHR( VAL( SUBSTR(lcRet,lnI,2) ) + 32 )
NEXT
lcRet := lcCar
lnLong := LEN(lcRet)
FOR lnI = 1 TO lnLong
lnAsc := ASC( SUBSTR(lcRet,lnI,1) ) - 32
lnCheckSum := lnCheckSum + (lnAsc * lnI)
NEXT
nMod := INT( MOD( lnCheckSum , 103 ) )
lcCheck := CHR( nMod + 32 )
lcRet := lcStart + lcRet + lcCheck + lcStop
lcRet := STRTRAN( lcRet , CHR(128) , CHR(232) )
lcRet := STRTRAN( lcRet , CHR(32) , CHR(232) )
lcRet := STRTRAN( lcRet , CHR(127) , CHR(192) )
RETURN( lcRet )
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
FUNC VALSTR(Number)
LOCAL STRNUM := ALLTRIM(STR(Number))
RETURN(STRNUM)
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROCEDURE ImpBarras()
Local lSuccess,nCant,DibBarras
If Empty (BarCode.Text_1.value)
Msginfo('Ingrese texto.')
return
endif
AddFont( cQueFuente )
SELECT PRINTER DIALOG TO lSuccess
START PRINTDOC
START PRINTPAGE
dibbarras := StrToBar128c( BarCode.Text_1.value )
@ 20,40 PRINT DibBarras Font cNomFuente Size 48
END PRINTPAGE
END PRINTDOC
RemoveFont( cQueFuente )
Return
También pongo los 2 links geniales que me ayudaron un montonononon !!
http://www.adams1.com/128code.html" onclick="window.open(this.href);return false;
http://www.adams1.com/128table.html" onclick="window.open(this.href);return false;
Espero aportar con esta investigación.
Saludos cordiales a todos.
- Attachments
-
- fuentes-cod-barras-barcode128.zip
- (3.21 KiB) Downloaded 691 times
Eduardo Flores Rivas
LIMA - PERU
- danielmaximiliano
- Posts: 2625
- Joined: Fri Apr 09, 2010 4:53 pm
- Location: Argentina
- Contact:
Re: Codebar 128 c
Hola :
el codigo esta hecho en Foxpro, un Xbase que compro microsoft hace micho tiempo
el codigo esta hecho en Foxpro, un Xbase que compro microsoft hace micho tiempo
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
- Pablo César
- Posts: 4059
- Joined: Wed Sep 08, 2010 1:18 pm
- Location: Curitiba - Brasil
Codebar 128 c
Hola Eduardo, antes de todo felicitaciones y muchas gracias por compartir con nosotros.
Probé tu Demo e inserir el PREVIEW en el REPORT. Muy bueno.
Pero no estoy cierto si está correcto o yo hice algo errado. Como no tengo ningun código de barras ni el aparato tampoco. Hice una prueba en este site con este ejemplo: 780672318863
Y con tu aplicativo me muestra esto: Pero seguún el site tendria que aparecer esto: No sé si hice algo errado, pero algo no funciona bien. Porque cuando minimizo tu aplicativo/ejemplo, las barras toman otro formato. Esto es para ANSI o no servie en UNICODE ? Sabrias decirme ?
Obs.: Compilé con HMG version 3.2 (UNICODE)

Probé tu Demo e inserir el PREVIEW en el REPORT. Muy bueno.
Pero no estoy cierto si está correcto o yo hice algo errado. Como no tengo ningun código de barras ni el aparato tampoco. Hice una prueba en este site con este ejemplo: 780672318863
Y con tu aplicativo me muestra esto: Pero seguún el site tendria que aparecer esto: No sé si hice algo errado, pero algo no funciona bien. Porque cuando minimizo tu aplicativo/ejemplo, las barras toman otro formato. Esto es para ANSI o no servie en UNICODE ? Sabrias decirme ?
Obs.: Compilé con HMG version 3.2 (UNICODE)
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
- Pablo César
- Posts: 4059
- Joined: Wed Sep 08, 2010 1:18 pm
- Location: Curitiba - Brasil
Codebar 128 c
Hola Eduardo, compilé con HMG version Hmg.3.0.46 (ANSI) y dió cierto. Pena que no es una solución para UNICODE.
- Attachments
-
- Screen.PNG (11.12 KiB) Viewed 7283 times
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
- edufloriv
- Posts: 240
- Joined: Thu Nov 08, 2012 3:42 am
- DBs Used: DBF, MariaDB, MySQL, MSSQL, MariaDB
- Location: PERU
Re: Codebar 128 c
Hola Pablo,
Si efectivamente yo compilo con 3.0.46. Creo que no es UNICODE por la fuente, si te fijas en el nombre finaliza en INTERAL (AL = America Latina ?) - Yo he bajado varias fuentes C128 y revisandolas por dentro no todas son iguales, tal vez hay que encontrar el .TTF correcto.
Saludos,
Si efectivamente yo compilo con 3.0.46. Creo que no es UNICODE por la fuente, si te fijas en el nombre finaliza en INTERAL (AL = America Latina ?) - Yo he bajado varias fuentes C128 y revisandolas por dentro no todas son iguales, tal vez hay que encontrar el .TTF correcto.
Saludos,
Eduardo Flores Rivas
LIMA - PERU
- Pablo César
- Posts: 4059
- Joined: Wed Sep 08, 2010 1:18 pm
- Location: Curitiba - Brasil
Codebar 128 c
Es una pena, porque yo no uso más en ANSI... 

HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
- srvet_claudio
- Posts: 2220
- Joined: Thu Feb 25, 2010 8:43 pm
- Location: Uruguay
- Contact:
Re: Codebar 128 c
Tenemos que terminar con esta confusión que se arrastra desde los inicios de HMG-Unicode.compilé con HMG version Hmg.3.0.46 (ANSI) y dió cierto. Pena que no es una solución para UNICODE.
HMG.3.2 y anteriores compilados con la opción Unicode, acepta tanto el conjunto de caracteres ANSI como UNICODE.
Para el ejemplo anterior basta colocar SET CODEPAGE TO SPANISH para que trabaje con el conjunto de caracteres ANSI en español y funciona perfecto el demo con HMG en Unicode.
- srvet_claudio
- Posts: 2220
- Joined: Thu Feb 25, 2010 8:43 pm
- Location: Uruguay
- Contact:
Re: Codebar 128 c
Con HMG_ZEBRA es mucho mas fácil y no requiere fuentes externas:
Code: Select all
#include "hmg.ch"
#include "hfcl.ch"
FUNCTION main()
DEFINE WINDOW Form_1 ;
AT 0 , 0 ;
WIDTH 580;
HEIGHT 400;
TITLE 'Barcode With HMG_ZEBRA' ;
MAIN
@ 050 , 020 LABEL Label_1 ;
VALUE 'Code' ;
WIDTH 050 ;
HEIGHT 24 ;
RIGHTALIGN
@ 050 , 080 TEXTBOX Text_1 ;
WIDTH 250 ;
HEIGHT 24 VALUE "780672318863"
@ 050 , 340 BUTTON Button_1 ;
CAPTION 'Draw Code' ;
ACTION play_barcode() ;
FONT 'Arial' SIZE 9 ;
WIDTH 100 ;
HEIGHT 28
@ 050 , 450 BUTTON BImprime ;
CAPTION 'Print' ;
ACTION ImpBarras() ;
FONT 'Arial' SIZE 9 ;
WIDTH 100 ;
HEIGHT 28
@ 80, 80 CHECKBOX CheckBox_1 CAPTION "Show digits" VALUE .F.
@ 120, 20 IMAGE Image_1 PICTURE ""
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
RETURN
FUNCTION Play_Barcode()
LOCAL hBitmap
// hBitmap := HMG_CreateBarCode( cCode, cType, nLineWidth, nLineHeight, lShowdigits, cImageFileName, aBarColor, aBackColor, lCheckSum, lWide2_5, lWide3 )
cCode := Form_1.Text_1.value
cType := "CODE128"
lShowdigits := Form_1.CheckBox_1.VALUE
hBitmap := HMG_CreateBarCode ( cCode, cType , NIL, NIL, lShowdigits )
BT_HMGSetImage ("Form_1", "Image_1", hBitmap)
BT_BitmapSaveFile( hBitmap, "BarCode128.BMP", BT_FILEFORMAT_BMP )
RETURN
PROCEDURE ImpBarras()
Local lSuccess
SELECT PRINTER DIALOG TO lSuccess PREVIEW
START PRINTDOC
START PRINTPAGE
@ 20,40 PRINT IMAGE "BarCode128.BMP" WIDTH 50 HEIGHT 50
END PRINTPAGE
END PRINTDOC
Return