manhome.nl

ViSpro Programmeren: Variabelen

 
Variabelen binnen ViSpro komen voor in verschillende gedaanten en met verschillende eigenschappen.

Wanneer we een variabele definiëren als een eenvoudig en enkelvoudig object waaraan we een waarde kunnen toekennen en waarvan we de waarde kunnen opvragen dan komen we tot de volgende lijst:

  • Datapunten
  • C Variabelen
  • Statische Variabelen
  • Environment Variabelen
  • Register Variabelen
  • Speciale Variabelen en Constanten

In het volgende behandel ik de verschillende "opslagplaatsen".

  • Datapunten
    Ook datapunten kunnen we beschouwen als variabelen en wel als systeembredevariabelen. Zij zijn immers vanuit vrijwel alle andere objecten, waar bewerkingen of berekeningen plaats vinden, en vanuit Linux (!) toegankelijk.
    Datapunten hebben als verder bijzonderheid dat ze, indien correct ingesteld, de hun toegekende waarde bewaren ook als het systeem uitgeschakeld wordt!
    Datapunten zijn er in de typen int, float en string en zijn hoofdlettergevoelig (zoals heel ViSpro!).
    Net als in C dienen deze variabelen te zijn aangemaakt voordat er in programmatuur naar kan worden gerefereerd.
    Dat aanmaken gebeurt alleen op een wat andere wijze, n.l. door onderbrengen in de projectboom.
  • Klassieke C- variabelen in ViSpro
    Deze kennen we in 4 typen:
    int √ Ψ
    float √ Ψ
    string    √ Ψ
    ptr Ψ
    Het type ptr is niet als zodanig bekend in C maar wordt in de programma's in/achter de procesplaatjes gebruikt om een grafisch object in dat procesplaatje te kunnen adresseren.
    Deze variabelen zijn "vluchtig". Dat wil zeggen dat ze steeds opnieuw, bij elke doorloop van het programma-onderdeel, worden aangemaakt en dan leeg zijn. Ze dienen ook allemaal aan het begin van een programma(deel) te worden gedefinieerd, dus vóór elke andere programmaregel.
  • Statische (semi-permanente) Variabelen
    Deze zijn enigszins te vergelijken met datapunten. Alleen worden ze niet ondersteund door de iobase server en niet in de configuratieboom aangemaakt maar binnen het programma - of de programma omgeving - waarin ze nodig zijn.
    We onderscheiden:
    • Lokale variabelen
    • Globale variabelen
    Ook deze variabelen zijn er in de 4 typen die we ook van ViSpro C kennen. Ook deze variabelen moeten zijn aangemaakt voordat er naar kan worden gerefereerd maar, dat mag op elke plaats in het programma(deel) gebeuren.
    Voor het aanmaken van deze variabelen zijn twee speciale functies beschikbaar:
    CreateLocalVar() en CreateGlobalVar().
    Nadat deze variabelen zijn aangemaakt zijn ze op twee manieren aanspreekbaar, direct zoals bij "normale" C variabelen en indirect, zoals bij datapunten, door eerst hun naam te construeren. Voor die benadering zijn vier functies beschikbaar:
    SetLocalVar(), GetLocalVar(), SetGlobalVar en GetGlobalVar().
    Het verschil tussen LocalVar's en GlobalVar's is hun toegankelijkheid vanuit andere objecten dan die waarin ze zijn aangemaakt. Daarbij is onderscheid tussen de wereld van de Formula's (Berekeningsobjecten in de projectboom) en die van de procesbeelden.
    Bij de Formula's geldt dat LocalVar's alleen zichtbaar en beschikbaar zijn in het object waarin ze zijn aangemaakt. GlobalVar's daarentegen zijn zichtbaar in alle Formula objecten in de Projectboom.
    Bij Procesbeelden geldt dat LocalVar's alleen berijkbaar zijn vanuit alle functies binnen het procesbeeld waarin ze zijn aangemaakt terwijl GlobalVar's óók toegankelijk zijn in alle subplaatjes (menu's) en ingesloten procesplaatjes.
  • Linux Environment Variabelen
    Ook in de Linux omgeving van ViSpro kunnen (tijdelijke) variabelen aangelegd worden. Hun type is beperkt tot strings en ze zijn beperkt inzetbaar. Als zo'n variabele in een Formel wordt aangemaakt, is hij ook toegankelijk vanuit elke andere Formel maar niet vanuit de plaatjeswereld. Voor de plaatjeswereld geldt hetzelfde als bij de GlobalVar's, ze zijn vanuit elke functie binnen een Procesbeeld en binnen de ingebedde- en sub-plaatjes toegankelijk.
  • Register Variabelen
    Het 'register' - of registry - beschrijft het project. We kennen het vooral als de projectboom die de relatie aangeeft tussen de verschillende objecten. Vrijwel elk object biedt de mogelijkheid definieerbare variabelen (parameters) op te nemen.
    Met behulp van twee speciale functies - SetConfigParam() en GetConfigParam() - kunnen die variabelen aangemaakt, ingesteld en uitgelezen worden.
    Net als de meeste variabelen moeten ook deze, bij het aanmaken, een type toegewezen krijgen.
  • Speciale Variabelen en Benoemde Waarden
    Het gaat hier om een groep variabelen, die we tegenkomen in de programmering in en achter de procesplaatjes, waarvan de namen gereserveerd zijn en die binnen ViSpro C een bijzondere betekenis hebben.
    Een aantal van die variabelen kunnen een beperkte set aan waarden bevatten die door ViSpro zijn bepaald. Die vaste waarden, die alleen via een naam zijn te gebruiken, noemen we hier Benoemde Waarden.
    Onderstaande tabel toont die variabelen en constanten:

 

NaamTypeToelichting
Object pointer
variabele
   Ψ

Elk object (lijn, figuur, samenstelling) in een procesplaatje krijgt bij opening van dat plaatje een uniek adres, de "pointer".

Zodra vanuit een grafisch object een functie wordt aangeroepen, wordt de pointerwaarde van dat object in deze variabele meegegeven.

Die pointerwaarde is nodig bij ALLE acties waarbij een grafisch object geadresseerd moet worden.

De belangrijkste alternatieve manier om achter de pointerwaarde van een object te komen is deze op te vragen terwijl de naam van dat object als referentie gebruikt wordt. Uiteraard moet zo'n object dan een unieke naam hebben.

ObjType

of

MouseType

Variabele
   Ψ

Bevat aanwijzing over aard van event

UITLEG:

Grafische objecten hebben twee definitievelden om functies uit te voeren of aan te roepen.

Bij het ANZEIGE veld gebeurt dat

  1. éénmalig bij initialisatie,
  2. cyclisch op basis van ingestelde tijd,
  3. op basis van een waardeverandering van een datapunt.

Bij het AKTION veld kun je 5 expliciete momenten aangeven wanneer dat moet gebeuren

  1. bij initialisatie (Init),
  2. bij een verandering van een waarde van een datapunt (IoChg),
  3. bij indrukken v.d. muistoets (Press),
  4. bij bewegen met de muis met ingedrukte toets(Move),
  5. bij loslaten van de muistoets (Release).

Daarnaast kunnen ook enkele z.g. shared window objecten (Vensterobjecten als Tabel of Tekstinvoer) een event genereren waarbij soms onderscheid gemaakt wordt wat de aard van het event is.

Om nu de reactie van de afhandelende routine af telaten hangen van het type event, kan onderzocht worden wat de aard van het event is geweest. Dat gebeurt door de waarde van ObjType / MouseType te vergelijken met een van de, hieronder genoemde, 'Constanten'.

OBJEV_INIT Benoemde Waarde

Waarde van ObjType die aangeeft dat event veroorzaakt is door initialisatie.

N.B.: Elk grafisch object kent een initialisatieprocedure die doorlopen wordt bij het laden van het procesbeeld.

OBJEV_IOCHANGE Benoemde Waarde Waarde van ObjType die aangeeft dat event veroorzaakt is doordat een waardeverandering van een datapunt werd vastgesteld.
OBJEV_PRESS Benoemde Waarde Waarde van ObjType die aangeeft dat event veroorzaakt is doordat de muistoets werd ingedrukt terwijl de muis zich boven het aanroepende object bevond.
OBJEV_MOVE Benoemde Waarde Waarde van ObjType die aangeeft dat event veroorzaakt is doordat de muis, met ingedrukte muistoets werd bewogen terwijl de muis zich boven het aanroepende object bevond.
OBJEV_RELEASE Benoemde Waarde Waarde van ObjType die aangeeft dat event veroorzaakt is doordat de muistoets werd losgelaten terwijl de muis zich boven het aanroepende object bevond.
OBJEV_CHANGE Benoemde Waarde Waarde van ObjType die aangeeft dat event veroorzaakt is doordat de waarde van een vensterobject veranderde (b.v. bij typen in een tekstinvoer window).
OBJEV_SET Benoemde Waarde Waarde van ObjType die aangeeft dat event veroorzaakt is doordat de waarde van een vensterobject veranderde ten gevolge van het gebruik van de Enter toets (b.v. na typen in een tekstinvoer window).
MouseButton Variabele
   Ψ
Biedt tijdens de afhandeling van muisgebeurtenissen de waarde 1, 2 of 3 afhankelijk van de muistoets (L-M-R) die gebruikt werd om de afhandelende functie op te roepen.
MouseX
MouseY
Variabele
   Ψ
Bieden de actuele muisposities, als floating point waarde, tijdens het afhandelen van de muisgebeurtenissen.
MouseDiffX
MouseDiffY
Variabele
   Ψ
Bieden de actuele muisverplaatsing t.o.v. het initiatiepunt, de plaats waar de muistoets ingedrukt werd, als floating point waarde, tijdens het afhandelen van de OBJEV_MOVE gebeurtenis.

 

 

 

Door naar ViSpro C