Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?

Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?

Postby postinelli » 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
postinelli
 
Posts: 147
Joined: Tue Jul 15, 2008 7:12 pm
Location: Argentina

Re: Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?

Postby pablovidal » Mon Apr 18, 2011 1:03 pm

Code: Select all  Expand view

   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
------------------------------------------------------
*/
User avatar
pablovidal
 
Posts: 401
Joined: Thu Oct 06, 2005 10:15 pm
Location: Republica Dominicana

Re: Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?

Postby postinelli » Mon Apr 18, 2011 6:34 pm

pruebo y aviso

gracias por tu atención

Pablo
postinelli
 
Posts: 147
Joined: Tue Jul 15, 2008 7:12 pm
Location: Argentina

Re: Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?

Postby leandro » Fri May 29, 2015 6: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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1481
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?

Postby VitalJavier » Thu Jun 11, 2015 4:09 pm

Code: Select all  Expand view

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
VitalJavier
 
Posts: 228
Joined: Mon Jun 10, 2013 6:40 pm

Re: Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?

Postby armando.lagunas » Thu Jun 11, 2015 8:59 pm

yo uso esto:

primer paso:

Code: Select all  Expand view


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: Select all  Expand view

   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: Select all  Expand view

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

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
User avatar
armando.lagunas
 
Posts: 346
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile

Re: Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?

Postby acuellar » Fri Jun 12, 2015 1:53 pm

Intenta con éste código

Code: Select all  Expand view

#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.
User avatar
acuellar
 
Posts: 1593
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Es Posible Imprimir Codigo_de_Barras con TDOSPRN en Termica?

Postby karinha » Fri Jun 12, 2015 2:42 pm

Code: Select all  Expand view

#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
User avatar
karinha
 
Posts: 7214
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 72 guests