Hello,
I have in use the next code for a Matrix and Laserjet printers ; will you help me with the syntax for a inktjet printer (zie below in this tread:*******************************************************************
* Testroutine CODE39DB.PRG Version: 1.0 *
* Author Modification: H.P.Schilder Date: 10-02-2002 *
* *
* Tested with: DBASE 5.0 FOR DOS Version date: 13-08-1994 *
* Operating System: DOS 7.10 32 bit FAT Multiboot configuration *
* for Windows 98 SE and it must also works with *
* Windows 2000 and Windows XP !!!!!!!!!!!!!!!!! *
* *
* Tested with: DBASE 4.0 FOR DOS Version date: ? *
* Operating System: Windows 95 B 32 bit FAT (DOS box) *
* *
* Created from: Clipper CODE39.PRG *
* Author : George T. Neill 2140 Main Street La Crosse, WI 54601 *
* Created: May 5, 1988 at 10:21 am (Public domain) *
* *
* Copyrights: *
* None, released to the public domain as is with no express *
* or implied warranty as to suitability or accuracy of this *
* program. The author shall not be held liable for any *
* damages, either direct or non-direct, arising from the use of *
* this program. This program may be modified and/or *
* included in any program without any consideration to the author.*
*******************************************************************
SET EXAC ON
SET PREC TO 20
SET DECI TO 0
SET STAT OFF
SET TALK OFF
SET PRIN TO LPT3
CLEA SCRE
PUBL ARRA char[44]
PUBL m_printer,m_height,h,i,nb,wb,ns,ws,n1,n2,m_cols,small_bar,wide_bar,dpl
PUBL code,chars,letter,cMessage,cEject
chars=" $%*+./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-"
m_printer='M'
m_height=2
@1,1 SAY 'Code 39 Barcode Generator'
@3,1 SAY 'Print Barcode op (M)atrix-, (L)aserjet-, (I)nktjet-printer ?' GET m_printer PICT '@!' VALI m_printer$'MLI'
@5,1 SAY 'Geef de Hoogte van de Barcode (1-4)' GET m_height PICT '9' RANGE 1,4
READ
IF m_printer='I'
* _pdriver='HPDESK.PR2'
** _pdriver='CANONLBP.PR2'
* SET PRIN ON
* ??? CHR(27)+"E" && initial dipswitch OF ZOIETS (ZIE DBASE BOEK)
* SET PRIN OFF
* DO PR_INKTJ && is nog niet gecreerd
ENDI
IF m_printer='L'
_pdriver='HPLASER.PR2'
SET PRIN ON
* ??? CHR(27)+"E" && initial dipswitch
SET PRIN OFF
small_bar=3 && number of points per bar
wide_bar=ROUN(small_bar*2.25,0) && 2.25 x small_bar
dpl=50 && dots per line 300dpi/6lpi = 50dpl
nb=CHR(27)+"*c"+TRAN(small_bar,'99')+"a"+LTRI(TRIM(STR(m_height*dpl)))+"b0P"+CHR(27)+"*p+"+TRAN(small_bar,'99')+"X"
wb=CHR(27)+"*c"+TRAN(wide_bar,'99')+"a"+LTRI(TRIM(STR(m_height*dpl)))+"b0P"+CHR(27)+"*p+"+TRAN(wide_bar,'99')+"X"
ns=CHR(27)+"*p+"+TRAN(small_bar,'99')+"X"
ws=CHR(27)+"*p+"+TRAN(wide_bar,'99')+"X"
ENDI
IF m_printer='M'
_pdriver='GENERIC.PR2'
SET PRIN ON
??? CHR(27)+CHR(64) && initial dipswitch
SET PRIN OFF
ns="{CTRL-@}"+"{CTRL-@}" && define Martrix-printer bars and spaces
ws="{CTRL-@}"+"{CTRL-@}"+"{CTRL-@}"+"{CTRL-@}" && define Matrix-printer bars and spaces
nb=CHR(255)
wb=CHR(255)+CHR(255)+CHR(255)
ENDI
DO DEF_CODE39 && Define CODE 3of9 Characer Set
DO WHIL .T.
cMessage=SPAC(25)
@7,1 SAY 'Geef de tekst voor de Barcode:'GET cMessage PICT '@K!'
READ
IF LEN(LTRI(TRIM(cMessage)))=0
RETU && exit on no cMessage text
ENDI
* cMessage='*'+TRIM(cMessage)+'*' && Prepend and append required asterik's to trimmed cMessage ***
cMessage=LTRI(TRIM(cMessage))
DO BARCODE
SET DEVICE TO PRIN
@PROW()+IIF(m_printer='L',m_height,0),INT(LEN(cMessage)/4) SAY cMessage && Print cMessage text below barcode
SET DEVICE TO SCRE
IF m_printer='M'
SET CONS OFF
SET PRIN ON
? && alleen voor Matrix-printer
SET PRIN OFF
SET CONS ON
ENDI
cEject=' '
@9,1 SAY 'Eject (J/N) ?' GET cEject PICT '@!' VALI cEject$'JN'
READ
IF cEject='J'
IF _pdriver='GENERIC.PR2' && Martrixprinter
SET PRIN ON
??? CHR(27)+CHR(64) && initial dipswitch
SET PRIN OFF
ENDI
IF _pdriver='HPLASER.PR2' && Laserjetprinter
SET PRIN ON
??? CHR(27)+"E" && initial dipswitch
SET PRIN OFF
ENDI
IF _pdriver='HPDESK.PR2' && Inktjetprinter
* IF _pdriver='CANONLBP.PR2' && Inktjetprinter
SET PRIN ON
??? CHR(27)+"E" && initial dipswitch
SET PRIN OFF
ENDI
EJEC && Check page eject (necessary to see what you've done on a laserjet)
RETU
ENDI
ENDD
SET STAT ON
RETU
******************************* PROCEDURE *************************************
*** 1
PROC BARCODE && Creates Code39 barcode from character string
code=''
DO CASE
CASE m_printer='I'
* Nog definieren
CASE m_printer='L'
code=CHR(27)+"*p-50Y" && adjust cusor position to start at top of line and return to bottom of line
DO PRINTCODE
i=1
DO WHIL i<=LEN(cMessage) && read cMessage character at a time and build barcode
letter=SUBS(cMessage,i,1)
code=IIF(AT(letter,chars)=0,letter,char[AT(letter,chars)])+ns && build barcoded string
** IF AT(letter,chars)=0
** code=letter+ns && als karakter NIET voorkomt in toegestane str chars
** ELSE
** code=char[AT(letter,chars)]+ns
** ENDI
i=i+1
DO PRINTCODE
ENDD
code=CHR(27)+"*p+50Y" && eind
DO PRINTCODE
CASE m_printer='M'
m_cols=21
n1=MOD(m_cols,256) && m_cols % 256 && modulus && calculate n1 value for dot graphics command
n2=INT(m_cols/256) && calculate n2 value for dot graphics command
code=(CHR(27)+CHR(51)+CHR(2)) && set printer to 2/216 lines per inch
DO PRINTCODE
h=1
DO WHIL h<=m_height
i=1
DO WHIL i<=LEN(cMessage)
letter=SUBS(cMessage,i,1)
code=IIF(AT(letter,chars)=0,letter,char[AT(letter,chars)])+ns && build barcoded string
IF n2=0
code=CHR(27)+CHR(76)+CHR(n1)+"{CTRL-@}"+code && note: if n2=0 you must send "{CTRL-@}"
ELSE
code=(CHR(27)+CHR(76)+CHR(n1)+CHR(n2)+code) && print barcode character at a time on Epson
ENDI
DO PRINTCODE
i=i+1
ENDD
code=(CHR(27)+CHR(74)+CHR(23)+CHR(13))
DO PRINTCODE
h=h+1
ENDD
code=(CHR(27)+CHR(74)+CHR(5)+CHR(13))
DO PRINTCODE
code=(CHR(27)+"@"

DO PRINTCODE
ENDC
RETU
*** 2
PROC DEF_CODE39 && Define character set for CODE39
char[01]=nb+ws+wb+ns+nb+ns+wb+ns+nb && CHR(32) " "
char[02]=nb+ws+nb+ws+nb+ws+nb+ns+nb && CHR(36) "$"
char[03]=nb+ns+nb+ws+nb+ws+nb+ws+nb && CHR(37) "%"
char[04]=nb+ws+nb+ns+wb+ns+wb+ns+nb && CHR(42) "*"
char[05]=nb+ws+nb+ns+nb+ws+nb+ws+nb && CHR(43) "+"
char[06]=wb+ws+nb+ns+nb+ns+wb+ns+nb && CHR(46) "."
char[07]=nb+ws+nb+ws+nb+ns+nb+ws+nb && CHR(47) "/"
char[08]=nb+ns+nb+ws+wb+ns+wb+ns+nb && CHR(48) "0"
char[09]=wb+ns+nb+ws+nb+ns+nb+ns+wb && CHR(49) "1"
char[10]=nb+ns+wb+ws+nb+ns+nb+ns+wb && CHR(50) "2"
char[11]=wb+ns+wb+ws+nb+ns+nb+ns+nb && CHR(51) "3"
char[12]=nb+ns+nb+ws+wb+ns+nb+ns+wb && CHR(52) "4"
char[13]=wb+ns+nb+ws+wb+ns+nb+ns+nb && CHR(53) "5"
char[14]=nb+ns+wb+ws+wb+ns+nb+ns+nb && CHR(54) "6"
char[15]=nb+ns+nb+ws+nb+ns+wb+ns+wb && CHR(55) "7"
char[16]=wb+ns+nb+ws+nb+ns+wb+ns+nb && CHR(56) "8"
char[17]=nb+ns+wb+ws+nb+ns+wb+ns+nb && CHR(57) "9"
char[18]=wb+ns+nb+ns+nb+ws+nb+ns+wb && CHR(65) "A"
char[19]=nb+ns+wb+ns+nb+ws+nb+ns+wb && CHR(66) "B"
char[20]=wb+ns+wb+ns+nb+ws+nb+ns+nb && CHR(67) "C"
char[21]=nb+ns+nb+ns+wb+ws+nb+ns+wb && CHR(68) "D"
char[22]=wb+ns+nb+ns+wb+ws+nb+ns+nb && CHR(69) "E"
char[23]=nb+ns+wb+ns+wb+ws+nb+ns+nb && CHR(70) "F"
char[24]=nb+ns+nb+ns+nb+ws+wb+ns+wb && CHR(71) "G"
char[25]=wb+ns+nb+ns+nb+ws+wb+ns+nb && CHR(72) "H"
char[26]=nb+ns+wb+ns+nb+ws+wb+ns+nb && CHR(73) "I"
char[27]=nb+ns+nb+ns+wb+ws+wb+ns+nb && CHR(74) "J"
char[28]=wb+ns+nb+ns+nb+ns+nb+ws+wb && CHR(75) "K"
char[29]=nb+ns+wb+ns+nb+ns+nb+ws+wb && CHR(76) "L"
char[30]=wb+ns+wb+ns+nb+ns+nb+ws+nb && CHR(77) "M"
char[31]=nb+ns+nb+ns+wb+ns+nb+ws+wb && CHR(78) "N"
char[32]=wb+ns+nb+ns+wb+ns+nb+ws+nb && CHR(79) "O"
char[33]=nb+ns+wb+ns+wb+ns+nb+ws+nb && CHR(80) "P"
char[34]=nb+ns+nb+ns+nb+ns+wb+ws+wb && CHR(81) "Q"
char[35]=wb+ns+nb+ns+nb+ns+wb+ws+nb && CHR(82) "R"
char[36]=nb+ns+wb+ns+nb+ns+wb+ws+nb && CHR(83) "S"
char[37]=nb+ns+nb+ns+wb+ns+wb+ws+nb && CHR(84) "T"
char[38]=wb+ws+nb+ns+nb+ns+nb+ns+wb && CHR(85) "U"
char[39]=nb+ws+wb+ns+nb+ns+nb+ns+wb && CHR(86) "V"
char[40]=wb+ws+wb+ns+nb+ns+nb+ns+nb && CHR(87) "W"
char[41]=nb+ws+nb+ns+wb+ns+nb+ns+wb && CHR(88) "X"
char[42]=wb+ws+nb+ns+wb+ns+nb+ns+nb && CHR(89) "Y"
char[43]=nb+ws+wb+ns+wb+ns+nb+ns+nb && CHR(90) "Z"
char[44]=nb+ws+nb+ns+nb+ns+wb+ns+wb && CHR(95) "-"
RETU
*** 3
PROC PRINTCODE && Sends escape codes to printer
@15,0 SAY code COLO W+/R
SET CONS OFF
SET PRIN ON
??? code
SET PRIN OFF
SET CONS ON
RETU
Soundmix Show