Partilhar via


Expressões de variáveis padrão

Importante

A moderna plataforma de impressão é o meio preferido do Windows para comunicar com as impressoras. Recomendamos que utilize o controlador de classe da caixa de entrada IPP da Microsoft, juntamente com as Aplicações de Suporte de Impressão (PSA), para personalizar a experiência de impressão no Windows 10 e 11 para o desenvolvimento de dispositivos de impressora.

Para obter mais informações, consulte Guia de design do aplicativo de suporte de impressão v1 e v2.

Ao especificar argumentos em uma cadeia de comando, você pode especificar o valor do argumento como uma expressão. Esta expressão pode executar operações usando os valores atuais das variáveis padrão. Cada expressão de variável padrão dentro de uma cadeia de comando é delimitada por chaves ( {, } ).

Uma expressão variável padrão pode consistir em uma combinação dos seguintes componentes:

Uma expressão de variável padrão não pode conter referências de macro incorporadas.

Os operadores de expressão estão incluídos na tabela a seguir.

Operador Definições
Val1+Val2 Adição
Val1-Val2 Subtração
Val1/Val2 Divisão
Val1*Val2 Multiplicação
Val1MODVal2 Módulo. Valor é o restante da divisão de Val1 por Val2.
máximo ( Val1 , Val2 ) Máximo. Valor é o máximo de Val1 e Val2.
max_repeat ( Val1 ) Consulte a seção Usando max_repeat .
min ( Val1 , Val2 ) Mínimo. O valor é o mínimo de Val1 e Val2.
( ) Operadores de precedência. Se não for utilizada, a precedência da linguagem C é usada.

As expressões de variáveis padrão não modificam os valores atribuídos às variáveis padrão. O valor calculado é colocado na sequência de escape, usando o formato especificado pelo especificador de tipo de argumento de cadeia de comando .

Usando max_repeat

O uso de max_repeat é melhor explicado com um exemplo. Suponha que um arquivo GPD contenha a seguinte entrada:

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

Este comando contém um único argumento, do tipo %d. Ele também contém uma especificação de intervalo de argumentos. Sempre que o Unidrv envia esse comando para a impressora, ele primeiro calcula o DestXRel/4 e determina se ele está dentro do intervalo especificado. Se o valor calculado for maior que 9600, o Unidrv enviará o comando repetidamente, com um valor máximo de 9600, até que o valor especificado seja enviado. Assim, se DestXRel/4 for igual a 20.000, o Unidrv enviará os seguintes comandos:

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

O operador max_repeat só pode ser utilizado se forem satisfeitas as seguintes condições:

  • Uma cadeia de caracteres de comando inclui apenas um único argumento.

  • O argumento inclui uma especificação de intervalo.