le 05-18-2018 04:53 AM
Bonjour,
J'ai créé un tableau que j'affiche sur ma face avant à l'aide de différentes valeurs récupérées au cours d'une acquisition. Mon soucis est que l'utilisateur peut rentrer un nombre incalculable de valeurs (et donc un grand nombre de ligne) et pour éviter que l'acquisition dure longtemps (l'utilisateur doit en effet renseigner une tempo pour synchroniser les valeurs), je souhaiterais pouvoir limiter le nombre de ligne et éviter ainsi que le programme ne s’exécute indéfiniment.
Pour ce faire, j'utilise la fonction construire un tableau pour rassembler mes valeurs, une transposition et j'avais dans l'idée d'afficher la taille du tableau et d'utiliser une condition tel que si la taille du tableau est supérieur à un certain nombre de ligne, faire ceci, sinon, faire cela mais j'ai un conflit de type et je ne vois pas comment faire autrement à ce jour. Quelqu'un a-t-il une idée ?
le 05-18-2018 05:43 AM
Salut,
je pense que tu dois gérer la taille dynamiquement dans ton code, je n'ai vu aucune propriété qui permette de limiter la taille d'un tableau!!
D'autres ont peut-être une solution??!!??
le 05-18-2018 08:32 AM
le 05-22-2018 09:44 AM
Ce sont les appareils de mesure qui envoient les données dans une boucle for, que je récupère ensuite dans un tableau... Quelle est la propriété utilisée pour pouvoir limiter le nombres de lignes sur le noeud ?
le 05-22-2018 11:19 AM
je viens d'essayer la proposition de Ben64, mais en fait, ça ne limite pas la taille du tableau, ça limite juste ce qu'on peut en voir.
Je persiste a dire qu'il faut le faire de manière dynamique dans ton vi.
le 05-22-2018 03:34 PM
@PhilB58 wrote:
je viens d'essayer la proposition de Ben64, mais en fait, ça ne limite pas la taille du tableau, ça limite juste ce qu'on peut en voir.
Je persiste a dire qu'il faut le faire de manière dynamique dans ton vi.
C'est pourquoi je demandais si l'utilisateur entrait les valeurs manuellement, si c'est le cas il ne peut pas entrer plus de valeurs que ce qui est visible. Idéalement c'est de forcer l'utilisateur à utiliser une plage prédéfinie de valeurs. Si ce n'est pas possible alors il faudra le faire de façon dynamique.
Ben64
le 05-22-2018 04:42 PM
Quelque chose dans ce genre ?
05-23-2018 12:51 AM - modifié 05-23-2018 12:56 AM
oui, ça devrait fonctionner, mais l'idéal dans ton cas serait d'arrêter la boucle avec l'indice de comptage de la boucle, en comparant avec la taille initiale du tableau.
Puis je préfère remplir le tableau dans la boucle et finalement le retourner, ça réduit le nombre d'opérations dans la boucle qui sont exécutées à chaque itération et donc sont énergivores.
Un petit dessin vaut mieux qu'un long discours 😉 (ici, je génère des valeurs de manière aléatoire, c'est juste pour faire du remplissage)
EDIT: pour Ben, oui, ta proposition était excellente dans le cas d'un remplissage à la main, je te fais un kudo tient, parce qu'on le vaut bien
le 05-23-2018 06:46 AM
@Azraael a écrit :
Mon soucis est que l'utilisateur peut rentrer un nombre incalculable de valeurs
En fait le problème vient de là, il faut limiter dans l'interface usager le nombre de valeurs que l'utilisateur peut entrer.
J'ai testé le code de Maxime et il est très performant. Si on veut faire une moyenne des échantillons c'est une bonne méthode mais par contre les données ne sont plus ordonnées. Pour avoir les N dernières données acquisitionnées dans l'ordre il suffit de faire une rotation de -1 et de remplacer l'élément du tableau à l'indice N-1 (on y perd un peu en performance).
Ben64
le 05-23-2018 07:05 AM
Décidément, je ne suis pas très réveillé en ce moment, je viens de réaliser que j'avais répondu à Maxime
Par contre Azraael dit:
"Mon soucis est que l'utilisateur peut rentrer un nombre incalculable de valeurs"
et
"Ce sont les appareils de mesure qui envoient les données dans une boucle for, que je récupère ensuite dans un tableau"
On a donc les deux cas de figure, lequel est à privilégier pour répondre???