Стандартные выражения переменных
Внимание
Современная платформа печати — это предпочтительный способ взаимодействия с принтерами 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 можно использовать только в том случае, если выполнены следующие условия:
Командная строка содержит только один аргумент.
Аргумент включает спецификацию диапазона.