Поделиться через


Стандартные выражения переменных

Внимание

Современная платформа печати — это предпочтительный способ взаимодействия с принтерами Windows. Рекомендуется использовать драйвер класса "Входящие" Microsoft IPP вместе с приложениями поддержки печати (PSA), чтобы настроить возможности печати в Windows 10 и 11 для разработки устройств принтера.

Дополнительные сведения см. в статье "Современная платформа печати" и руководство по проектированию приложений поддержки печати.

При указании аргументов в командной строке можно указать значение аргумента в качестве выражения. Это выражение может выполнять операции с использованием текущих значений стандартных переменных. Каждое стандартное выражение переменной в командной строке разделено скобками ({, } ).

Стандартное выражение переменной может состоять из сочетания следующих компонентов:

Стандартное выражение переменной не может содержать внедренные ссылки на макросы.

Операторы выражений включены в следующую таблицу.

Оператор Определения
Val1+Val2 Дополнение
Val1-Val2 Вычитание
Val1/Val2 Подразделение
Val1*Val2 Умножение
Val1MODVal2 Вычисление модуля. Значение — это оставшаяся часть деления Val1 на Val2.
max ( Val1 , Val2 ) Максимум. Значение равно максимальному значению Val1 и Val2.
max_repeat ( Val1 ) См. раздел "Использование max_repeat ".
min ( Val1 , Val2 ) Минимум. Значение равно минимуму Val1 и Val2.
( ) Операторы приоритета. Если он не используется, используется приоритет языка C.

Стандартные выражения переменных не изменяют значения, назначенные стандартным переменным. Вычисляемое значение помещается в escape-последовательность, используя формат, заданный описательом типа аргумента командной строки.

Использование max_repeat

Использование max_repeat лучше всего объясняется примером. Предположим, что файл GPD содержит следующую запись:

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

Эта команда содержит один аргумент типа %d. Он также содержит спецификацию диапазона аргументов. Когда Unidrv отправляет эту команду на принтер, он сначала вычисляет DestXRel/4 и определяет, находится ли он в указанном диапазоне. Если вычисляемое значение больше 9600, Unidrv повторно отправляет команду с максимальным значением 9600, пока указанное значение не будет отправлено. Таким образом, если DestXRel/4 равен 20 000, Unidrv отправляет следующие команды:

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

Оператор max_repeat можно использовать только в том случае, если выполнены следующие условия:

  • Командная строка содержит только один аргумент.

  • Аргумент включает спецификацию диапазона.