Page 1 of 1

ayuda con codigo de barra

PostPosted: Tue Apr 16, 2013 3:16 pm
by jbrita
Colegas necesito de su ayuda, necesito imprimir vales con codigo de barras, el correlativo vas de 1 en 1, como lo haria con codigo de barra., la idea es que los puntos de ventas impriman el vale y la caja con pistola tome el codigo.

saludos

Re: ayuda con codigo de barra

PostPosted: Tue Apr 16, 2013 3:47 pm
by karinha
Porfa, si no comprender, use el google translator.

http://alanart.net/fivewin/index.php?/t ... -de-barra/

Puedes usar BARLIB.LIB ó TPRINTER.PRG de FiveWin.

Salu2.

Re: ayuda con codigo de barra

PostPosted: Tue Apr 16, 2013 11:34 pm
by cmsoft
Jbrita:
Una opción es que en el formulario de impresión utilices una fuente de códigos de barra, como la InterLeaved 2of5, o alguna similar (según el tipo de códigos de barra que permita leer tu lector).
Ten en cuenta que este tipo de fonts tienen una codificación particularidad (agrupan de a pares los números, y le asignan cararcteres para cada par)
Te dejo un ejemplo:
Code: Select all  Expand view
 PRINT oPrn NAME "Recibos" PREVIEW
      DEFINE FONT oFont1 NAME "Arial"                 SIZE 12, -12 OF oPrn
      DEFINE FONT oFont2 NAME "Interleaved 2of5 Text" SIZE 16, -16 OF oPrn
     PAGE
     
      mbarra  := "012345"
      mbarra  := CodigoBarra( mbarra )
      oPrn:Say(  80, 100, "Esto es una prueba de codigo de barra",oFont1)
      oPrn:Say( 100, 100, mbarra,oFont2)
     ENDPAGE
   ENDPRINT
   oFont1:End()
   oFont2:End()
 

Y esta es la rutina para armar el código para este font (Tener en cuenta que siempre tienen que ser grupos pares de dígitos, si es impar, llenar con 0 a la izquierda.
Code: Select all  Expand view
STATIC FUNCTION CodigoBarra( x )
LOCAL i, bar := {}, j := 0, bar1 := {}, cBarr := ""
   FOR i := 48 TO 97
       AADD(bar ,CHR(i))
       AADD(bar1,STRTRAN(STR(j,2)," ","0"))
       j++
   NEXT i
   FOR i := 192 TO 241
       AADD(bar,CHR(i))
       AADD(bar1,STRTRAN(STR(j,2)," ","0"))
       j++
   NEXT i
FOR j := 1 TO LEN(x)-1 STEP 2
    i := ASCAN(bar1,SUBSTR(x,j,2))
    cBarr := cBarr + bar[i]
NEXT j
RETURN "("+cBarr+")"


Espero te sirva!