Scripts VijeoDesigner et chaines de textes

Partie du forum pour tout ce qui concerne les interfaces homme machine ou IHM. Forum, conseil, astuce et entraide sur les interface homme machine ou IHM tels que les magelis, KEP, proface, XBT, .
Répondre
Avatar du membre
lerieur
Forcené des structures
Forcené des structures
Messages : 153
Enregistré le : 27 nov. 2015, 22:04

Scripts VijeoDesigner et chaines de textes

Message par lerieur »

Bonjour à tous.

Je suis en train de développer (enfin j'essaie) un script java sous Vijeo Designer pour extraire les données issues d'une chaine de texte.
La chaine est un truc du genre "#Libellé#0,12#1,00#0,723#Nom#".
L'idée était de réccupérer les données de production de type réel dans des variables distinctes.
Mais visiblement il n'y a pas d'instruction de conversion string vers réel (ni même string vers entier) dans les scripts de VijeoDesigner.

Je suis donc parti dans l'idée de passer par des tableaux d'octets que je vais analyser ensuite.

J'utilise la méthode GetBytes sur une partie de la chaine de la manière suivante
bytes[] DATA=maChaineSource.getBytes();

(la variable maChaineSource contient la chaine "0,12")

Mais à chaque fois j'obtiens une erreur "Erreur de script d'application. Traitement code barre java.lang.ArrayIndexOutOfBoundsException: 4"

Ca ressemble à un dépassement des bornes du tableau.
Mais là où ça me chagrine, c'est que la chaine que je teste ne fais que 4 caractères de longueur.
Le code n'est exécuté qu'une fois...

Je sèche complètement là.
La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7162
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: Scripts VijeoDesigner et chaines de textes

Message par itasoft »

slts,
il faut extraire la valeur avec l'instruction substring(int beginIndex,int endIndex)

et convertir avec le write de la variable REAL
ex:
String sValue="123.456";
REAL01.write(sValue);

JE te met un exemple ci dessous pour extraire la valeur #0.12# à toi de continuer dans le même principe pour extraire les autres valeurs
script


//variable locale
String sVAL1="";
//Ton texte
String texte="#Libellé#0,12#1,00#0,723#Nom#";

int index=0,index1=0,index2=0;

//Remplacer les virgule par un point
texte=texte.replace(',','.');

//Extraire la valeur #0.12#
index=texte.indexOf('#',0);
index1=texte.indexOf('#',index+1);
index2=texte.indexOf('#',index1+1);
sVAL1=texte.substring(index1+1,index2);
//résultat affecté à la variable REAL01
REAL01.write(sVAL1);
Automaticien privé (de tout)
itasoft@free.fr
Avatar du membre
lerieur
Forcené des structures
Forcené des structures
Messages : 153
Enregistré le : 27 nov. 2015, 22:04

Re: Scripts VijeoDesigner et chaines de textes

Message par lerieur »

Nickel !!!!!

T'es un chef itasoft !
Je commençais sérieusement à me prendre le choux sur ce problème depuis 2 jours ...
J'ai posé la question à 2 REA qui n'avaient pas de solution à me proposer et fait une demande à Chorus (toujours sans réponse depuis hier matin).

Et toi tu me règles ça en 30 minutes ... :p

J'avais pas vu la deuxième partie de ton message.
J'avais constaté le problème de la virgule qu'il fallait remplacer par un point.

Merci !!!!!!!
La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !
Avatar du membre
sinced
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1252
Enregistré le : 13 oct. 2015, 16:56

Re: Scripts VijeoDesigner et chaines de textes

Message par sinced »

itasoft est tres fort. Je pense qu'il doit arreter en automatisme et se lancer dans le programmation/amelioration des logiciels d'automatismes (Unity, Siemens etc).
Répondre