Ordine di esecuzione dei comandi

Importante

È consigliabile usare il driver della classe posta in arrivo IPP di Microsoft, insieme a Print Support Apps (PSA), per personalizzare l'esperienza di stampa in Windows 10 e 11 per lo sviluppo di dispositivi della stampante.

Per altre informazioni, vedere la guida alla progettazione dell'app di supporto per la stampa.

I comandi della stampante devono essere inviati all'hardware della stampante in un ordine significativo. Per la maggior parte dei nomi di comando definiti nella lingua GPD, Unidrv sa quando inviare la sequenza di escape del comando alla stampante. Sussistono due eccezioni:

Comando di selezione delle opzioni

Comandi di configurazione della stampante

Per entrambi questi tipi di comando, è necessario specificare l'ordine in cui devono essere eseguiti i comandi.

L'ordine di esecuzione dei comandi è costituito da due componenti: un nome di sezione del processo e un numero di ordine di sequenza. Il driver Unidrv divide ogni processo di stampa in sei sezioni. Per ogni sezione, Unidrv invia alla stampante i comandi assegnati alla sezione , nella sequenza specificata. Vengono definite le sezioni seguenti:

JOB_SETUP
I comandi assegnati alla sezione JOB_SETUP vengono inviati una volta per ogni processo. Sono i primi comandi inviati all'avvio di un nuovo processo. Questi comandi vengono inviati dall'implementazione di Unidrv della funzione DrvStartDoc .

DOC_SETUP
I comandi assegnati alla sezione DOC_SETUP vengono inviati prima dell'invio della prima pagina di un documento. I comandi vengono inviati dall'implementazione di Unidrv della funzione DrvStartDoc. Questi comandi vengono inviati anche dopo che un'applicazione chiama la funzione ResetDC Win32. I comandi in questa sezione non devono rimuovere le informazioni scaricate, ad esempio i tipi di carattere soft e i modelli.

PAGE_SETUP
I comandi assegnati alla sezione PAGE_SETUP vengono inviati all'inizio di ogni nuova pagina, prima dell'inizio del disegno. Questi comandi vengono inviati dall'implementazione di Unidrv della funzione DrvStartPage .

PAGE_FINISH
I comandi assegnati alla sezione PAGE_FINISH vengono inviati alla fine di ogni pagina, al termine del disegno. Questi comandi vengono inviati dall'implementazione di Unidrv della funzione DrvSendPage .

DOC_FINISH
I comandi assegnati alla sezione DOC_FINISH vengono inviati dopo l'invio dell'ultima pagina di un documento. I comandi vengono inviati dall'implementazione di Unidrv della funzione DrvEndDoc . I comandi in questa sezione non devono rimuovere le informazioni scaricate, ad esempio i tipi di carattere e i modelli soft.

JOB_FINISH
I comandi assegnati alla sezione JOB_FINISH vengono inviati una volta per ogni processo. Sono gli ultimi comandi inviati al termine di un processo. Questi comandi vengono inviati dall'implementazione di Unidrv della funzione DrvEndDoc.

All'interno di ognuna di queste sezioni, i comandi vengono eseguiti nell'ordine indicato dai relativi numeri di sequenza.

Per specificare la sezione e il numero di sequenza di un comando, usare l'attributo *Order , descritto in Attributi comando. Il formato è:

*Order: SectionName. Sequencenumber

dove SectionName è uno dei JOB_SETUP, DOC_SETUP, PAGE_SETUP, PAGE_FINISH, DOC_FINISH o JOB_FINISH e SequenceNumber è un valore numerico.

I numeri di sequenza non devono essere consecutivi, ma ogni numero specificato all'interno di una sezione deve essere univoco. I comandi all'interno di una sezione vengono eseguiti da quello con il numero di sequenza più basso a quello con il valore più alto. Ad esempio, le voci seguenti indicano che le opzioni per le funzionalità InputBin, PaperSize e Resolution vengono assegnate alla sezione DOC_SETUP e vengono inviate nell'ordine specificato:

*Feature: InputBin
{
    *Option: Auto
    {
        *Name: "Auto Tray"
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.50
            *Cmd: "<1B>(1<010014>"
        }
    }
    ...
}
*Feature: PaperSize
{
    *DefaultOption: Letter
    *Option: Letter
    {
        *Name: "Letter size"
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.60
            *Cmd: "<1B>(g<0300>n<01>r"
        }
    }
    ...
}
*Feature: Resolution
{
    *DefaultOption: 360dpi
    *Option: 360dpi
    {
        *Name: "360 dpi x 360dpi"
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.70
            *Cmd: "<1B>(d<020001>"
        }
    }
    ...
}