281 lines
8.4 KiB
Plaintext
281 lines
8.4 KiB
Plaintext
COMPILE FUNCTION obj_Zebra105SL(Method,Parms)
|
|
/*
|
|
Methods for Printing on Zebra 105SL
|
|
|
|
09/11/2003 JCH - Initial Coding
|
|
|
|
Properties:
|
|
|
|
Methods:
|
|
|
|
SubPackLabel(ParmList) - Prints Sub-Pack Label (4"W x 3"H)
|
|
|
|
*/
|
|
|
|
|
|
DECLARE FUNCTION Set_Printer, Get_Printer, Get_Status, Msg, Printer_Select,Get_Property
|
|
DECLARE FUNCTION Utility, PrintSetup, obj_Install, Direct_Print, Environment_Services
|
|
DECLARE SUBROUTINE Set_Status, Msg
|
|
|
|
$INSERT OIPRINT_EQUATES
|
|
$INSERT MSG_EQUATES
|
|
$INSERT LABELS
|
|
$INSERT PRINTSETUP_EQUATES
|
|
|
|
EQU PI$LEFT TO 1
|
|
EQU PI$TOP TO 2
|
|
EQU PI$RIGHT TO 3
|
|
EQU PI$BOTTOM TO 4
|
|
EQU PI$WIDTH TO 5
|
|
EQU PI$HEIGHT TO 6
|
|
EQU PI$SIZE TO 7
|
|
|
|
|
|
ErrTitle = 'Error in Stored Procedure "obj_Zebra105SL"'
|
|
ErrorMsg = ''
|
|
|
|
IF NOT(ASSIGNED(Method)) THEN ErrorMsg = 'Unassigned parameter "Method" passed to subroutine'
|
|
IF NOT(ASSIGNED(Parms)) THEN Parms = ''
|
|
|
|
IF ErrorMsg NE '' THEN
|
|
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
|
|
RETURN ''
|
|
END
|
|
|
|
Methods = 'SubPackLabel'
|
|
|
|
Result = ''
|
|
|
|
LOCATE Method IN Methods USING @FM SETTING Pos THEN
|
|
ON Pos GOSUB SubPackLabel
|
|
END
|
|
|
|
IF ErrorMsg NE '' THEN
|
|
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
|
|
RETURN ''
|
|
END
|
|
|
|
RETURN Result
|
|
|
|
|
|
* * * * * * *
|
|
SubPackLabel:
|
|
* * * * * * *
|
|
|
|
PrinterID = Parms[1,@RM]
|
|
CustPartNo = Parms[COL2()+1,@RM]
|
|
RevLvl = Parms[COL2()+1,@RM]
|
|
PartQty = Parms[COL2()+1,@RM]
|
|
PartDesc = Parms[COL2()+1,@RM]
|
|
LotNo = Parms[COL2()+1,@RM] ;* RDS
|
|
CustName = Parms[COL2()+1,@RM]
|
|
PONo = Parms[COL2()+1,@RM]
|
|
CustLot = Parms[COL2()+1,@RM]
|
|
Thickness = Parms[COL2()+1,@RM]
|
|
Resistivity = Parms[COL2()+1,@RM]
|
|
Conductivity = Parms[COL2()+1,@RM]
|
|
ReqShipDt = Parms[COL2()+1,@RM]
|
|
WONo = Parms[COL2()+1,@RM]
|
|
|
|
IF PrinterID = '' THEN ErrorMsg = 'Null parameter Printer Path passed to routine (':Method:').'
|
|
|
|
* Check bar coded data for validity for length
|
|
|
|
IF CustPartNo = '' THEN ErrorMsg = 'Null parm "CustPartNo" passed to routine (':Method:').'
|
|
IF PartQty = '' THEN ErrorMsg = 'Null parm "PartQty" passed to routine (':Method:').'
|
|
IF LotNo = '' THEN ErrorMsg = 'Null parm "LotNo" passed to routine (':Method:').'
|
|
|
|
IF LEN(CustPartNo) > 18 THEN ErrorMsg = 'CustPartNo parameter exceeds 18 characters (':Method:').'
|
|
IF LEN(RevLvl) > 3 THEN ErrorMsg = 'RevLvl parameter exceeds 3 characters (':Method:').'
|
|
IF LEN(PartQty) > 6 THEN ErrorMsg = 'PartQty parameter exceeds 6 characters (':Method:').'
|
|
IF NOT(NUM(PartQty)) THEN ErrorMsg = 'PartQty parameter is not a number (':Method:').'
|
|
|
|
IF ErrorMsg THEN RETURN
|
|
|
|
GOSUB OIPIInit ;* Selects printer and initializes OIPrinter Interface
|
|
GOSUB Label4x3 ;* Zebra printer setup and background lines for labels
|
|
|
|
|
|
|
|
* Block 1 Left (Cust Part)
|
|
|
|
LabelString := '^FO0,0^A0,25^FDCust Part(1P):^FS':CRLF$ ;* Label Line 1
|
|
LabelString := '^FO15,40^A0,50,40^FD':CustPartNo:'^FS':CRLF$ ;* Readable
|
|
LabelString := '^FO15,95^BY2^BC,60,N^FDP':CustPartNo:'^FS':CRLF$ ;* Code 128
|
|
LabelString := '^BY3,3.0':CRLF$
|
|
|
|
* Block 1 Right (Rev Lvl)
|
|
|
|
|
|
LabelString := '^FO508,0^BY2^B3,,60,N^FD2P':RevLvl:'^FS':CRLF$ ;* Code 39
|
|
LabelString := '^BY3,3.0':CRLF$
|
|
LabelString := '^FO508,70^A0,25^FDRev.Level (2P):^FS':CRLF$ ;* Label Line 1
|
|
LabelString := '^FO680,70^A0,50,48^FD':RevLvl:'^FS':CRLF$ ;* Readable
|
|
|
|
* Block 2 Left (Quantity)
|
|
|
|
LabelString := '^FO0,165^A0,25^FDQuantity (Q):^FS':CRLF$ ;* Label Line 1
|
|
LabelString := '^FO15,195^A0,50,40^FD':PartQty:'^FS':CRLF$ ;* Readable
|
|
LabelString := '^FO15,245^BY2^B3,,60,N^FDQ':PartQty:'^FS':CRLF$ ;* Code 39
|
|
LabelString := '^BY3,3.0':CRLF$
|
|
|
|
* Block 2 Right (Description)
|
|
|
|
LabelString := '^FO345,165^A0,25^FDDescription:^FS':CRLF$ ;* Label Line 1
|
|
LabelString := '^FO345,195^A0,30,40^FD':PartDesc:'^FS':CRLF$ ;* Readable
|
|
|
|
LabelString := '^FO350,235^A0,25^FDThickness:^FS':CRLF$ ;* Label Line 3
|
|
LabelString := '^FO550,235^A0,25^FD':Thickness:'^FS':CRLF$ ;* Readable
|
|
|
|
LabelString := '^FO350,260^A0,25^FDResistivity:^FS':CRLF$ ;* Label Line 4
|
|
LabelString := '^FO550,260^A0,25^FD':Resistivity:'^FS':CRLF$ ;* Readable
|
|
|
|
IF Conductivity NE '' THEN
|
|
LabelString := '^FO350,285^A0,25^FDConductivity:^FS':CRLF$ ;* Label Line 4
|
|
LabelString := '^FO550,285^A0,25^FD':Conductivity:'^FS':CRLF$ ;* Readable
|
|
END
|
|
|
|
* Block 3 Left (Customer Lot)
|
|
|
|
LabelString := '^FO0,315^A0,25^FDCustomer Lot:^FS':CRLF$ ;* Label Line 1
|
|
LabelString := '^FO15,350^A0,50,40^FD':CustLot:'^FS':CRLF$ ;* Readable
|
|
LabelString := '^FO15,400^BY2^B3,,60,N^FD':CustLot:'^FS':CRLF$ ;* Code 39
|
|
LabelString := '^BY3,3.0':CRLF$
|
|
|
|
|
|
* Block 3 Right (Supplier)
|
|
|
|
LabelString := '^FO360,320^XGR:':GRFName:',1,1^FS' ;* Horizontal Company Logo
|
|
|
|
* Block 4
|
|
|
|
LabelString := '^FO0,470^A0,25^FDCustomer:^FS':CRLF$ ;* Label Line
|
|
LabelString := '^FO120,470^A0,45,25^FD':CustName:'^FS':CRLF$ ;* Readable
|
|
|
|
LabelString := '^FO0,515^A0,25^FDRDS No:^FS':CRLF$ ;* Label Line
|
|
LabelString := '^FO100,515^A0,36,40^FD':LotNo:'^FS':CRLF$ ;* Readable
|
|
|
|
LabelString := '^FO0,555^A0,25^FDPO No:^FS':CRLF$ ;* Label Line
|
|
LabelString := '^FO100,555^A0,36,20^FD':PONo:'^FS':CRLF$ ;* Readable
|
|
|
|
LabelString := '^FO450,515^A0,25^FDWO No:^FS':CRLF$ ;* Label Line
|
|
LabelString := '^FO590,515^A0,36^FD':WONo:'^FS':CRLF$ ;* Readable
|
|
|
|
LabelString := '^FO450,555^A0,25^FDReq Ship Dt:^FS':CRLF$ ;* Label Line
|
|
LabelString := '^FO590,555^A0,36^FD':ReqShipDt:'^FS':CRLF$ ;* Readable
|
|
|
|
LabelString := '^XZ'
|
|
|
|
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
|
|
stat = Set_Printer('TEXT',LabelString)
|
|
end else
|
|
stat = Direct_Print('PRINT', LabelString)
|
|
end
|
|
|
|
GOSUB OIPrint_Err
|
|
|
|
RETURN
|
|
|
|
* * * * * * * * * * * * * * * * * * * * * * * *
|
|
* L O C A L M E T H O D S
|
|
* * * * * * * * * * * * * * * * * * * * * * * *
|
|
|
|
* * * * * *
|
|
OIPIInit:
|
|
* * * * * *
|
|
|
|
* Internal method that selects printer, initializes OIPI and then prints block grid
|
|
|
|
FileName = "Printing Label"
|
|
Title = "Printing Label" ;* Initialize Printing
|
|
|
|
PageInfo = ''
|
|
PageInfo<PI$LEFT> = 0.1
|
|
PageInfo<PI$TOP> = 0.1
|
|
PageInfo<PI$RIGHT> = 0.1
|
|
PageInfo<PI$BOTTOM> = 0.1
|
|
|
|
PageSetup = '1' ;* Landscape
|
|
PrintSetup = '' ;* Preview
|
|
PrintPath = Printer_Select(PrinterID) ;* Select printer - Displays popup if PrinterPort not found
|
|
|
|
IF PrintPath = '' THEN
|
|
Def = ""
|
|
Def<MTYPE$> = "TA3"
|
|
Def<MTEXT$> = 'Destination Printer not Selected..'
|
|
Def<MCAPTION$> = ''
|
|
Def<MICON$> = '*'
|
|
Msg(@WINDOW, Def, '')
|
|
RETURN
|
|
END
|
|
|
|
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
|
|
stat = Set_Printer("INIT",FileName,Title,PageInfo,PageSetup,PrintSetup,PrintPath)
|
|
end else
|
|
stat = Direct_Print('START', PrintPath<1>, '', '')
|
|
end
|
|
IF stat < 0 THEN GOSUB OIPrint_Err
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Label4x3:
|
|
* * * * * * *
|
|
|
|
BitMap = obj_Install('Get_Prop','ZebraGRF') ;* Substitute company logo converted to .GRF (Zebra graphics format)
|
|
|
|
OSREAD ImageData FROM BitMap THEN
|
|
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
|
|
stat = Set_Printer('TEXT',ImageData) ;* Download bitmap image to the printer
|
|
end else
|
|
stat = Direct_Print('PRINT', ImageData)
|
|
end
|
|
END
|
|
|
|
GRFName = FIELD(BitMap,'.',1)
|
|
|
|
|
|
* Label is 812 x 608 dots at 8dots/mm (203 dots/inch)
|
|
* Leave periodic spaces in Label String - OIPrint interface wraps text on spaces and will cut off
|
|
* the LabelString if there aren't any spaces. Printer Width needs to be set to 132 or greater
|
|
|
|
LabelString = '^XA' ;* Start of label format
|
|
LabelString := '^LH30,70' ;* Label home offset (needed to get onto the label medium)
|
|
LabelString := '^BY3' ;* Set narrow Bar Code line width to 3 dots
|
|
LabelString := '^PR2' ;* Print speed = 2 IPS
|
|
|
|
|
|
LabelString := '^FO0,156^GB809,0,3,B^FS':@FM ;* 'Top' of 4x3 Label
|
|
LabelString := '^FO0,308^GB809,0,3,B^FS':@FM ;* 1st 'horizontal' line (bottom of 1st cell)
|
|
LabelString := '^FO0,460^GB809,0,3,B^FS':@FM ;* 2nd 'horizontal' line (bottom of 2nd cell)
|
|
|
|
RETURN
|
|
|
|
|
|
|
|
* * * * * * *
|
|
OIPrint_Err:
|
|
* * * * * * *
|
|
|
|
* Local method to kill the OIPI engine
|
|
|
|
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
|
|
stat = Set_Printer("TERM")
|
|
end else
|
|
stat = Direct_Print('STOP')
|
|
end
|
|
|
|
* Added after upgrade to OI4.13a to reset default printer in OIPI32 engine.
|
|
|
|
PrintCount = PrintSetup(PRN_GET$,'',Printers,DefaultPrinter)
|
|
CONVERT ',' TO @FM IN DefaultPrinter
|
|
DefPrintPath = DefaultPrinter<1>:@FM:DefaultPrinter<3>
|
|
|
|
Void = set_printer( 'INIT', '', '', .63:@fm:.63:@fm:.25:@fm:'', 0,'',DefPrintPath )
|
|
Void = Set_Printer('TERM')
|
|
|
|
RETURN
|
|
|
|
|