Buenas Tardes para todos...
Antonio que pena molestar, pero es que requiero imprimir codigos de barras
en la impresora por bluetooth, ya logre realizar la impresion de texto.
Pero ahora necesito imprimir un codigo de barras..
¿Como puedo hacer esto?
BARCODE.CH
==========
#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> )
#translate @ <nRow>, <nCol> CM_CODE128 <cCode> ;
[ MODE <cMode>] ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
=> ;
c_Code128( <nRow>, <nCol> , <cCode>, <oPrint>, <cMode> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize> )
#translate @ <nRow>, <nCol> CODE3_9 <cCode> ;
[ <lCheck:CHECK> ] ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
=> ;
Code3_9( <nRow>, <nCol> , <cCode>, <oPrint>, <lCheck> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize> )
#translate @ <nRow>, <nCol> CM_CODE3_9 <cCode> ;
[ <lCheck:CHECK> ] ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
=> ;
c_Code3_9( <nRow>, <nCol> , <cCode>, <oPrint>, <lCheck> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize> )
#translate @ <nRow>, <nCol> EAN13 <cCode> ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
[ <lBanner:BANNER> ] ;
[ FONT <cFont> ] ;
=> ;
EAN13( <nRow>, <nCol> , <cCode>, <oPrint> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize>,;
<.lBanner.>, <cFont> )
#translate @ <nRow>, <nCol> CM_EAN13 <cCode> ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
[ <lBanner:BANNER> ] ;
[ FONT <cFont> ] ;
=> ;
c_EAN13( <nRow>, <nCol> , <cCode>, <oPrint> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize>,;
<.lBanner.>, <cFont> )
#translate @ <nRow>, <nCol> UPCA <cCode> ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
[ <lBanner:BANNER> ] ;
[ FONT <cFont> ] ;
=> ;
UPCA( <nRow>, <nCol> , <cCode>, <oPrint> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize>,;
<.lBanner.>, <cFont> )
#translate @ <nRow>, <nCol> CM_UPCA <cCode> ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
[ <lBanner:BANNER> ] ;
[ FONT <cFont> ] ;
=> ;
c_UPCA( <nRow>, <nCol> , <cCode>, <oPrint> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize>,;
<.lBanner.>, <cFont> )
#translate @ <nRow>, <nCol> EAN8 <cCode> ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
[ <lBanner:BANNER> ] ;
[ FONT <cFont> ] ;
=> ;
EAN8( <nRow>, <nCol> , <cCode>, <oPrint> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize>,;
<.lBanner.>, <cFont> )
#translate @ <nRow>, <nCol> CM_EAN8 <cCode> ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
[ <lBanner:BANNER> ] ;
[ FONT <cFont> ] ;
=> ;
c_EAN8( <nRow>, <nCol> , <cCode>, <oPrint> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize>,;
<.lBanner.>, <cFont> )
#translate @ <nRow>, <nCol> SUP5 <cCode> ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
[ <lBanner:BANNER> ] ;
[ FONT <cFont> ] ;
[ <lBanner:BANNER> ] ;
[ FONT <cFont> ] ;
=> ;
SUP5( <nRow>, <nCol> , <cCode>, <oPrint> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize>,;
<.lBanner.>, <cFont> )
#translate @ <nRow>, <nCol> CM_SUP5 <cCode> ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
[ <lBanner:BANNER> ] ;
[ FONT <cFont> ] ;
[ <lBanner:BANNER> ] ;
[ FONT <cFont> ] ;
=> ;
c_SUP5( <nRow>, <nCol> , <cCode>, <oPrint> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize>,;
<.lBanner.>, <cFont> )
#translate @ <nRow>, <nCol> CODABAR <cCode> ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
=> ;
CODABAR( <nRow>, <nCol> , <cCode>, <oPrint> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize> )
#translate @ <nRow>, <nCol> CM_CODABAR <cCode> ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
=> ;
c_CODABAR( <nRow>, <nCol> , <cCode>, <oPrint> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize> )
#translate @ <nRow>, <nCol> INT25 <cCode> ;
[ <lCheck:CHECK> ] ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
=> ;
INT25( <nRow>, <nCol> , <cCode>, <oPrint>, <lCheck> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize> )
#translate @ <nRow>, <nCol> CM_INT25 <cCode> ;
[ <lCheck:CHECK> ] ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
=> ;
c_INT25( <nRow>, <nCol> , <cCode>, <oPrint>, <lCheck> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize> )
#translate @ <nRow>, <nCol> IND25 <cCode> ;
[ <lCheck:CHECK> ] ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
=> ;
IND25( <nRow>, <nCol> , <cCode>, <oPrint>, <lCheck> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize> )
#translate @ <nRow>, <nCol> CM_IND25 <cCode> ;
[ <lCheck:CHECK> ] ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
=> ;
c_IND25( <nRow>, <nCol> , <cCode>, <oPrint>, <lCheck> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize> )
#translate @ <nRow>, <nCol> MAT25 <cCode> ;
[ <lCheck:CHECK> ] ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
=> ;
MAT25( <nRow>, <nCol> , <cCode>, <oPrint>, <lCheck> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize> )
#translate @ <nRow>, <nCol> CM_MAT25 <cCode> ;
[ <lCheck:CHECK> ] ;
[ <lVert:VERTICAL> ];
[ COLOR <nColor> ] ;
[ WIDTH <nWidth> ] ;
[ SIZE <nSize> ] ;
[ OF <oPrint>] ;
=> ;
c_MAT25( <nRow>, <nCol> , <cCode>, <oPrint>, <lCheck> ;
,<nColor>, .not. <.lVert.>, <nWidth>, <nSize> )
#ENDIF
BANNER.PRG
==========
// labels on barcodes
#include "fivewin.ch"
function barlen13(cCode,oPrint,nRow,nCol,Color,lHorz,nWidth,nLen,cFont)
local oFont, nLenChar, l ,Control,k,n,nWidthChar
default lHorz := .t.
default nWidth := 0.025 // 1/3 M/mm
default nLen := 1.5 // Cmm.
default cFont := 'arial'
default Color := CLR_BLACK
k:=left(alltrim(cCode)+'000000000000',12) // padding with '0'
// calculo del digito de control
k:=k+EAN13_CHECK(k) // Chaeck Digit en EAN13
if !lHorz
nWidth :=round ( nWidth * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
else
nWidth :=round ( nWidth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
end
// Len of bar
if lHorz
nLen :=round ( nLen * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
else
nLen :=round ( nLen * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
end
/*
nLenChar := nWidth*10
nWidthChar:= nLen*0.3
while .t.
define font oFont name cFont of oPrInt size nLenChar , nLenChar/2 ;
nescapement if(lHorz,0,13500)
if oPrint:GetTextWidth( '888888', oFont )<=42*nWidth
// alert(if(lHorz,'H:','V:')+str(nWidth*7)+str(nLenChar/(nWidth*7)))
while .t.
define font oFont name cFont of oPrInt size nLenChar , nWidthChar ;
nescapement if(lHorz,0,13500)
if oPrint:GetTextHeigth( '8', oFont )<=0.2*nLen
alert(if(lHorz,'H:','V:')+str(nLen*0.2)+str(nWidthChar/(nLen*0.2)))
exit
else
nWidthChar-=0.2
end
oFont:end()
enddo
exit
else
nLenChar-=1
end
oFont:end()
end
* nWidt -> 0.8
*/
define font oFont name cFont of oPrInt size nWidth*5.6 , nLen*0.04 ;
nescapement if(lHorz,0,13500)
if lHorz
oPrint:say(nRow+nLen*0.9,nCol-nWidth*8,left(k,1),oFont,,Color)
oPrint:say(nRow+nLen*0.9,nCol+nWidth*3,substr(k,2,6),oFont,,Color)
oPrint:say(nRow+nLen*0.9,nCol+nWidth*50,substr(k,8,6),oFont,,Color)
else
oPrint:say(nRow-nWidth*8,nCol+nLen*0.1,left(k,1),oFont,,Color)
oPrint:say(nRow+nWidth*3,nCol+nLen*0.1,substr(k,2,6),oFont,,Color)
oPrint:say(nRow+nWidth*50,nCol+nLen*0.1,substr(k,8,6),oFont,,Color)
end
release oFont
return nil
function barlen(cCode,nDigs,oPrint,nRow,nCol,Color,lHorz,nWidth,nLen,cFont)
local oFont, nLenChar, l ,Control,k,s1,s2,n, Izda, dCha
default lHorz := .t.
default nWidth := 0.025 // 1/3 M/mm
default nLen := 1.5 // Cmm.
default cFont := 'arial'
default Color := CLR_BLACK
default nDigs := 11
// calculo del digito de control
k:=left(alltrim(cCode)+'000000000000',nDigs) // padding with '0'
// calculo del digito de control
k=k+Upc_CHECK(cCode,nDigs) // cCode,nLen
nDigs++
dcha:=Right(K,nDigs/2)
izda:=Left(k,nDigs/2)
if !lHorz
nWidth :=round ( nWidth * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
else
nWidth :=round ( nWidth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
end
// Len of bar
if lHorz
nLen :=round ( nLen * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
else
nLen :=round ( nLen * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
end
define font oFont name cFont of oPrInt size nWidth*5.6 , nLen*0.04 ;
nescapement if(lHorz,0,13500)
// fisrt letter
if lHorz
oPrint:say(nRow+nLen*0.9,nCol+nWidth*3,Izda,oFont,,Color)
oPrint:say(nRow+nLen*0.9,nCol+nWidth*(int(nDigs)/2*7+8),dcha,oFont,,Color)
else
oPrint:say(nRow+nWidth*3,nCol+nLen*0.1,izda,oFont,,Color)
oPrint:say(nRow+nWidth*(nDigs/2+8),nCol+nLen*0.1,dcha,oFont,,Color)
end
release oFont
return nil
function ban5(cCode,oPrint,nRow,nCol,Color,lHorz,nWidth,nLen,cFont)
local oFont, nLenChar, k,n, oPen
default lHorz := .t.
default nWidth := 0.025 // 1/3 M/mm
default nLen := 1.5 // Cmm.
default cFont := 'arial'
default Color := CLR_BLACK
ccode:=left(alltrim(cCode)+'000000000000',5) // padding with '0'
if !lHorz
nWidth :=round ( nWidth * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
else
nWidth :=round ( nWidth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
end
// Len of bar
if lHorz
nLen :=round ( nLen * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
else
nLen :=round ( nLen * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
end
define font oFont name cFont of oPrInt size nWidth*5.6 , nLen*0.04 ;
nescapement if(lHorz,0,13500)
define pen oPen color CLR_WHITE of oPrint
k:=''
for n:=1 to 4
k+=substr(cCode,n,1)+ ' '
end
cCode := k+right(cCOde,1)
if lHorz
oPrint:box(nrow,ncol,nrow+nLen*.3,nCol+48*nWidth,oPen)
else
oPrint:box(nrow,ncol,nrow+41*nWidth,nCol+nLen*.3+48*nWidth,oPen)
end
oPrint:say(nRow,nCol,cCode,oFont,,Color)
release oFont
release oPen
return nil
function UPCA_barlen(cCode,oPrint,nRow,nCol,Color,lHorz,nWidth,nLen,cFont)
local oFont, nLenChar, l ,Control,k,n, Izda, dCha, nDigs:=11,oFont2
default lHorz := .t.
default nWidth := 0.025 // 1/3 M/mm
default nLen := 1.5 // Cmm.
default cFont := 'arial'
default Color := CLR_BLACK
// calculo del digito de control
k:=left(alltrim(cCode)+'000000000000',nDigs) // padding with '0'
// calculo del digito de control
k=k+Upc_CHECK(cCode,nDigs) // cCode,nLen
nDigs++
dcha:=Right(K,nDigs/2)
izda:=Left(k,nDigs/2)
if !lHorz
nWidth :=round ( nWidth * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
else
nWidth :=round ( nWidth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
end
// Len of bar
if lHorz
nLen :=round ( nLen * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
else
nLen :=round ( nLen * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
end
define font oFont name cFont of oPrInt size nWidth*5.6 , nLen*0.04 ;
nescapement if(lHorz,0,13500)
define font oFont2 name cFont of oPrInt size nWidth*5.6 , nLen*0.025 ;
nescapement if(lHorz,0,13500)
// fisrt letter
if lHorz
oPrint:say(nRow+nLen*0.9,nCol-nWidth*8,left(k,1),oFont2,,Color)
oPrint:say(nRow+nLen*0.9,nCol+nWidth*10,right(Izda,5),oFont,,Color)
oPrint:say(nRow+nLen*0.9,nCol+nWidth*50,left(dcha,5),oFont,,Color)
oPrint:say(nRow+nLen*0.9,nCol+nWidth*95,right(k,1),oFont2,,Color)
else
oPrint:say(nRow-nWidth*8,nCol+nLen*0.1,left(k,1),oFont2,,Color)
oPrint:say(nRow+nWidth*10,nCol+nLen*0.1,right(izda,5),oFont,,Color)
oPrint:say(nRow+nWidth*50,nCol+nLen*0.1,left(dcha,5),oFont,,Color)
oPrint:say(nRow+nWidth*95,nCol+nLen*0.1,right(k,1),oFont2,,Color)
end
release oFont
release oFont2 //Afegit 27/05/2010 C.Gelabert
return nil
BARLIB.PRG
==========
// funciones de llamadas de barlib
// chequean las posibles concordancias de datos
// y dan los errores
#include 'fivewin.ch'
// CODE 128
/*
Code 128:
Admite los 128 caracteres 0 - 127
si s¢lo son n£meros se usa un modelo comprimido, llamado
modo C
Si hay caracteres < 32 se usa el m¢do A
Si hay caracteres en minusculas se usa el modo B ( modo por defecto)
Los modos se mezclan
Sintaxis :
code128(nRow,nCol,cCode,oPrint,[cMode],[Color],
[lOrientacion],[nAncho],[nAlto])
nRow, nCol en Prixels
nAncho,nAlto en Cm
*/
Function Code128(nRow,nCol,cCode,oPrint,cMode,Color,lHorz,nWidth,nHeigth)
// test de parametros
// por implementar
go_code(_code128(cCode,cMode),nRow,nCol,oPrint,lHorz,Color,nWidth,nHeigth)
return nil
Function c_Code128(nRow,nCol,cCode,oPrint,cMode,Color,lHorz,nWidth,nHeigth)
oPrint:Cmtr2Pix(@nRow, @nCol)
return Code128(nRow,nCol,cCode,oPrint,cMode,Color,lHorz,nWidth,nHeigth)
Function Code3_9(nRow,nCol,cCode,oPrint,lCheck,Color,lHorz,nWidth,nHeigth)
// test de parametros
// por implementar
go_code(_code3_9(cCode,lCheck),nRow,nCol,oPrint,lHorz,Color,nWidth,nHeigth)
return nil
Function c_Code3_9(nRow,nCol,cCode,oPrint,lCheck,Color,lHorz,nWidth,nHeigth)
oPrint:Cmtr2Pix(@nRow, @nCol)
return Code3_9(nRow,nCol,cCode,oPrint,lCheck,Color,lHorz,nWidth,nHeigth)
Function ean13(nRow,nCol,cCode,oPrint,Color,lHorz,nWidth,nHeigth,;
lBanner,cFont)
local nLen
// test de parametros
// por implementar
default nHeigth := 1.5
default lBanner:=.f.
// desplazamiento...
if lHorz
go_code(_ean13(cCode),nRow,nCol,oPrint,lHorz,Color,nWidth,nHeigth*0.90)
else
nLen :=round ( nHeigth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )*0.1
// 10% espacios
go_code(_ean13(cCode),nRow,nCol+nLen,oPrint,lHorz,Color,nWidth,nHeigth*0.90)
end
go_code(_ean13Bl(),nRow,nCol,oPrint,lHorz,Color,nWidth,nHeigth)
if lBanner
barlen13(cCode,oPrint,nRow,nCol,Color,lHorz,nWidth,nHeigth,cFont)
end
return nil
Function c_ean13(nRow,nCol,cCode,oPrint,Color,lHorz,nWidth,nHeigth)
oPrint:Cmtr2Pix(@nRow, @nCol)
return ean13(nRow,nCol,cCode,oPrint,Color,lHorz,nWidth,nHeigth)
Function UPCA(nRow,nCol,cCode,oPrint,Color,lHorz,nWidth,nHeigth,lBanner,cFont)
local nLen
// test de parametros
// por implementar
default nHeigth := 1.5
default lBanner:=.f.
if lHorz
go_code(_UPC(cCode),nRow,nCol,oPrint,lHorz,Color,nWidth,nHeigth*0.90)
else
nLen :=round ( nHeigth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )*0.1
// 10% espacios
go_code(_UPC(cCode),nRow,nCol+nLen,oPrint,lHorz,Color,nWidth,nHeigth*0.90)
end
go_code(_UPCABl(cCode),nRow,nCol,oPrint,lHorz,Color,nWidth,nHeigth)
if lBanner
UPCA_barlen(cCode,oPrint,nRow,nCol,Color,lHorz,nWidth,nHeigth,cFont)
end
return nil
Function c_UPCA(nRow,nCol,cCode,oPrint,Color,lHorz,nWidth,nHeigth)
oPrint:Cmtr2Pix(@nRow, @nCol)
return UPCA(nRow,nCol,cCode,oPrint,Color,lHorz,nWidth,nHeigth)
Function ean8(nRow,nCol,cCode,oPrint,Color,lHorz,nWidth,nHeigth,lBanner,cFont)
local nLen
// test de parametros
// por implementar
default nHeigth := 1.5
default lBanner:=.f.
if lHorz
go_code(_UPC(cCode,7),nRow,nCol,oPrint,lHorz,Color,nWidth,nHeigth*0.90)
else
nLen :=round ( nHeigth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )*0.1
// 10% espacios
go_code(_UPC(cCode,7),nRow,nCol+nLen,oPrint,lHorz,Color,nWidth,nHeigth*0.90)
end
go_code(_ean13Bl(8),nRow,nCol,oPrint,lHorz,Color,nWidth,nHeigth)
if lBanner
barlen(cCode,7,oPrint,nRow,nCol,Color,lHorz,nWidth,nHeigth,cFont)
end
return nil
Function c_ean8(nRow,nCol,cCode,oPrint,Color,lHorz,nWidth,nHeigth)
oPrint:Cmtr2Pix(@nRow, @nCol)
return ean8(nRow,nCol,cCode,oPrint,Color,lHorz,nWidth,nHeigth)
Function sup5(nRow,nCol,cCode,oPrint,Color,lHorz,nWidth,nHeigth,lBanner,cFOnt)
// test de parametros
// por implementar
go_code(_sup5(cCode),nRow,nCol,oPrint,lHorz,Color,nWidth,nHeigth)
if lBANNER
ban5(cCode,oPrint,nRow,nCol,Color,lHorz,nWidth,nhEIGTH,cFont)
end
return nil
Function c_Sup5(nRow,nCol,cCode,oPrint,Color,lHorz,nWidth,nHeigth,lBanner,cFont)
oPrint:Cmtr2Pix(@nRow, @nCol)
return sup5(nRow,nCol,cCode,oPrint,Color,lHorz,nWidth,nHeigth,lBanner,cFont)
Function Codabar(nRow,nCol,cCode,oPrint,Color,lHorz,nWidth,nHeigth)
// test de parametros
// por implementar
go_code(_Codabar(cCode),nRow,nCol,oPrint,lHorz,Color,nWidth,nHeigth)
return nil
Function c_Codabar(nRow,nCol,cCode,oPrint,Color,lHorz,nWidth,nHeigth)
oPrint:Cmtr2Pix(@nRow, @nCol)
return Codabar(nRow,nCol,cCode,oPrint,Color,lHorz,nWidth,nHeigth)
Function int25(nRow,nCol,cCode,oPrint,lCheck,Color,lHorz,nWidth,nHeigth)
// test de parametros
// por implementar
go_code(_int25(cCode,lCheck),nRow,nCol,oPrint,lHorz,Color,nWidth,nHeigth)
return nil
Function c_int25(nRow,nCol,cCode,oPrint,lCheck,Color,lHorz,nWidth,nHeigth)
oPrint:Cmtr2Pix(@nRow, @nCol)
return int25(nRow,nCol,cCode,oPrint,lCheck,Color,lHorz,nWidth,nHeigth)
Function ind25(nRow,nCol,cCode,oPrind,lCheck,Color,lHorz,nWidth,nHeigth)
// test de parametros
// por implementar
go_code(_ind25(cCode,lCheck),nRow,nCol,oPrind,lHorz,Color,nWidth,nHeigth)
return nil
Function c_ind25(nRow,nCol,cCode,oPrint,lCheck,Color,lHorz,nWidth,nHeigth)
oPrint:Cmtr2Pix(@nRow, @nCol)
return ind25(nRow,nCol,cCode,oPrint,lCheck,Color,lHorz,nWidth,nHeigth)
Function mat25(nRow,nCol,cCode,oPrint,lCheck,Color,lHorz,nWidth,nHeigth)
// test de parametros
// por implementar
go_code(_mat25(cCode,lCheck),nRow,nCol,oPrint,lHorz,Color,nWidth,nHeigth)
return nil
Function c_mat25(nRow,nCol,cCode,oPrint,lCheck,Color,lHorz,nWidth,nHeigth)
oPrint:Cmtr2Pix(@nRow, @nCol)
return mat25(nRow,nCol,cCode,oPrint,lCheck,Color,lHorz,nWidth,nHeigth)
CODABAR.PRG
===========
// codabar system
static abar:={"101010001110",;
"101011100010",;
"101000101110",;
"111000101010",;
"101110100010",;
"111010100010",;
"100010101110",;
"100010111010",;
"100011101010",;
"111010001010",;
"101000111010",;
"101110001010",;
"11101011101110",;
"11101110101110",;
"11101110111010",;
"10111011101110",;
"10111000100010",;
"10001000101110",;
'10100011100010',;
'10111000100010',;
'10001000101110',;
'10100010001110',;
'10100011100010'}
static cChar :='0123456789-$:/.+ABCDTN*E'
// importante, this system not test de start /end code.
function _codabar( cCode )
local n, cBarra := '', nCar
cCode := upper( cCode )
for n:=1 to len( cCode )
if (nCar:=at(substr(cCode,n,1),cChar)) > 0
cBarra += aBar[ nCar ]
endif
next
return cBarra
CODE3DE9.PRG
============
#include 'fivewin.ch'
function _Code3_9( cCode, lCheck )
static cCars := '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%'
STATIC aBarras:={'1110100010101110',;
'1011100010101110',;
'1110111000101010',;
'1010001110101110',;
'1110100011101010',;
'1011100011101010',;
'1010001011101110',;
'1110100010111010',;
'1011100010111010',;
'1010001110111010',;
'1110101000101110',;
'1011101000101110',;
'1110111010001010',;
'1010111000101110',;
'1110101110001010',;//E
'1011101110001010',;
'1010100011101110',;
'1110101000111010',;
'1011101000111010',;
'1010111000111010',;
'1110101010001110',; //K
'1011101010001110',;
'1110111010100010',;
'1010111010001110',;
'1110101110100010',;
'1011101110100010',;//p
'1010101110001110',;
'1110101011100010',;
'1011101011100010',;
'1010111011100010',;
'1110001010101110',;
'1000111010101110',;
'1110001110101010',;
'1000101110101110',;
'1110001011101010',;
'1000111011101010',;//Z
'1000101011101110',;
'1110001010111010',;
'1000111010111010',; // ' '
'1000101110111010',;
'1000100010100010',;
'1000100010100010',;
'1000101000100010',;
'1010001000100010'}
local cCar,m, n, n1,n2, cBarra := '', nCheck := 0
default lCheck := .f.
cCode := upper(cCode)
if len(cCode )>32
cCode := left(cCode,32)
end
cCode := '*'+cCode+'*'
for n:= 1 to len( cCode )
cCar := substr( cCode,n,1)
m:=at( cCar, cCars )
if n>0 // otros caracteres se ignoran :-))
cBarra := cBarra + aBarras[m]
nCheck += (m-1)
end
next
if lCheck
cBarra+= aBarras[nCheck%43 +1]
end
return cBarra
CODE128.PRG
===========
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"}
function _code128(cCode,cMode)
local nSum:=0, cBarra, cCar
local cTemp, n, nCAr, nCount:=0
local lCodeC := .f. ,lCodeA:= .f.
// control de errores
if valtype(cCode) !='C'
alert('Barcode c128 required a Character value. ')
return nil
end
if !empty(cMode)
if valtype(cMode) = 'C' .and. Upper(cMode) $ 'ABC'
cMode := Upper(cMode)
else
alert('Code 128 Modes are A,B o C. Character values.')
end
end
if empty(cMode) // modo variable
// an lisis de tipo de c¢digo...
if str(val(cCode),len(cCode)) = cCode // s¢lo n£meros
lCodeC := .t.
cTemp := aCode[106]
nSum := 105
else
for n:=1 to len(cCode)
nCount += if(substr(cCode,n,1) > 31,1,0) // no cars. de control
end
if nCount < len(cCode) / 2
lCodeA := .t.
cTemp := aCode[104]
nSum := 103
else
cTemp := aCode[105]
nSum := 104
end
end
else
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
end
end
nCount := 0 // caracter registrado
for n := 1 to len(cCode)
nCount ++
cCar := substr(cCode,n,1)
if lCodeC
if len(cCode) = n // ultimo caracter
CTemp += aCode[101] // SHIFT Code B
nCar := asc(cCar) - 31
else
nCar := Val(substr(cCode,n,2))+1
n++
end
elseif lCodeA
if cCar> '_' // Shift Code B
cTemp += aCode[101]
nCar := asc(cCar)-31
elseif cCar <= ' '
nCar := asc(cCar)+64
else
nCar := asc(cCar)-31
endif
else // code B standard
if cCar <= ' ' // shift code A
cTemp += aCode[102]
nCar := asc(cCar)+64
else
nCar := asc(cCar)-31
end
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
EAN13.PRG
=========
// genera codigo ean13
static derecha:=[1110010110011011011001000010101110010011101010000100010010010001110100]
static izda1:= [0001101001100100100110111101010001101100010101111011101101101110001011]
static izda2:= [0100111011001100110110100001001110101110010000101001000100010010010111]
static primero:=[ooooooooeoeeooeeoeooeeeooeooeeoeeooeoeeeoooeoeoeoeoeeooeeoeo]
#include "common.ch"
function _ean13( cCode )
local l,s1,s2,controln,ac,cad,cadena,cadena2, n1, n2, NUmero
local Izda, Dcha, String, Mascara, k ,n
k:=left(alltrim(cCode)+'000000000000',12) // padding with '0'
// calculo del digito de control
k:=k+EAN13_CHECK(k) // Chaeck Digit en EAN13
// preparacion de la cadena de impresion
cadena:=[]
dcha:=SUBSTR(K,8,6)
izda:=substr(k,2,6)
mascara:=substr(primero,(val(substr(k,1,1))*6)+1,6)
* ? mascara
// barra de delimitacion
cadena:=[101]
// parte izda
for n=1 to 6
numero:=val(substr(izda,n,1))
if substr(mascara,n,1)=[o]
string:=substr(izda1,numero*7+1,7)
else
string:=substr(izda2,numero*7+1,7)
end
* ? strzero(numero,1)+[->]+string
cadena:=cadena+string
next
cadena:=cadena+[01010]
// LADO DERECHO
for n=1 to 6
numero:=val(substr(dcha,n,1))
string:=substr(derecha,numero*7+1,7)
* ? strzero(numero,1)+[->]+string
cadena:=cadena+string
next
cadena:=cadena+[101]
* ? cadena
* cadena:=cadena+[101]
return Cadena
*-- FUNCTION -----------------------------------------------------------------
* Nombre: EAN13_CHECK() Docs: Cayetano Gomez
* Descripcion: Ean13, check Digit
* Autor: Cayetano Gomez
* Creado: 9/06/97 Actualizado: þ9/06/97
* Hora: 11:40:36 Hora: þ11:40:36
* Copyright: C.G.R.
*-----------------------------------------------------------------------------
* Argumentos: cCode
* Retorna: nil
* Relacionado:
*-----------------------------------------------------------------------------
FUNCTION EAN13_CHECK(cCode)
local s1,s2,l,Control,n
s1:=0 // suma de impares
s2:=0 // suma de pares
for n=1 to 6
s1:=s1+val(substr(cCode,(n*2)-1,1))
s2:=s2+val(substr(cCode,(n*2),1))
next
control:=(s2*3)+s1
l:=10
do while control>l
l:=l+10
end
control:=l-control
RETURN sTr(control,1,0)
function _ean13BL(nLen)
default nLen to 12
nLen:=int(nLen/2)
return '101'+replicate('0',nLen*7)+'01010'+replicate('0',nLen*7)+'101'
function _UPC( cCode, nLen )
local l,s1,s2,control,n,ac,cad,cadena, n1, n2, NUmero
local Izda, Dcha, String, Mascara, k
default nLen to 11
default cCode to '0'
// valid values for nLen are 11,7
k:=left(alltrim(cCode)+'000000000000',nLen) // padding with '0'
// calculo del digito de control
k=k+Upc_CHECK(cCode,nLen) // cCode,nLen
nLen++
// preparacion de la cadena de impresion
cadena:=[]
dcha:=Right(K,nLen/2)
izda:=Left(k,nLen/2)
// barra de delimitacion
cadena:=[101]
// parte izda
for n=1 to len(Izda)
numero:=val(substr(izda,n,1))
cadena+=substr(izda1,numero*7+1,7)
next
cadena:=cadena+[01010]
// LADO DERECHO
for n=1 to len(dcha)
numero:=val(substr(dcha,n,1))
cadena+=substr(derecha,numero*7+1,7)
next
cadena:=cadena+[101]
return Cadena
function _UPCABL(cCode)
local cadena, k
k:=left(alltrim(cCode)+'000000000000',11) // padding with '0'
// calculo del digito de control
k=k+Upc_CHECK(cCode,11) // cCode,nLen
// preparacion de la cadena de impresion
cadena:=[101]
// parte izda
cadena+=substr(izda1,val(left(k,1))*7+1,7)
cadena+=replicate('0',35) // resto
cadena:=cadena+[01010] //centro
// LADO DERECHO
cadena+=replicate('0',35) // resto
cadena+=substr(derecha,val(right(k,1))*7+1,7)
cadena:=cadena+[101]
return Cadena
*-- FUNCTION -----------------------------------------------------------------
* Nombre: Upc_CHECK() Docs: Cayetano Gomez
* Descripcion: ChechDigit del UPC
* Autor: Cayetano Gomez
* Creado: 9/06/97 Actualizado: þ9/06/97
* Hora: 11:47:09 Hora: þ11:47:09
* Copyright: C.G.R.
*-----------------------------------------------------------------------------
* Argumentos: cCode
* : nLen, Numero de digitoss ( 11 o 7)
* Retorna: Cadena
* Relacionado:
*-----------------------------------------------------------------------------
Function Upc_CHECK(cCode,nLen)
local s1,s2,n,l,control
s1:=0 // suma de impares
s2:=0 // suma de pares
for n=1 to nLen step 2
s1:=s1+val(substr(cCode,n,1))
s2:=s2+val(substr(cCode,n+1,1))
next
control:=(s1*3)+s2
l:=10
do while control>l
l:=l+10
end
control:=l-control
return str(Control,1,0)
// suplemento de 5 digitos
function _Sup5(cCode)
local l, k, control, n, cBarras := '1011',nCar
static parity:=[eeoooeoeooeooeoeoooeoeeooooeeooooeeoeoeooeooeooeoe]
k:=left(alltrim(cCode)+'00000',5) // padding with '0'
control := right( str( val(substr(k,1,1))*3 + val(substr(k,3,1))*3 ;
+ val(substr(k,5,1))*3 + val(substr(k,2,1))*9+;
val(substr(k,4,1))*9,5,0 ),1)
control:=substr(primero,val(control)*6+2,5)
for n:=1 to 5
nCar:=val(substr(k,n,1))
if substr(control,n,1)='o'
cBarras+=substr(Izda2,nCar*7+1,7)
else
cBarras+=substr(Izda1,nCar*7+1,7)
end
if n<5
cBarras+='01'
end
next
return cBarras
GO_CODE.PRG
===========
// imprime un codigo
#include 'FiveWin.ch'
function go_code( cBarra, nx,ny,oPrint,lHoRz, nColor, nWidth, nLen)
local n, oBr
if empty(nColor)
nColor := CLR_BLACK
end
default lHorz := .t.
default nWidth := 0.025 // 1/3 M/mm
default nLen := 1.5 // Cmm.
define brush oBr color nColor
// Width of Bar
if !lHorz
nWidth :=round ( nWidth * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
else
nWidth :=round ( nWidth * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
end
// Len of bar
if lHorz
nLen :=round ( nLen * 10 * oPrint:nVertRes() / oPrint:nVertSize() ,0 )
else
nLen :=round ( nLen * 10 * oPrint:nHorzRes() / oPrint:nHorzSize(), 0 )
end
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)
end
else
if lHorz
ny+=nWidth
else
nx += nWidth
end
end
next
oBr:end()
return nil
INT25.PRG
=========
// interleave 2 of 5
// matrix 2 of 5
#include "common.ch"
static aBar:={"00110","10001",'01001','11000','00101','10100','01100',;
'00011','10010','01010'}
static cStart:='0000'
static cStop:='100'
static cMtSt:='10000' // matrix start/stop
static cInStart := '110' // industrial 2 of 5 start
static cInStop := '101' // industrial 2 of 5 stop
function _int25(cCode,lMode)
local n,cBar:='', cIz:='',cDer:='',nLen:=0,nCheck:=0,cBarra:=''
local m
default lMode to .f.
cCode:=trans(cCode,'@9') // elimina caracteres
if (nLen%2=1.and.!lMode)
nLen++
cCode+='0'
end
if lMode
for n:=1 to len(cCode) step 2
nCheck+=val(substr(cCode,n,1))*3+val(substr(cCode,n+1,1))
next
cCode += right(str(nCheck,10,0),1)
end
nLen:=len(cCode)
cBarra:= cStart
// preencoding .. interlaving
for n:=1 to nLen step 2
cIz:=aBar[val(substr(cCode,n,1))+1]
cDer:=aBar[val(substr(cCode,n+1,1))+1]
for m:=1 to 5
cBarra+=substr(cIz,m,1)+substr(cDer,m,1)
next
next
cBarra+=cStop
for n:=1 to len(cBarra) step 2
if substr(cBarra,n,1)='1'
cBar+='111'
else
cBar+='1'
end
if substr(cBarra,n+1,1)='1'
cBar+='000'
else
cBar+='0'
end
next
return cBar
function _MAT25(cCode,lCheck)
local cBar:='',cBarra:='', nCheck,n
default lCheck to .f.
cCode:=trans(cCode,'@9') // only digits
if lCheck
for n:=1 to len(cCode) step 2
nCheck+=val(substr(cCode,n,1))*3+val(substr(cCode,n+1,1))
next
cCode += right(str(nCheck,10,0),1)
end
cBar:=cMtSt
for n:=1 to len(cCode)
cBar+=aBar[val(substr(cCode,n,1))+1]+'0'
next
cBar+=cMtSt
for n:=1 to len(cBar) step 2
if substr(cBar,n,1)='1'
cBarra+='111'
else
cBarra+='1'
end
if substr(cBar,n+1,1)='1'
cBarra+='000'
else
cBarra+='0'
end
next
return cBarra
function _Ind25(cCode,lCheck)
local cBar:='',cBarra:='', nCheck,n
default lCheck to .f.
cCode:=trans(cCode,'@9') // only digits
if lCheck
for n:=1 to len(cCode) step 2
nCheck+=val(substr(cCode,n,1))*3+val(substr(cCode,n+1,1))
next
cCode += right(str(nCheck,10,0),1)
end
cBar:=cInStart
for n:=1 to len(cCode)
cBar+=aBar[val(substr(cCode,n,1))+1]+'0'
next
cBar+=cInStop
for n:=1 to len(cBar)
if substr(cBar,n,1)='1'
cBarra+='1110'
else
cBarra+='10'
end
next
return cBarra
***********************************************
*Procesa la Impresión del reporte por bluetooth
***********************************************
function SendText()
local hOut:= CreateFile( "COM6:",; // change the number as needed
GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL )
local n:=1
Local cStrip:=""
cStrip += "********************************"+CRLF
cStrip += CHR(27)+CHR(33)+CHR(25)
cStrip += "CIUDADELA LA BENDICION"+CRLF
cStrip += "INFORME TOMA DE LECTURA Y VISITA"+CRLF
cStrip += "DE VERIFICACION"+ CRLF
cStrip += CHR(27)+CHR(33)+CHR(4)
cStrip += "********************************"+CRLF+CRLF
cStrip += CHR(27)+CHR(33)+CHR(25)
cStrip += "DATOS DEL LOTE"+CRLF
cStrip += CHR(27)+CHR(33)+CHR(4)
cStrip += "MANZANA: "+transform(vMan,"999")+" LOTE: "+transform(vLot,"99")+CRLF
cStrip += "CEDULA: "+alltrim(vTer)+CRLF
cStrip += "NOMBRE: "+subs(vNom,1,25)+CRLF+CRLF
cStrip += "********************************"+CRLF
cStrip += CHR(27)+CHR(33)+CHR(25)
cStrip += "INFORMACION DE LA LECTURA"+CRLF
cStrip += CHR(27)+CHR(33)+CHR(4)
cStrip += "FUNCIONARIO ENCARGADO"+CRLF
cStrip += "NOMBRE: "+vUsu+" -"+subs(vNUs,1,19)+CRLF
cStrip += "SERIAL CONTADOR: "+alltrim(vSer)+CRLF
cStrip += "FECHA LECTURA: "+dtoc(vFec)+CRLF
cStrip += "LECTURA: "+alltrim(str(vLec))+CRLF
cStrip += "REGISTO VERIFICACION: HABITADO"+CRLF
if !Empty(vObs)
cStrip += ""+CRLF
cStrip += CHR(27)+CHR(33)+CHR(25)
cStrip += "OBSERVACIONES"+CRLF
cStrip += CHR(27)+CHR(33)+CHR(4)
cStrip += subs(vObs,1,35)+CRLF
endif
cStrip += "********************************"+CRLF
cStrip += CRLF + CRLF + CRLF +CHR(27)+"J"
for n = 1 to Len( cStrip )
WriteByte( hOut, Asc( SubStr( cStrip, n, 1 ) ) )
next
CloseHandle( hOut )
return nil
***********************************************
*Procesa la Impresión del reporte por bluetooth
***********************************************
function SendText()
local hOut:= CreateFile( "COM6:",; // change the number as needed
GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL )
local n:=1
Local cStrip:=""
Local barra:=""
barra:=_Code3_9("prueba",.f.)
//msginfo(valtype(barra))
//msginfo(barra)
cStrip += "********************************"+CRLF
cStrip += CHR(27)+CHR(33)+CHR(25)
cStrip += "CIUDADELA LA BENDICION"+CRLF
cStrip += "INFORME TOMA DE LECTURA Y VISITA"+CRLF
cStrip += "DE VERIFICACION"+ CRLF
cStrip += CHR(27)+CHR(33)+CHR(4)
cStrip += "********************************"+CRLF+CRLF
cStrip += CHR(27)+CHR(33)+CHR(25)
cStrip += "DATOS DEL LOTE"+CRLF
cStrip += CHR(27)+CHR(33)+CHR(4)
cStrip += "MANZANA: "+transform(vMan,"999")+" LOTE: "+transform(vLot,"99")+CRLF
cStrip += "CEDULA: "+alltrim(vTer)+CRLF
cStrip += "NOMBRE: "+subs(vNom,1,25)+CRLF+CRLF
cStrip += "********************************"+CRLF
cStrip += CHR(27)+CHR(33)+CHR(25)
cStrip += "INFORMACION DE LA LECTURA"+CRLF
cStrip += CHR(27)+CHR(33)+CHR(4)
cStrip += "FUNCIONARIO ENCARGADO"+CRLF
cStrip += "NOMBRE: "+vUsu+" -"+subs(vNUs,1,19)+CRLF
cStrip += "SERIAL CONTADOR: "+alltrim(vSer)+CRLF
cStrip += "FECHA LECTURA: "+dtoc(vFec)+CRLF
cStrip += "LECTURA: "+alltrim(str(vLec))+CRLF
cStrip += "REGISTO VERIFICACION: HABITADO"+CRLF
if !Empty(vObs)
cStrip += ""+CRLF
cStrip += CHR(27)+CHR(33)+CHR(25)
cStrip += "OBSERVACIONES"+CRLF
cStrip += CHR(27)+CHR(33)+CHR(4)
cStrip += subs(vObs,1,35)+CRLF
endif
cStrip += "********************************"+CRLF
cStrip += barra +CRLF //Lo intente asi....
for n = 1 to Len( cStrip )
WriteByte( hOut, Asc( SubStr( cStrip, n, 1 ) ) )
next
CloseHandle( hOut )
return nil
Return to FiveWin para Pocket PC
Users browsing this forum: No registered users and 4 guests