Udostępnij za pośrednictwem


Kolejność wykonywania poleceń

Ważny

Nowoczesna platforma drukowania jest preferowanym sposobem komunikacji z drukarkami w systemie Windows. Zalecamy używanie sterownika klasy skrzynki odbiorczej IPP firmy Microsoft wraz z aplikacjami do obsługi drukowania (PSA), aby dostosować środowisko drukowania w systemie Windows 10 i 11 na potrzeby opracowywania urządzeń drukarki.

Aby uzyskać więcej informacji, zapoznaj się z przewodnikiem projektowania aplikacji wspierających druk .

Polecenia drukarki muszą być wysyłane do sprzętu drukarki w sensownej kolejności. W przypadku większości nazw poleceń zdefiniowanych w języku GPD unidrv wie, kiedy wysłać sekwencję ucieczki polecenia do drukarki. Istnieją dwa wyjątki:

Polecenie wyboru opcji

polecenia konfiguracji drukarki

W przypadku obu tych typów poleceń należy określić kolejność wykonywania poleceń.

Kolejność wykonywania poleceń składa się z dwóch składników — nazwy sekcji zadania i numeru kolejności sekwencji. Sterownik Unidrv dzieli każde zadanie drukowania na sześć sekcji. Dla każdej sekcji Unidrv wysyła drukarkę polecenia przypisane do sekcji w określonej sekwencji. Zdefiniowano następujące sekcje:

USTAWIENIA PRACY
Polecenia przypisane do sekcji JOB_SETUP są wysyłane raz na zadanie. Są to pierwsze polecenia wysyłane po rozpoczęciu nowego zadania. Te polecenia są wysyłane z poziomu implementacji unidrv funkcji DrvStartDoc.

KONFIGURACJA_DOKUMENTU
Polecenia przypisane do sekcji DOC_SETUP są wysyłane przed wysłaniem pierwszej strony dokumentu. Polecenia są wysyłane z poziomu implementacji funkcji DrvStartDoc z unidrv. (Te polecenia są również wysyłane po wywołaniu funkcji Win32 ResetDC przez aplikację. Polecenia w tej sekcji nie mogą usuwać pobranych informacji, takich jak czcionki nietrwałe i wzorce).

USTAWIENIA_STRONY
Polecenia przypisane do sekcji PAGE_SETUP są wysyłane na początku każdej nowej strony przed rozpoczęciem rysowania. Te polecenia są wysyłane z poziomu implementacji Unidrv funkcji DrvStartPage.

ZAKOŃCZ_STRONĘ
Polecenia przypisane do sekcji PAGE_FINISH są wysyłane na końcu każdej strony po zakończeniu rysowania. Polecenia te są wysyłane z implementacji Unidrv funkcji DrvSendPage.

DOC_FINISH
Polecenia przypisane do sekcji DOC_FINISH są wysyłane po wysłaniu ostatniej strony dokumentu. Polecenia są wysyłane z implementacji Unidrv funkcji DrvEndDoc. (Polecenia w tej sekcji nie mogą usuwać pobranych informacji, takich jak czcionki nietrwałe i wzorce).

ZADANIE_ZAKOŃCZONE
Polecenia przypisane do sekcji JOB_FINISH są wysyłane raz na zadanie. Są to ostatnie polecenia wysyłane po zakończeniu zadania. Te polecenia są wysyłane z poziomu implementacji funkcji DrvEndDoc z unidrv.

W każdej z tych sekcji polecenia są wykonywane w kolejności wskazywanej przez ich numery sekwencji.

Aby określić sekcję i numer sekwencji polecenia, użyj atrybutu *Order, który jest opisany w Atrybuty poleceń. Format jest:

*Order: NazwaSekcji.NumerSekwencji

gdzie SectionName jest jedną z JOB_SETUP, DOC_SETUP, PAGE_SETUP, PAGE_FINISH, DOC_FINISH lub JOB_FINISH, a SequenceNumber jest wartością liczbową.

Numery sekwencji nie muszą być kolejne, ale każdy numer określony w sekcji musi być unikatowy. Polecenia w sekcji są wykonywane od tej z najniższym numerem sekwencji do tej z najwyższym numerem sekwencji. Na przykład następujące wpisy wskazują, że opcje funkcji InputBin, PaperSizei Rozdzielczość są przypisywane do sekcji DOC_SETUP i wysyłane w określonej kolejności:

*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>"
        }
    }
    ...
}