[LV 8.6] Rechercher expression dans une chaîne
Bonjour,
j'ai un fichier .cfg dont j'aimerais récupérer 2 caractéristiques (R et L). Le fichier .cfg est un fichier texte en fait et voici son contenu :
MotorType = Stepper
MotorPositionFeedback = IncrementalEncoder
ImaxM = 1.5
In = 1
NoMotorSteps = 400
NoMicroStepsPerStep = 256
K = 0.4
R = 5.2653
L = 0.0054936
No_encoder_lines = 500
isMotorTemperatureSensor = 0
Motor_TempSensor_Type = 0
isEncoder = 0
et j'aimerais avoir sur ma face avant :
R = 5.2653
L = 0.0054936
Quelle est la fonction que je dois utiliser ?
Merci d'avance !
Bonjour, je me permets une remarque. Vous cherchez « R = », donc en réalité « R\s=\s » (\s étant l’espace) mais si vous avez « 2 caractères espace » cela ne fonctionne plus. Je pense qu’il serait plus judicieux d’ouvrir le fichier un chaîne de caractères (comme aujourd’hui), de le convertir un tableau 2D de chaines de caractères en utilisant le séparateur « = » pour séparateur de colonne, de chercher l’index caractère « R » dans la première colonne et d’utiliser cette valeur pour indexer la deuxième colonne.
Luc Desruelle | Voir mon profil | LabVIEW Code & blog
Co-auteur livre LabVIEW : Programmation et applications
CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW
Similar Messages
-
Nombre d'occurrence dans une chaîne de caractère
Bonjour,
Voila j'aimerais construire un VI permettant de me donner le nombre de fois ou je trouve le caractère que je specifie, dans une chaîne de caractère.
En vous remerciant.
Cordialement.
Luc
Résolu !
Accéder à la solution."on" a discuté de "tout ça" avec altenbach sur le forum anglophone.
J'ai voulu "tester" avec une petite routine en assembleur et un appel DLL.
(recherche du nombre d'occurrences d'un caractères dans une chaine)
à ma grande surprise, je n'arrive pas à faire "mieux" en assembleur !
Je suis très étonné ! Peut-être LV prend-t-il un "temps fou" dans sa procédure d'appel à une DLL.
Je ne vois que ça.
clic ici
(mon dernier post) -
Supprimer un élément dans une chaîne déroulante
Bonjour,
Alors voici mon problème : avez-vous une idée de la façon de supprimer un élément dans une chaîne déroulante ? Pour l'instant, j'arrive à seulement ajouter des éléments, mais je souhaiterais à terme pouvoir en supprimer et même les modifier, donc si vous avez une idée je suis preneur ,
Florian
Résolu !
Accéder à la solution.Merci pour votre réponse,
j'ai utilisé ce noeud de propriété, mais lorsque je veux supprimer un élément du tableau, je dois indiquer l'indice dans lequel la chaîne se trouve, il existe d'ailleurs une fonction qui permet de le faire. Le problème c'est que je ne récupére pas la chaîne mais la valeur de la chaîne qui est différente, je veux simplement récupérer la chaîne lorsque je la choisi dans la chaîne déroulante,
Cdt,
Florian -
Recherche dans une chaine (un petit défi ?)
Recherche dans une chaine du nombre d'occurences d'un caractère unique ou d'une sous-chaine (plusieurs caractères)
en pièce jointe, un Benchmark reprenant différentes méthodes. (chaine de départ : 50e6 caractères)
y est repris ma méthode avec un code en assembleur et l'appel du dit code dans une dll.
Mon code (ASM_DLL) supporte la recherche d'un caractère unique ou d'une sous-chaine.
sous-chaine : "abc"
SpreadSheat - 504ms
Replace - 428ms
Count (search 1D array) : ne fonctionne pas si plus de un caractère.
ASM_DLL - 71ms
caractère unique : "a"
SpreadSheet - 639ms
Repalce - 435ms
Count (search 1D array) - 102ms
ASM_DLL - 78ms
L'outil de mesure est fourni, soit le code benchmark ci-joint.
Vous pouvez donc prendre les temps "suivant" votre machine, et établir les rapports de comparaison.
Mis à part la méthode pour générer la chaine de 50e6 caractères, le reste du code est "from altenbach"
En ce qui me concerne:
ASM_DLL / Replace = 71ms/428ms = 0,16
objectif : trouver le nb d'occurences de la sous-chaine "abc" dans une chaine de 50e6 caractères
(la chaine de départ est générée aléatoirement avant le start du Bench)
Qui peut trouver un code plus rapide que la méthode "Replace" avec un coefficient inférieur à 0,16 ?
Quelqu'un pour relever le défi ? .. un petit 0,15 ?bon ... et bien j'ai joué tout seul
aucun passionné d'optimisation et/ou d'assembleur su le forum ?
Je suis descendu à 0,14 (par rapport à la méthode "replace")
La métode "replace" (code LV) est la plus rapide pour une sous-chaine comportant plusieurs caractères.
Pour un caractère unique, la métode la plus rapide est "Count" (et "Count_parallel")
("Count" fonctionne uniquement pour la recherche d'un caractère unique)
Ma dll prend les deux, un caractère unique ou une sous-chaine quelconque. (comme "replace" ou "spreadsheet")
J'ai peaufiné l'algorithme et le code au maximum, un 0,12 ou même un 0,13 me semble impossible. (sans parallelisme)
Si vous avez de très longues chaines à scanner, servez-vous de cette dll, ça va vite -
Écriture dans une base de données Access
Bonjour,
J'utilise labview 8.5 avec le Toolkit NI LabVIEW Database Connectivity, et comme base de données Access 2007.
Ma base de données est déjà créer, et je doit lui envoyer différentes données. J'ai créer un simple vi pour écrire une chaîne dans cette base de données mais j'ai une erreur :
L'erreur -2147467259 s'est produite à : Cmd Execute.vi->DB Tools Insert Data.vi->database.vi
Raisons possibles :
Exception occured in Microsoft JET Database Engine: Le nombre de valeurs de la requête doit coïncider avec le nombre de champs destination. dans Rec Create - Command.vi->Cmd Execute.vi->DB Tools Insert Data.vi->database.vi
En utilisant les exemple de labview j'arrive à lire la base de données, mais je voudrais écrire.
Merci
Mickaël
Pièces jointes :
database.vi 16 KBBonjour,
Tout d'abord merci d'avoir posté sur le forum National Instruments. Poour votre problématique, je vous conseille de regarder l'aide détaillée LabVIEW de la fonction DB Tools Insert Data qui vous donnera toutes les informations nécessaires pour cette fonction.
Dans votre cas, la data que vous voulez insérer n'est pas du type cluster. Or dans ce cas, le VI insert les données dans la colonne que vous spécifiez, entrée que vous n'avez pas spécifiée. Votre erreur doit donc venir de ce point.
N'hésitez pas à regarder les exemples à la fin de l'aide détaillée qui vous aideront dans la mise en place de votre VI,en particulier l'exemple Sixtypes Insert VI.
Cordialement
Mathieu B
National Instruments France
#adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
Forum Aéronautique, Spatial et Défense. Avec la participation exceptionnelle de Bernard DUPRIEU, Res... -
Insérer une variable dans une boite de dialogue
Bonjour,
Je souhaite insérer une variable (valeur extraite d'un tableau Excel) dans une boite de dialogue. J'ai vu qu'on pouvait modifier le VI Express de la boite de dialogue mais je ne vois pas comment insérer cette variable dans le message d'entrée.
D'avance merciHello,
First, I think that you can get more help if you write in english. Because i didn't understand completly your question.
What you're trying to do it's simply what's in the attached picture? it's not all the code. Simply the read cell and the dialog.
Software developer
www.mcm-electronics.com
PS: Don't forget to rate a good anwser ; )
Currently using Labview 2011
PORTUGAL
Attachments:
excel_dialolog.JPG 5 KB -
Bonjour, je suis un simple étudiant en Bac+2 et j'ai un petit projet à présenter mais j'ai un problème de taille au démarrage :
Je voudrais générer une chaîne de x caractères comprenant uniquement les caractères A, T, C, G. Jusque là, rien de bien compliqué, je me suis dit A=0 T=1 C=2 G=3 et je les génère par le hasard.
Là, ou ça se corse, je voudrais avoir un certain pourcentage de C et G par rapport au total des caractères et là je suis bloqué.
Admettons que je veule 60% de caractères C et G dans ma chaîne de longueur 20 par exemple. J'ai eu l'idée de générer une chaîne de 0.6*20=12 caractères pour les C et G et du coup 8 pour les A et T et de les concaténer et voilà le problème, j'obtiens :
CGGGCGCGCCGGAATTTATA
Je voudrais que ces caractères soient complètement mélangés ( ex : CCATGCGAGACTAGGGTTCG ) pour la suite de mon programme.
Comment faire intervenir le désordre avec cette chaine ?
Et là, je sèche, j'ajoute que je débute en Labview et que mon prof n'a pas su me répondre non plus, je m'en remets donc à vous :/
Merci d'avance à ceux qui répondront !Bonjour CapitaineNemo,
Voilà une solution qui génère une chaîne de caractère à la taille souhaitée et qui contient une proportion paramétrable de C et G.
Dans mon VI, je suis parti du principe qu'on voulait autant de A que de T et autant de C que de G mais qu'on peut choisir la proportion de C+G par rapport à A+T. Lors des divisions pour calculer les nombre de lettres, j'ai priviliégier le A et le C en faisant la division entière et en ajoutant le reste au A et au C.
Ensuite on vient mélanger le tableau généré avec la fonction donné par @altenbach.
Je te laisse nous dire si ca te convient.
Si c'est bon pour toi, pense à marquer ta question comme résolue et a remercier les contributeurs.
.mesLeft{float:left} .mesInfo{border-left:solid 1px #989898;font-size:x-small;color:#989898} .mesLogo{float:right;opacity:0.18} .mesLogo:hover{opacity:0.9}
Maxime R.
CLD - Certified LabVIEW Developer / Développeur LabVIEW Certifié
CLAD - Certified LabVIEW Associate Developer
Pièces jointes :
Chaine melangee.vi 15 KB -
Priorité dans une file d'attente
bonjour
je cherche un moyen afin de définir une priorité dans une file d'attente.
j'ai une boucle qui envoie des éléments dans une file d'attente et deux autres qui les traitent en parallèle, mon soucis est de pouvoir décider dans quel boucle de traitement est envoyé mon élément.
je joint un exemple pour se faire une meilleur idée !
merci de votre aide
Il a LabVIEW, il a tout compris !
Pièces jointes :
Sans titre 1.vi 15 KBSalut,
Une idée, au lieu de transmettre juste une information, est de transmettre en plus un destinataire sous la forme d'un énuméré.
La file d'attente tranporte donc des clusters (association d'éléments) contenant un énuméré de destination et une chaîne de caractère correspondant aux données.
Dans tes boucles consommatrices, lis l'élément dans la file d'attente (sans le supprimer), et si la boucle doit le traiter, lit le en le supprimant.
Ca donne un code dans le genre.
A+
Edit: VI en PJ, car il semble qu'il y ai un bug (au moins d'affichage dans le png au dessus au niveau du type d'éléments à câbler lors de la création de la file d'attente)
Mathieu Steiner, Test System Engineer, Safran Engineering
CLD, ISTQB
Pièces jointes :
Sans titre 1.vi 20 KB -
InDesign CS5 - Pdf interactif - texte dans une fenêtre flottante
Bonjour,
Je suis en train de réaliser un pdf interactif dans InDesign CS5, j'ai intégré une vidéo dans une fenêtre flottante sans soucis.
Je souhaite faire la même chose avec du texte (quelques lignes de texte et un bouton "lire la suite" qui ouvrirait un texte simple dans une fenêtre flottante) mais je n'y parviens pas ?
D'avance merci.Si votre pdf est bien lu dans adobe reader, vous pouvez utiliser les fonctions avancées du pdf interactif (nécessitent Acrobat Pro) qui consistent à afficher/masquer un calque spécifique au clic d'un bouton. Mais cela nécessite autant de calques Acrobat que de textes…
-
Mettre une photo dans une forme illustrator
Bonsoir,
J'ai un problème!
J'ai fait une forme sur Illustrator: des anneaux olympiques en gros , avec un peu d'extrusion en 3D pour que ça fasse joli! jusque là pas de pbs
Mon but est de mettre des photos dans les anneaux et d'écrire dessus.. pour cela j'ai mis ma forme sur photoshop mais à partir de là impossible .. je ne sais pas comment faire!
J'ai essayé de tout faire sur photoshop mais la forme rend vraiment pas terrible par rapport à ce que j'ai fait sur Illustrator
Quelqu'un pourrait-il me guider? je ne sais même pas s'il faut que je l'insère en tant que smart object, pixels, path ou shape layer au début..
Merci beaucoup!!!
je mets mon fichier ai en pièce jointe si vous voulez vous faire une idée
Bonne soirée
doud05Bonjour!
Si vous voulez insérer des photos dans les parties intérieures blanches,
vous devez utiliser les masques (d'écrêtage dans Illustrator, de fusion dans Pshop).
Pour cela vous devez dupliquer les formes blanches seulement; ces formes seront utilisées comme masques.
Comme elles «n'existent pas» vectoriellement parlant, il faut que vous sélectionnez le tout puis,
menu Objet » Décomposer l'aspect.
Par la suite, vous pourrez sûrement obtenir les formes indépendantes en utilisant les pathfinders.
Mais c'est un travail assez long, et je ne garantis pas la réussite, surtout si vous n'êtes pas habiles avec les Pathfinders.
Par contre dans Pshop c'est simple (le seul hic c'est que les dégradés sont moins visibles).
Il s'agit de copier-coller votre image illustratror ou de la sauvegarder en .eps et de l'ouvrir dans Pshop en CMJN et non en RVB comme j'ai fait.
Vos photos devront être en CMJN aussi.
Ensuite, vous remplissez de noir 100% toute l'illustration dans Illustrator et vous sélectionnez le tout, puis copiez-collez dans une nouvelles couche de pshop.
Attention, si elle se copie dans un calque, il s'agit de repartir du calque pour copier-coller dans la couche et jeter le calque inutile.
Par la suite vous faites des copies de la couche, pour isoler sur chaque, les parties blanches que vous voulez utiliser comme masques, en remplissant de noir le reste. Puis inverser pour obtenir un élément noir sur fond blanc.
Chacune de ces couches serviront de masque.
J'ai fait un exemple avec le premier masque de votre illustration; je vous indexe deux photos écrans, la première montrant les couches, la deuxième montrant un calque avec masque.
Il se peut qu'il y ait un léger décalage avec les anneaux en couleur mais en agrandissant beaucoup vous pouvez déplacer légèrement l'image et son masque.
Bon travail! ;o-) -
Lancer un executable dans une fenêtre de mon VI
Bonjour,
Je souhaite lancer un executable dans mon VI, comme s'il faisait parti de mon code (pas à l'exterieur)
Pour simplifier les choses, mon programme fera la liste de tous les executables disponibles dans un repertoire défini puis les proposera dans une boite à onglet
Ces executables sont des SFP de ressource
Ainsi je me retrouve avec un applicatif qui contient tous les SFP que j'ai de disponible (je ne pense pas en avoir plus de 10 sur un banc de test)
Pour la gestion de la boite à onglet j'ai trouvé et ca marche bien
Il ne me reste plus qu'a lancer les executables dans les différentes pages et là, je ne vois pas comment faire
je sais que l'on peux lancer des executables à côté, mais cela ne m'interesse pas, je les veux dedans
est-ce faisable ?
D'avance merci
Cordialement
Résolu !
Accéder à la solution.Hello,
Attention, cette méthode était valable avant, et sur Windows XP (ou antérieur) :
- http://digital.ni.com/public.nsf/allkb/8545726A00272EB0862571DA005B896C?OpenDocument
Pour les raisons citées, désormais on utilise plutôt les bibliothèques empaquetées. Elles sont compilées, donc pas de risque d'avoir de fuite de code :-)
Un très bon début avec cette architecture :
- https://decibel.ni.com/content/docs/DOC-19176
Alternative moins crédible : appeler les exe par la fonction "System Exec", et jouer avec les fonctions Windows (au fond de user32.dll) pour que la fenêtre des exe soit une fenêtre enfant du VI appelant...
A+
--Eric
Eric M. - Application Engineering Specialist
Certified LabVIEW Architect
Certified LabWindows™/CVI Developer -
Comment ouvrir un fichier enregistré dans une version plus récente d'Indesign
Bonjour à tous,
J'ai crée mon CV sous Indesign CS8.0 (version Mac OSX). J'ai voulu le modifier hier mais la version d'essai était expirée depuis quelques jours. J'ai télécharger la version Indesign CC (toujours en version d'essai) pour pouvoir modifier mon CV, et au moment d'ouvrir le fichier, ce message apparait :
"Impossible d'ouvrir le document "CV" car il a été enregistré dans une version plus récente d'Adobe indesign (CS8.0). Vous devez utiliser cette version ou une version ultérieure pour ouvrir le fichier."
Or je n'arrive pas à télécharger cette version...
Pouvez-vous m'aider ? Merci d'avance !
PaulineBonjour,
J'ai crée mon CV sous Indesign CS8.0
Ca n'existe pas, il doit s'agir de InDesign 8, également connu sous le nom de InDesign CS6.
(Oui je sais, ce n'est pas simple).
J'ai télécharger la version Indesign CC
Or je n'arrive pas à télécharger cette version...
Tu dis une chose et son contraire, laquelle est la bonne ?
Si tu as InDesign CC il doit forcément ouvrir un fichier CS6, sinon c'est que ce n'est pas InDesign CC.
Assures toi de ne télécharger que depuis le site d'Adobe, sous peine de te retrouver avec un logiciel obsolète, vérolé, etc. -
Afficher les images d'un repertoire à tour de rôle dans une même fenêtre image
Bonjour à tous,
Je voudrais afficher les images d'un repertoire à tour de rôle dans une même fenêtre image. Quelqu'un peut-il m'aider. Merci d'avance.Bonjour,
Je vous joins un VI "clé en main" et je pense que ça répond à votre attente...
Dans le dossier, les deux photos doivent se placer sur le disque C:\.
Le VI permet l'affichage de ces photos... On y règle la temporisation et le nombre de photos à afficher.
Cordialement
David D.
Ingénieur d'Applications
NI France
Attachments:
Picture.zip 999 KB -
Modif de valeurs pour un sousvi dans une boucle while
Bonjour, j'ai une question qui a surement l'air un peu idiote mais j'essaie de modifier une frequence de sinusoide en utilisant un sous vi. Ce sous vi est dans une boucle while et helas il ne prend en compte que la premiere valeur au demarrage du vi. Comment je peux modifier les vi de facons a ce que je puisse modifier la valeur de la frequence a mon gre. D'avance merci, je joins un projet exemple de ce que j'aimerais faire, merci de votre aide
Pièces jointes :
essai.lvproj 8 KBBonjour,
Vous pouvez utiliser les références pour contrôler votre sous-VI. Voici un exemple : Using Control References to Pass Access of Front Panel Controls to SubVIs
Cordialement,
Charlotte F. | CLAD
National Instruments France
#adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
>> "Du 11 octobre au 17 novembre, 2 sessions en parallèle : bien démarrer - approfondir vos connais... -
Lire le contenu d'une cellule dans une feuille Excel
Bonjour,
Dans un fichier Excel, j'ai plusieurs feuilles, dans une des feuille (par exemple feuille: Dispersion) j'ai une cellule qui se situe à la colonne 3 et la ligne 5, cette cellule contient une valeur (par exemple 500). Donc depuis un VI, comment je peux lire le contenu de cette cellule pour sortir la valeur 500 ?
Si je n'ai qu'une feuille je peux utiliser la fonction "Read From Spreadsheet File.vi" pour lire dans un fichier de format txt, mais ici j'ai une fichier Excel avec plusieurs feuilles dedans, comment je peux lire une cellule dans une feuille précise? Merci pour votre éclairage . Bon week end à vous tous.
Solved!
Go to Solution.Bonjour, Jetez un oeil sur ce lien.
http://zone.ni.com/devzone/cda/epd/p/id/3409
CLA 2014
CCVID 2014
Maybe you are looking for
-
Hello Experts : Is F.13 will work for Line item clearing ?
-
Portal content TAB(workset) is not apperaing
Hi, I was working and suddenly i found that Portal Content Tab (workset) disapper. How can i get back the same??? It means in Content Admin role the Portal Content workset removed. Thanks, Anumit
-
How can i impement some simple menu bar into this code ?
Hello all. I have a problem with my program. I wanna add a simple menu bar, but i don't have any idea how to do it. Here is code of my program: import java.awt.Menu; import javax.swing.event.MenuListener; import javax.xml.bind.annotation.adapters.Xml
-
Having problems installing CS4
The error code i get reads as follows.... Suite Shared Configuration CS4 Error: Error 1603. Error 1310. Error writing to file: C:\Windows\installer\2c936.msi. Verify that you have access to that directory. Thats the error I get when trying to in
-
We have a WPF deployed to IIS via Click Once and is accessible via Internet Explorer. However when we try to access/launch the same from Firefox it actually downloads the .application file and executing the same results in an error saying the manifes