Expresiones de variables estándar
Importante
La plataforma de impresión moderna es el medio preferido de Windows para comunicarse con impresoras. Se recomienda usar el controlador de clase de bandeja de entrada IPP de Microsoft, junto con aplicaciones de soporte técnico de impresión (PSA), para personalizar la experiencia de impresión en Windows 10 y 11 para el desarrollo de dispositivos de impresora.
Para obtener más información, consulte Plataforma de impresión moderna y la Guía de diseño de aplicaciones para compatibilidad con impresión.
Cuando se especifican argumentos en una cadena de comandos, se puede especificar el valor del argumento como una expresión. Esta expresión puede realizar operaciones usando los valores actuales de las variables estándar. Cada expresión de variable estándar dentro de una cadena de comandos está delimitada por llaves ( {, } ).
Una expresión de variable estándar puede consistir en una combinación de los siguientes componentes:
Cero, una o más variables estándar
Valores numéricos enteros
Operadores de expresión
Una expresión de variable estándar no puede contener referencias a macros incrustadas.
Los operadores de expresión se incluyen en la siguiente tabla.
Operador | Definiciones |
---|---|
Val1+Val2 | Suma |
Val1-Val2 | Resta |
Val1/Val2 | División |
Val1*Val2 | Multiplicación |
Val1MODVal2 | Valor absoluto. El valor es el resto de dividir Val1 entre Val2. |
máx. ( Val1 , Val2 ) | Máximo. El valor es el máximo de Val1 y Val2. |
max_repeat ( Val1 ) | Consulte la sección Uso de max_repeat. |
mín. ( Val1 , Val2 ) | Mínimo. El valor es el mínimo de Val1 y Val2. |
( ) | Operadores de precedencia. Si no se usa, se usa la precedencia del lenguaje C. |
Las expresiones de variables estándar no modifican los valores asignados a las variables estándar. El valor calculado se coloca en la secuencia de escape, usando el formato especificado por el especificador de tipo de argumento de cadena de comandos.
Uso de max_repeat
El uso de max_repeat se explica mejor con un ejemplo. Supongamos que un archivo GPD contiene la siguiente entrada:
*Command:CmdXMoveRelRight{*Cmd:"<1B>["%d[0,9600]{max_repeat((DestXRel/4))}"a"}
Este comando contiene un único argumento, de tipo %d. También contiene una especificación de rango de argumentos. Cada vez que Unidrv envía este comando a la impresora, primero calcula DestXRel/4 y determina si está dentro del rango especificado. Si el valor calculado es mayor que 9600, Unidrv envía el comando repetidamente, con un valor máximo de 9600, hasta que se envía el valor especificado. Así, si DestXRel/4 es igual a 20.000, Unidrv envía los siguientes comandos:
<1B>[9600
<1B>[9600
<1B>[800
El operador max_repeat solo puede usarse si se cumplen las siguientes condiciones:
Una cadena de comandos incluye un único argumento.
El argumento incluye una especificación de rango.