La solution est la suivante :
- Sélectionnez une valeur brute qui pointe sur un bloc de données de
l'automate où les points de mesures sont à la suite l'un de l'autre
- Créez une ligne brisée avec le nombre requis de points, ce nombre
doit correspondre aux nombre de points de mesures désirés.
- Il faut ensuite créer le script suivant (ex. sur un bouton dans événement
clic de souris). Ce script effectue les fonctions suivantes :
- Lecture des variables brutes
- Conversion de la valeur mot (échange d'octets)
- Fixation des différentes positions X et Y des "Points de mesures"
isolés en rapport avec les valeurs lues.
Script C, ici exemple de "clic de souris" sur bouton :
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
int i;
BYTE Left[20], Right[20], *PolygonPosB;
static WORD* PolygonPos;
PolygonPos = Right;
PolygonPosB = Left;
// Lecture de la variable "DreieckHuellRoh"
GetTagRaw("DreieckHuellRoh",PolygonPosB,20);
// Retour - Type :BOOL
// Echange d'octet car valeur réelle dans S5
for (i=0; i<=20; i+=2) {
Right[i] = Left[i+1];
Right[i+1] = Left[i];
}
// Fixer les positions X et Y du polygone
// position de départ dans cet exemple : X=30 , Y=300
// Polygone avec dix points
for (i=0;i<=10;i++){
SetIndex("HüllkurveRohdaten","Polygonzug1",i);
SetActualPointLeft("HüllkurveRohdaten","Polygonzug1",(i*30));
SetActualPointTop("HüllkurveRohdaten","Polygonzug1",300-PolygonPos[i-1]);
}
// Edition de contrôle dans une fenêtre de diagnostic pour Global Script
printf("Rohdatenwerte: %d %d %d %d %d %d %d %d %d %d\r\n",
PolygonPos[0],
PolygonPos[1],
PolygonPos[2],
PolygonPos[3],
PolygonPos[4],
PolygonPos[5],
PolygonPos[6],
PolygonPos[7],
PolygonPos[8],
PolygonPos[9] );
}

|