FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?
Posts: 150
Joined: Tue Jul 15, 2008 07:12 PM
Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?
Posted: Mon Apr 18, 2011 12:46 PM

Buenos d铆as al foro

El tema es el siguiente

actualmente imprimo tickets en una EPSON TM T88IIIP (impresora t茅rmica por Paralelo)
la impresi贸n la realizo por TDOSPRN, y luego de la impresi贸n hago el corte autom谩tico del papel y hasta aqui todo bien
lo que no he logrado es imprimir c贸digos de barra
es posible?
alguno lo viene haciendo? en caso afirmativo, un ejemplo por favor

gracias de antemano

Pablo

FWH6.12, xHarbour 0.99.71 ADS

Posts: 401
Joined: Thu Oct 06, 2005 10:15 PM
Re: Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?
Posted: Mon Apr 18, 2011 01:03 PM
Code (fw): Select all Collapse
   oPrn:cBuffers := chr(29) + chr(104) + chr(120) 
   oPrn:cBuffers += chr(29) + chr(72) + chr(0)      
   oPrn:cBuffers += Chr(29) + chr(107) + Chr(72) + Chr(LEN( AllTrim( cCadena ) )) + AllTrim( cCadena ) + Chr(0)
Saludos,



Pablo Alberto Vidal

/*

------------------------------------------------------

Harbour 3.2.0, Fivewin 17.02, BCC7

------------------------------------------------------

*/
Posts: 150
Joined: Tue Jul 15, 2008 07:12 PM
Re: Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?
Posted: Mon Apr 18, 2011 06:34 PM

pruebo y aviso

gracias por tu atenci贸n

Pablo

Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?
Posted: Fri May 29, 2015 06:34 PM

Compa帽eros buenas tardes....

Logre realizar la impresi贸n de los c贸digos. Pero no logro que la pistola de barras lea el c贸digo.

Que tipo de c贸digo es el que imprime?

Saludos

Saludos
LEANDRO AREVALO
Bogot谩 (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 257
Joined: Mon Jun 10, 2013 06:40 PM
Re: Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?
Posted: Thu Jun 11, 2015 04:09 PM
Code (fw): Select all Collapse
nCol := 0 // Este siempre debe de ser 0
oPrn:Say( Ren_, nCol, chr(29) + chr(104) + chr(50) )
oPrn:Say( Ren_, nCol, chr(29) + chr(72) + chr(0) )
oPrn:Say( Ren_, nCol, chr(29) + chr(107) + Chr(72) + Chr(LEN( AllTrim( cCadena ) )) + AllTrim( cCadena ) + Chr(0) )


Me funciona muy bien al imprimir y los lectores lo hacen bien

Ojala y te funcione
Posts: 346
Joined: Mon Oct 05, 2009 03:35 PM
Re: Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?
Posted: Thu Jun 11, 2015 08:59 PM
yo uso esto:

primer paso:

Code (fw): Select all Collapse
STATIC aCode :={ "212222", "222122", "222221", "121223", "121322", "131222", ;
                 "122213", "122312", "132212", "221213", "221312", "231212", ;
                 "112232", "122132", "122231", "113222", "123122", "123221", ;
                 "223211", "221132", "221231", "213212", "223112", "312131", ;
                 "311222", "321122", "321221", "312212", "322112", "322211", ;
                 "212123", "212321", "232121", "111323", "131123", "131321", ;
                 "112313", "132113", "132311", "211313", "231113", "231311", ;
                 "112133", "112331", "132131", "113123", "113321", "133121", ;
                 "313121", "211331", "231131", "213113", "213311", "213131", ;
                 "311123", "311321", "331121", "312113", "312311", "332111", ;
                 "314111", "221411", "431111", "111224", "111422", "121124", ;
                 "121421", "141122", "141221", "112214", "112412", "122114", ;
                 "122411", "142112", "142211", "241211", "221114", "213111", ;
                 "241112", "134111", "111242", "121142", "121241", "114212", ;
                 "124112", "124211", "411212", "421112", "421211", "212141", ;
                 "214121", "412121", "111143", "111341", "131141", "114113", ;
                 "114311", "411113", "411311", "113141", "114131", "311141", ;
                 "411131", "211412", "211214", "211232", "2331112" }

#ifndef _BARCODE_
#define _BARCODE_

#translate @ <nRow>, <nCol> CODE128  <cCode> [ MODE <cMode>] [ <lVert:VERTICAL> ] [ COLOR <nColor> ] [ WIDTH <nWidth> ] [ SIZE <nSize> ] [ OF <oPrint>] => ;
        Code128( <nRow>, <nCol> , <cCode>, <oPrint>, <cMode>,<nColor>, .not. <.lVert.>, <nWidth>, <nSize> )


como se usa:

Code (fw): Select all Collapse
   PRINTER oPrn NAME "Tarja"
    x     := oPrn:nVertRes() / 100
        PAGE
            ...
            ... 
            oPrn:Say( x * 53, 50 , "BAR CODE"      , oFont[1],,,,0) ; oPrn:Say( x * 53, 360, cCodigodebarra , oFont[1],,,,0)

            @ x*70,800 CODE128 cCodigodebarra MODE "C" SIZE 0.95 WIDTH 0.019 OF oPrn

        ENDPAGE
       
   ENDPRINT


y la funci贸n que hace el c贸digo de barras

Code (fw): Select all Collapse
//----------------------------------------------------------------------

FUNCTION Code128( nRow, nCol, cCode, oPrint, cMode, Color, lHorz, nWidth, nHeigth )

           Mode128( Barras (cCode, cMode), nRow, nCol, oPrint, lHorz, Color, nWidth, nHeigth )

RETURN nil

//----------------------------------------------------------------------

FUNCTION Mode128( cBarra, nx,ny,oPrint,lHoRz, nColor, nWidth, nLen)
LOCAL n, oBr
    DEFAULT lHorz  := .t.  , ;
            nWidth := 0.025, ;
            nLen   := 1.5

IF EMPTY( nColor )    ;   nColor := CLR_BLACK  ; ENDIF

DEFINE BRUSH oBr COLOR nColor

IF !lHorz   ; nWidth := ROUND( nWidth * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
ELSE        ; nWidth := ROUND( nWidth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
ENDIF
IF lHorz    ; nLen   := ROUND( nLen * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
ELSE        ; nLen   := ROUND( nLen * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
ENDIF
FOR n:=1 TO LEN(cBarra)
    IF SUBSTR(cBarra, n, 1) ='1'
       IF lHorz ; oPrint:fillRect({nx,ny,nx+nLen,(ny+=nWidth)},oBr)
       ELSE     ; oPrint:fillRect({nx,ny,(nx+=nWidth),ny+nLen},oBr)
       ENDIF
    ELSE
       IF lHorz ; ny += nWidth
       ELSE     ; nx += nWidth
       ENDIF
    ENDIF
NEXT
oBr:End()
RETURN Nil
//----------------------------------------------------------------------
FUNCTION Barras( cCode, cMode )
LOCAL nSum := 0, cBarra, cCar, cTemp, n, nCAr, nCount:=0, lCodeC := .f. ,lCodeA:= .f.

IF     cMode =="C"   ; lCodeC := .t. ; cTemp := aCode[106] ; nSum := 105
ELSEIF cMode =="A"   ; lCodeA := .t. ; cTemp := aCode[104] ; nSum := 103
ELSE                 ;                 cTemp := aCode[105] ; nSum := 104
ENDIF

nCount := 0
FOR n  := 1 TO LEN(cCode)
    nCount ++        ; cCar := SUBSTR(cCode, n, 1)
    IF lCodeC
        IF LEN(cCode) = n   ; cTemp += aCode[101] ; nCar  := ASC(cCar) - 31
        ELSE                ; nCar  := VAL(SUBSTR(cCode, n, 2)) + 1 ; n++
        ENDIF
    ELSEIF lCodeA
        if cCar> "_"        ; cTemp += aCode[101] ; nCar  := ASC(cCar) - 31
        ELSEIF cCar <= " "  ;                       nCar  := ASC(cCar) + 64
        ELSE                ;                       nCar  := ASC(cCar) - 31
        ENDIF
    ELSE
        IF cCar <= " "      ; cTemp += aCode[102] ; nCar  := ASC(cCar) + 64
        ELSE                ;                       nCar  := ASC(cCar) - 31
        ENDIF
    ENDIF
    nSum  += ( nCar - 1 ) * nCount                ; cTemp := cTemp + aCode[nCar]
NEXT
nSum   := nSum%103 + 1
cTemp  := cTemp + aCode[ nSum ] +aCode[107]
cBarra := ""
FOR n:=1 TO LEN( cTemp ) STEP 2
    cBarra += REPLICATE('1',VAL(SUBSTR(cTemp, n  , 1)))
    cBarra += REPLICATE('0',VAL(SUBSTR(cTemp, n+1, 1)))
NEXT
RETURN cBarra

//-----------------------


esto no es mio, pero funciona muy bien en casi todas las impresoras t茅rmicas que la he probado, el c贸digo es CODE C 128 industrial, se lee en todas las lectoras de c贸digos de barra que he probado, ya sean inalambricas, lectores USB, paralelos y capturadores de datos.

los CODE A y B no se leen de buena forma, solo el CODE C funciona muy bien

lo unico que he encontrado es la convinaci贸n con el numero 77 donde sea que este este numero en el c贸digo de barra, el lector no los lee, no he logrado encontrar el Bug.


ojala te sirva como a mi.

saludos.
SkyPe: armando.lagunas@hotmail.com

Mail: armando.lagunas@gmail.com
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?
Posted: Fri Jun 12, 2015 01:53 PM
Intenta con 茅ste c贸digo

Code (fw): Select all Collapse
#include "fivewin.ch"
Function Main()

nRow:=11;nCol:=1
    
    cFilePRN:="C:\SISTEMAS\CODBARRA.PRN"
     oPrn:=TDosPrn():New( cFilePRN  )
     oPrn:nLeftMargin:=0;oPrn:cFormFeed:=""
     oPrn:Command("18")
    
     cCadena:="ABCDEFGHIJKLM"
     oPrn:Say( 10, 0, chr(29) + chr(104) + chr(50) )
     oPrn:Say( 10, 0, chr(29) + chr(72) + chr(0) )
     oPrn:Say( 10, 0, chr(29) + chr(107) + Chr(72) + Chr(LEN( AllTrim( cCadena ) )) + AllTrim( cCadena ) + Chr(0) ) 
     oPrn:Say( 10, 0, replicate(' ',21-(len(alltrim(cCadena))/2) ) + AllTrim( cCadena ) + replicate(' ',21-(len(alltrim(cCadena))/2) ) )

    nRow ++
    oPrn:Say( nRow, nCol, ' ' )
     nRow ++
   oPrn:Say( nRow, nCol, ' ' )
nRow ++
oPrn:Say( nRow, nCol, ' ' )
nRow ++
oPrn:Say( nRow, nCol, ' ' )
nRow ++
oPrn:Endpage()

oprn:Startpage()
oprn:command("27","64" )
oprn:command("27","105" ) //corte
oprn:command("18" )
oprn:Endpage()
oPrn:End()

PrintFileRaw( PRNTERMICA, cFilePRN )

Return


Saludos,

Adhemar
Saludos,



Adhemar C.
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?
Posted: Fri Jun 12, 2015 02:42 PM
Code (fw): Select all Collapse
#include "fivewin.ch"

Function Main()

   LOCAL oPrn, cPrinter, nCol, nRow, cCadena, cPuerto, cFilePRN

   nRow:=11;nCol:=1
    
   cFilePRN:=".\CODBARRA.PRN"

   Default cPuerto := Alltrim( PrnGetPort() )

   cPrinter := PrinterPortToName( cPuerto )

   if empty(cPrinter)

      cPrinter := PrinterPortToName( "USB002" )

      if empty(cPrinter)

         cPrinter := PrinterPortToName( "USB001" )

      endif

   ELSE

      // PrinterSetup()

   endif


   oPrn:=TDosPrn():New( cFilePRN  )
   oPrn:nLeftMargin:=0;oPrn:cFormFeed:=""
   oPrn:Command("18")
    
   cCadena:="ABCDEFGHIJKLM"

   oPrn:Say( 10, 0, chr(29) + chr(104) + chr(50) )
   oPrn:Say( 10, 0, chr(29) + chr(72) + chr(0) )
   oPrn:Say( 10, 0, chr(29) + chr(107) + Chr(72) + Chr(LEN( AllTrim( cCadena ) )) + AllTrim( cCadena ) + Chr(0) )
   oPrn:Say( 10, 0, replicate(' ',21-(len(alltrim(cCadena))/2) ) + AllTrim( cCadena ) + replicate(' ',21-(len(alltrim(cCadena))/2) ) )

   nRow ++
   oPrn:Say( nRow, nCol, ' ' )
   nRow ++
   oPrn:Say( nRow, nCol, ' ' )
   nRow ++
   oPrn:Say( nRow, nCol, ' ' )
   nRow ++
   oPrn:Say( nRow, nCol, ' ' )
   nRow ++
   oPrn:Endpage()

   oprn:Startpage()
   oprn:command("27","64" )
   oprn:command("27","105" ) //corte
   oprn:command("18" )
   oprn:Endpage()
   oPrn:End()

   IF .NOT. EMPTY( cPrinter )  // TEM USB

      //? "1 ", CPUERTO

      PrintFileRaw( cPrinter, TrueName( cFilePRN ), "Impresion de Ventas" )

   ELSEIF LEN( cPuerto ) <= 5 .and. Left( Upper(cPuerto), 4 ) = "LPT1"

      //? "2 ", CPUERTO

      //--- Spool Local - Matricial em LPT1
      cPuerto:= "PRN"

      WAITRUN("COMMAND.COM /C COPY /B " + cFilePRN + " " + cPuerto, 0 )

   ELSE

      //? "3 ", CPUERTO

      //--- Spool Remoto - Matricial em LPT1
      WAITRUN("COMMAND.COM /C COPY /B " + cFilePRN + " " + cPuerto, 0 )

   ENDIF

Return Nil


Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341

Continue the discussion