[oemuni] Unidrv's function order?! - SendFontCmd() & SendBlockData()

B

-Betty-

Hi all

I have some questions about Unidrv (GPD's minidriver + OEMDLL).
Could somebody please answer my question?

Now I'm making Unidrv driver for miniprinter (like Epson's TM88III)
with ESC/POS command.
I completed printing with only image (maybe raster data), so I added
device font in it.

Then I have got bad print result, which I am, researching driver's
action and its execution sequence.

My driver does execute device font module first and then image.
Exactly, like below

1. When I print test_RASTERFIRST.doc to my miniprinter,
functions' order is like below.
- This is NG. Because of this order, coordinate Y is mismatch with
real data's coordinate.
SendFontCmd()
OutputCharStr()
SendFontCmd()
OutputCharStr()
SendFontCmd()
OutputCharStr()
:

SendBlockData()
:
:

2. When I print test_DEVICEFONTfirst.doc to my miniprinter,
functions' order is like below.
- This is OK because device font module processed first.

SendFontCmd()
OutputCharStr()
SendFontCmd()
OutputCharStr()
SendFontCmd()
OutputCharStr()
:
SendBlockData()
:
:

My minidrvier's peculiar things are... (GPD is attached)
*PrinterType: PAGE
*MasterUnits: PAIR(180, 180)

SendFontCmd() and OutputCharStr() work printing device font with
command in UFM's SelectFont. Is the function call order related with
something? I think printertype doesn't have relation with this problem,
am I right?

I am now very discouraged and confused. T-T
If among you a person who knows this, Please kind and concrete answer.


//
//-->> below is my gpd, please refer
//
*GPDSpecVersion: "1.0"
*GPDFileName: "test.GPD"
*GPDFileVersion: "1.0"
*Include: "StdNames.gpd"
*ModelName: "Somthing"
*MasterUnits: PAIR(180, 180)
*Personality: "ESC/POS"
*ResourceDLL: "test.dll"
*PrintRate: 250
*PrintRatePPM: 2
*PrintRateUnit: PPM
*PrinterType: PAGE
*% PrinterType: SERIAL

*Feature: Orientation
{
*rcNameID: =ORIENTATION_DISPLAY
*DefaultOption: PORTRAIT
*Option: PORTRAIT
{
*rcNameID: =PORTRAIT_DISPLAY
*Command: CmdSelect
{
*Order: DOC_SETUP.4
*CallbackID: 1141
}
}
*Option: LANDSCAPE_CC90
{
*rcNameID: =LANDSCAPE_DISPLAY
*Command: CmdSelect
{
*Order: DOC_SETUP.4
*CallbackID: 1142
}
}
}

*Feature: InputBin
{
*rcNameID: =PAPER_SOURCE_DISPLAY
*DefaultOption: AUTO
*Option: AUTO
{
*rcNameID: 268 *% =AUTO_DISPLAY
*OptionID: 268
*Command: CmdSelect
{
*Order: DOC_SETUP.9
*CallbackID: 1165
}
}
}

*Feature: Resolution
{
*rcNameID: =RESOLUTION_DISPLAY
*DefaultOption: Option1
*Option: Option1
{
*Name: "180 x 180 " =DOTS_PER_INCH
*DPI: PAIR(180, 180)
*TextDPI: PAIR(180, 180)
MinStripBlankPixels: 180
*SpotDiameter: 200
*PinsPerLogPass: 180
*PinsPerPhysPass: 180 *% should be multiple of 8
EXTERN_GLOBAL: *StripBlanks: LIST(TRAILING) *%
(LEADING,ENCLOSED,TRAILING)
}
}

*Feature: PaperSize
{
*rcNameID: =PAPER_SIZE_DISPLAY
*DefaultOption: Option1
*Option: Option1
{
*rcNameID: 260
*OptionID: 260
*PageDimensions: PAIR(567, 2104)
*switch: Orientation
{
*case: PORTRAIT
{
*PrintableArea: PAIR(514, 1794)
*PrintableOrigin: PAIR(19, 155)
*Command: CmdSelect
{
*Order: DOC_SETUP.10
*CallbackID: 1151
}
}
*case: LANDSCAPE_CC90
{
*PrintableArea: PAIR(514, 1794)
*PrintableOrigin: PAIR(19, 155)
*Command: CmdSelect
{
*Order: DOC_SETUP.10
*CallbackID: 1152
}
}
}
}
}

*Feature: Halftone
{
*rcNameID: =HALFTONING_DISPLAY
*DefaultOption: HT_PATSIZE_AUTO
*DefaultOption: NONE_2x2
*Option: NONE_2x2
{
*rcNameID: =NONE_DISPLAY
}
*Option: HT_PATSIZE_AUTO
{
*rcNameID: =HT_AUTO_SELECT_DISPLAY
}
*Option: HT_PATSIZE_SUPERCELL_M
{
*rcNameID: =HT_SUPERCELL_DISPLAY
}
*Option: HT_PATSIZE_6x6_M
{
*rcNameID: =HT_DITHER6X6_DISPLAY
}
*Option: HT_PATSIZE_8x8_M
{
*rcNameID: =HT_DITHER8X8_DISPLAY
}
}

*% *Command: CmdStartJob
*% {
*% *Order: JOB_SETUP.1
*% *CallbackID: 1
*% }

*Command: CmdStartDoc
{
*Order: DOC_SETUP.7
*CallbackID: 1000
}
*Command: CmdStartPage
{
*Order: PAGE_SETUP.1
*CallbackID: 2000
}

*Command: CmdEndPage
{
*Order: PAGE_FINISH.1
*CallbackID: 2999
}
*Command: CmdEndDoc
{
*Order: DOC_FINISH.1
*CallbackID: 1999
}

*% *Command: CmdEndJob
*% {
*% *Order: JOB_FINISH.1
*% *CallbackID: 999
*% }


*CursorXAfterSendBlockData: AT_GRXDATA_ORIGIN
*CursorYAfterSendBlockData: NO_MOVE
*OutputDataFormat: H_BYTE
*SendMultipleRows?: TRUE
*RasterSendAllData?: FALSE

*Command: CmdBeginRaster
{
*CallbackID: 2180
}
*Command: CmdEndRaster
{
*CallbackID: 2181
}

*Command: CmdSendBlockData
{
*Params: LIST(RasterDataWidthInBytes,RasterDataHeightInPixels)
*% Params: LIST(NumOfDataBytes)
*CallbackID: 2182
*% Cmd : "<1B>*!" %l{NumOfDataBytes / 3}
}

*XMoveThreshold: 0
*YMoveThreshold: 0
*XMoveUnit: 180
*YMoveUnit: 180

*CursorXAfterCR: AT_PRINTABLE_X_ORIGIN
*% YMoveAttributes: LIST(FAVOR_LF)
*MaxLineSpacing: 180

*Command: CmdXMoveAbsolute
{
*Params: LIST(DestX)
*CallbackID: 2002
*% Cmd : "<1B>$" %l{(DestX) }
}

*Command: CmdYMoveAbsolute
{
*Params: LIST(DestY)
*CallbackID: 2003
}

*% Command: CmdYMoveRelDown
*% {
*% *Cmd : "<1B>J" %c[1,255]{max_repeat((DestYRel) )}
*% }

*Command: CmdCR { *Cmd : "<0D>" }
*Command: CmdLF { *Cmd : "<0A>" }
*Command: CmdFF { *Cmd : "<0C>" }


*RotateCoordinate?: FALSE
*RotateRaster?: FALSE
*RotateFont?: FALSE


*CharPosition: BASELINE
*DefaultCTT: -1
*DefaultFont: 11
*% LockAheadRegion: 180 *% for only SERIAL PRINTER, for ordering text
and bitmap data

*ReselectFont: LIST(AFTER_GRXDATA, AFTER_XMOVE, AFTER_FF)
*switch: Orientation
{
*case: PORTRAIT
{
*TextCaps: LIST(TC_OP_CHARACTER,TC_SA_DOUBLE,TC_EA_DOUBLE,
TC_RA_ABLE)
}
*case: LANDSCAPE_CC90
{
*TextCaps: LIST(TC_RA_ABLE)
}
}

*switch: Orientation
{
*case: PORTRAIT
{
*DeviceFonts:
LIST(1,2,3,4,5,6,7,8,9,10,11,13,15,17,21,31,33,35,37,41)
}
*case: LANDSCAPE_CC90
{
*DeviceFonts: LIST()
}
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

Printer Driver Problem 1

Top