le 05-22-2018 10:13 AM
Bonjour,
Je viens vous voir car depuis ce midi je bloque sur quelque chose d'assez frustrant.
En fait, je cherche à remplacer les points que j'ai dans mon tableau de string par des , afin de pouvoir ensuite faire la basculement sur Excel beaucoup plus facilement.
Malgré de nombreux posts consultés, même si la majorité traite du raisonnement inverse, je n'ai pas réussi à obtenir ce que je voulais.
Soit j'obtiens un 0, et ça s'arrête là lorsque le booléen de l'option "tout remplacer est désactivé" soit j'obtiens un nombre à virgule mais qui se limite à 6 décimales.
Auriez-vous des conseils concernant mon problème ?
Toute remarque est la bienvenue 🙂
Merci d'avance 😉
Résolu ! Accéder à la solution.
le 05-22-2018 10:55 AM
salut tu peux faire un sous-VI de la zone que tu as entourée en rouge? tu auras ainsi une fonction avec en entrée un tableau 1D de double et en sorite un tableau 1D de string.
Normalement tu viens de faire un sous-VI qui transforme un tableau avec séparateur décimal . vers un tableau 1D string séparateur décimal ,
tu peux ainsi regarder si le code fonctionne ou pas.
Sinon attention à la gestion d'erreur dans la boucle For, s'il y a une erreur il ne se passe rien
Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion
MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group
le 05-23-2018 02:50 AM
Bonjour Luc,
Merci de ton retour.
Cependant, je me permets de te demander quelques éclaircissements !
Je ne comprends pas l'avantage d'un sous Vi dans mon programme, hormis un gain de place, car pour moi un sousVI est simplement une partie de code "condensée".
Ensuite, concernant le but de cette partie de code, c'était de changer le type de séparateur décimal (j'obtenais un point alors que je voudrais des virgules sous Excel.) En effet, au début je copier coller mes données dans excel avec un point comme séparateur décimal que je remplacer par une virgule (find et replace) mais au bout d'un moment cette étape me modifiait les données (ex 0.00000001 -> 00:00:01). J'ai donc décidé de modifier directement dans mon programme. mais malgré plusieeurs essais, mon code en l'état ne fonctionne pas.
Dernière chose, effectivement, rien ne se passe lorsqu'une erreur est detectée, mais je vous avoue que la gestion des erreurs est une chose sur laquelle je ne suis pas très à l'aise. je vais tout de même essayer de corriger ça avec une boucle condition.
je te remercie 😉
le 05-23-2018 02:51 AM
Bonjour Luc,
Merci de ton retour.
Cependant, je me permets de te demander quelques éclaircissements !
Je ne comprends pas l'avantage d'un sous Vi dans mon programme, hormis un gain de place, car pour moi un sousVI est simplement une partie de code "condensée".
Ensuite, concernant le but de cette partie de code, c'était de changer le type de séparateur décimal (j'obtenais un point alors que je voudrais des virgules sous Excel.) En effet, au début je copier coller mes données dans excel avec un point comme séparateur décimal que je remplacer par une virgule (find et replace) mais au bout d'un moment cette étape me modifiait les données (ex 0.00000001 -> 00:00:01). J'ai donc décidé de modifier directement dans mon programme. mais malgré plusieeurs essais, mon code en l'état ne fonctionne pas.
Dernière chose, effectivement, rien ne se passe lorsqu'une erreur est detectée, mais je vous avoue que la gestion des erreurs est une chose sur laquelle je ne suis pas très à l'aise. je vais tout de même essayer de corriger ça avec une boucle condition.
je te remercie 😉
le 05-23-2018 05:36 AM
bonjour, pour te répondre
1) Je ne comprends pas l'avantage d'un sous Vi dans mon programme
La réponse peut être assez longue. Je me focalise sur ton problème :
2) Ensuite, concernant le but de cette partie de code, c'était de changer le type de séparateur décimal
oui je comprends. Sur ton image l'erreur ne me saute pas au nez.
Je te propose : Tu fais une sous-fonctions, tu la testes, tu peux le mettre sur le forum pour demander de l'aide.
L'erreur peut venir de la fonction de sauvegarde : Write Delimited Spreadsheet (string).vi par rapport au format que tu as passé en paramètre. As-tu fait le test?
3) j'obtenais un point alors que je voudrais des virgules sous Excel.
oui. Cela dit, pour remarque ton problème est ultra classique, tu peux modifier le séparateur décimal de
4) mais au bout d'un moment cette étape me modifiait les données (ex 0.00000001 -> 00:00:01).
c'est le format de la cellule qui est en heure et pas standard au nombre. clic droit sur la plage de cellules
5) J'ai donc décidé de modifier directement dans mon programme. mais malgré plusieurs essais, mon code en l'état ne fonctionne pas.
tu as raison, je pense
6) Dernière chose, effectivement, rien ne se passe lorsqu'une erreur est détectée,
sur une boucle For pour ne pas perdre une erreur, il faut mettre un registre à décalage sur le tunnel de l'erreur.
Tu peux ajouter à arrêt sur condition : clic droit est sélectionner >> conditional terminal (la condition étant si erreur en câblant la sortie d'erreur)
A+ Luc
Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion
MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group
le 05-23-2018 05:42 AM
en plus le problème de mettre une image plutôt que du code, c'est que pour t'aider je dois recoder la fonction pour comprendre le bug. Ton image doit être trop petite, car chez moi cela fonctionne...
Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion
MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group
le 05-23-2018 07:13 AM
Je suis conscient que les sous VI peuvent alléger le code tout en le rendant plus personalisable. Cependant, je me suis heurté à leur "complexité" il n'y a pas si longtemps, notamment ceux contenant des commandes. Je n'ai pas réussi à trouver la solution afin d'activer les commandes du sous vi à partir du VI principal. Depuis j'ai laissé tomber un peu les sous vi, sûrement à tort.
J'ai crée un sous-vi qui est censé changer le point en virgule. Celui-ci marche jusqu'à ce que le chiffre contienne trop de décimales et je me retrouves avec le cas que je vous avez explicité : "0,"
Mais malheureusement je ne vois pas d'où provient le problème.
Ensuite, concernant le write delimited spreadsheet, je ne pense pas que l'erreur provienne de cet endroit car aucune erreur n'est répertoriée dans le "conduit" d'erreur le traversant. De plus, il écrit bien ce qu'il lui reçois en commandes, des valeurs avec un point, car je n'ai pas réussi à corriger ça en amont.
Concernant les virgules sous excel, j'ai réussi à résoudre le problème, je voulais simplement que le cahngement se fasse dans labview afin de faciliter les choses (plus besoin de configurer chaque pc pour avoir des virgules à la place des points).
Pour l'autre problème, j'ai réussi à le résoudre également, et effectivement c'était le format de la cellule qui était en cause :).
Enfin, pour la boucle for j'ai fait ce que tu m'as dit, j'ai mis un arrêt sur condition , je vais juste rajouter un registre à décalage pour ne pas perdre les erreurs.
Mon sous VI est en pièce jointe 🙂
merci encore
le 05-23-2018 09:52 AM
tu peux me donner un exemple de nombre qui provoque : Celui-ci marche jusqu'à ce que le chiffre contienne trop de décimales et je me retrouves avec le cas que je vous avez explicité : "0,"
c'est 0.00000000000000009? ou autre?
le code me semble correct.
Tu peux mettre une prob avec arrêt conditionnel si la valeur est 0
pour le reste je vois que tu avances dans la bonne direction. bravo
Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion
MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group
le 05-23-2018 10:01 AM
merci de ton soutien !
Cela peut paraître anodin mais recevoir des encouragements de la part de la communauté c'est top ! 😉
Pour en revenir au code, un certain ouadji avait raison, la meilleure manière d'apprendre, comme dans beaucoup de choses d'ailleurs, c'est d'essayer de trouver par soi-même!
Mon programme marche effectivement, il s'agissait juste d'un souci d'affichage dans l'indicateur de type string. En fait le nombre était trop long, donc il ne m'affichait que le "0,".
Cependant, j'aurai une nouvelle question.
Qu'appeles tu une prob avec arrêt conditionnel ?
je te remercie de ton aide 😉
le 05-23-2018 10:54 AM
sincèrement je suis content de t'avoir aidé, car j'ai le sentiment que tu as progressé. bravo
je voulais parler des sondes avec la possibilité de faire un point d'arrêt sur certaines valeurs
sur une sonde personnalisée, tu peux avoir des conditions
A+
Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion
MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group