Sdílet prostřednictvím


Standardní výrazy proměnných

Důležitý

Moderní tisková platforma je upřednostňovaná pro komunikaci s tiskárnami ve Windows. Doporučujeme použít ovladač třídy doručené pošty IPP od Microsoftu spolu s tiskovými podpůrnými aplikacemi (PSA) k přizpůsobení prostředí tisku ve Windows 10 a 11 pro vývoj zařízení tiskárny.

Další informace najdete v průvodci návrhem aplikace podpory tisku v1 a v2.

Když zadáte argumenty v příkazovém řetězci, můžete hodnotu argumentu zadat jako výraz. Tento výraz může provádět operace pomocí aktuálních hodnot standardních proměnných . Každý standardní výraz proměnné v řetězci příkazu je oddělený složenými závorkami ( {, } ).

Výraz standardní proměnné se může skládat z kombinace následujících komponent:

Výraz standardní proměnné nemůže obsahovat vložené odkazy na makra.

Operátory výrazů jsou zahrnuty v následující tabulce.

Operátor Definice
Val1+Val2 Přidání
Val1-Val2 Odčítání
Val1/Val2 Dělení
Val1*Val2 Násobení
Val1MODVal2 Modul. Hodnota je zbytek dělení Val1 hodnotou Val2.
max ( Val1 , Val2 ) Maximum. Hodnota je maximum z Val1 a Val2.
max_repeat ( Val1 ) Viz část Použití max_repeat.
min ( val1 , Val2 ) Minimální. Hodnota je minimum Val1 a Val2.
( ) Operátory precedencí Pokud se nepoužívá, použije se priorita jazyka C.

Výrazy standardní proměnné nemění hodnoty přiřazené standardním proměnným. Počítaná hodnota je umístěna v únikové sekvenci podle formátu určeného typem argumentu řetězce příkazu a specifikátorem.

Použití max_repeat

Použití max_repeat je nejlépe vysvětleno v příkladu. Předpokládejme, že soubor GPD obsahuje následující položku:

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

Tento příkaz obsahuje jeden argument typu %d. Obsahuje také specifikaci rozsahu argumentů. Pokaždé, když Unidrv odešle tento příkaz do tiskárny, nejprve vypočítá DestXRel/4 a určí, zda je v zadaném rozsahu. Pokud je počítaná hodnota větší než 9600, unidrv odešle příkaz opakovaně s maximální hodnotou 9600, dokud se zadaná hodnota neodešle. Pokud se tedy DestXRel/4 rovná 20 000, unidrv odešle následující příkazy:

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

Operátor max_repeat lze použít pouze v případě splnění následujících podmínek:

  • Řetězec příkazu obsahuje pouze jeden argument.

  • Argument obsahuje specifikaci rozsahu.