标准变量表达式

重要

新式打印平台是 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 ) 最小值。 值为 Val1Val2 的最小值。
( ) 优先运算符。 如果未使用,则使用 C 语言优先级。

标准变量表达式不会修改分配给标准变量的值。 计算的值使用命令字符串参数类型说明符指定的格式放置在转义序列中。

使用 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 运算符:

  • 命令字符串仅包含一个参数。

  • 该参数包括一个范围规范。