Udostępnij przez


Wyrażenia zmiennych standardowych

Ważne

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, zobacz Print Support App v1 and v2 design guide (Przewodnik projektowania aplikacji do obsługi wydruku w wersji 1 i 2).

Po określeniu argumentów w ciągu polecenia można określić wartość argumentu jako wyrażenie. To wyrażenie może wykonywać operacje przy użyciu bieżących wartości zmiennych standardowych. Każde standardowe wyrażenie zmiennej w ciągu polecenia jest rozdzielane nawiasami klamrowymi ( {, } ).

Standardowe wyrażenie zmiennej może składać się z kombinacji następujących składników:

Standardowe wyrażenie zmiennej nie może zawierać osadzonych odwołań makr.

Operatory wyrażeń znajdują się w poniższej tabeli.

Obsługujący Definicje
Val1+Val2 Dodatek
Val1-Val2 Odejmowanie
Val1/Val2 Dzielenie
Val1*Val2 Mnożenie
Val1MODVal2 Moduł. Wartość jest resztą dzielenia Val1 przez Val2.
max ( Val1 , Val2 ) Maksimum. Wartość jest maksymalną wartością Val1 i Val2.
max_repeat ( Val1 ) Zobacz sekcję Using max_repeat.
min ( Val1 , Val2 ) Minimum. Wartość jest minimalną wartością Val1 i Val2.
( ) Operatory pierwszeństwa. Jeśli nie jest używany, stosowany jest priorytet języka C.

Wyrażenia zmiennych standardowych nie modyfikują wartości przypisanych do zmiennych standardowych. Wartość obliczeniowa jest umieszczana w sekwencji ucieczki zgodnie z formatem określonym przez specyfikator typu argumentu ciągu polecenia.

Korzystanie z max_repeat

Użycie max_repeat najlepiej wyjaśnić na przykładzie. Załóżmy, że plik GPD zawiera następujący wpis:

*Command:CmdXMoveRelRight{*Cmd:"<1B>["%d[0,9600]{max_repeat((DestXRel/4))}"a"}

To polecenie zawiera jeden argument typu %d. Zawiera również specyfikację zakresu argumentów. Za każdym razem, gdy unidrv wysyła to polecenie do drukarki, najpierw oblicza DestXRel/4 i określa, czy znajduje się w określonym zakresie. Jeśli wartość obliczeniowa jest większa niż 9600, unidrv wysyła polecenie wielokrotnie, z maksymalną wartością 9600, dopóki określona wartość nie zostanie wysłana. W związku z tym, jeśli DestXRel/4 równa 20 000, Unidrv wysyła następujące polecenia:

<1B>[9600
<1B>[9600
<1B>[800

Operator max_repeat może być używany tylko wtedy, gdy spełnione są następujące warunki:

  • Ciąg polecenia zawiera tylko jeden argument.

  • Argument zawiera specyfikację zakresu.