Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

recuperation de chaine de caractere

Bonjour,

Je suis novice sur le logiciel labview. J’ais un projet qui consiste à récupérer une trame de donné sur le port com d'un PC. Cette trame de donné provient d'un microcontrôleur qui lui gère une batterie. La trame de donne se présente sous cette forme $PAGL,RMC,24-100%,48-100%OFF. Grâce au exemple fournie j'arrive a récupère la trame de donnée qui est envoyer environ toute les secondes. Le problème est que les trames sont écris les une a la suite des autre donc pas facile a les lire, est-il possible d'afficher que la dernière trame reçue. De plus j'aimerais pouvoir envoyer une trame de commande au microcontrôleur a n'importe qu'elle moment, mais je ne sais pas comment effectuer cette commande.

Je joins le diagramme que j'ais effectué, qq'un peux m'aider.

 

 

 

 

0 Compliments
Message 1 sur 10
3 903 Visites

Comme ça ?

 

Clipboard02.png


We have two ears and one mouth so that we can listen twice as much as we speak.

Epictetus

Antoine Chalons

Message 2 sur 10
3 893 Visites

Désolé, j'ai été un peu bref dans ma réponse... utiliser le "scan from string" est une bonne solution, toute la complexité de la chose réside dans le parametre de format (constante string au dessus de la fonction scan), dans l'aide avancée il y a beaucoup d'information pour aider à bien choisir le format, par exemple %[^,] veut dire "tous les caractères jusqu'à la virgule", %d-%d veut dire "deux numlérique entiers séparé par un tiret (sans espace), etc...

Ensuite pour "agrandir la boiboite" scan fron string, il faut faire un drag-down (=étirer en français?) pour avoir le bon nombre de sortie.

 

Hope this helps


We have two ears and one mouth so that we can listen twice as much as we speak.

Epictetus

Antoine Chalons

0 Compliments
Message 3 sur 10
3 883 Visites

Merci TITOU,

ce matin j'avais essayer la réponse que tu m'a envoyer et elle a très bien marché.

Le problème que j'ais vue par la suite est que j'essaye de résoudre, est le suivant:

 

j'envoye une commande au microcontroleur, la commande a bien été traite par le micro car j'as mis des leds comme indicateur, et je change la trame afin de m'assurer de la lecture. Le problème est que j'affiche toujours la même trame pendant un temps T avant d'afficher la nouvel tram envoyer par le mciro.je n'ais pas la trame en temps réel. De plus qqe foit j'ais des message d'erreur tel que "VISA:  (Hex 0xBFFF006C) Une erreur d'overrun est survenue lors du transfert. La carte n'a pas eu le temps de lire un caractère avant l'arrivée du caractère suivant." alors je suis obliger d'arrête de fermer labview et de reprendre pour que sa fonctionne (pour m'assurer du micro je me sus connecter en hyper terminal et il ne bug pas). La syncro est aléatoire j'ais l'impression.

 

Merci beaucoup de ton aide.

0 Compliments
Message 4 sur 10
3 881 Visites

tu peux reposter le VI avec lequel tu as ce problème?


We have two ears and one mouth so that we can listen twice as much as we speak.

Epictetus

Antoine Chalons

0 Compliments
Message 5 sur 10
3 875 Visites

Ci-joint le VI. Pour plus de précision je procède de la manière suivante:

 

_ Je lance le VI

_ J’écrie une trame non reconnue par le micro

_ le micro me renvoie cette tram  "$PAGL,RMC,24-50%,48-50%OFF"

_ J’écris une trame pour changer de mode "$PAGL,D"

_ le micro change d'état et me renvoie cette tram "$PAGL,RMC,24-50%,48-50%DEC" que je lis qu'après un temps T ( peux être que c'est une mémoire tampon est qu'il faux qu'elle affiche les infos qu'elle a stocker avant d'afficher la bonne).

_ J’écris une autre tram pour changer de mode "$PAGL,C"

 

Et la plusieurs cas de figure se présente : 

 

La tram est bien envoyer et le micro réagie et répond "$PAGL,RMC,24-50%,48-50%CH" mais c'est pas du tout ce qu'affiche la chaine de caractère, elle reste sur la chaine précédent ( $PAGL,RMC,24-50%,48-50%DEC).

_ La tram n'est pas reconnue par le micro est donc pas de changement d'état. Le message d'erreur "VISA:  (Hex 0xBFFF006C) Une erreur d'overrun est survenue lors du transfert. La carte n'a pas eu le temps de lire un caractère avant l'arrivée du caractère suivant" s'affiche et donc il faux tout arrêter.

 

Merci pour ton aide

0 Compliments
Message 6 sur 10
3 871 Visites

petit conseil : il vaut mieux mettre l'init de la communication visa AVANT la boucle while, pour ne faire l'ouverture du port qu'au lancement du VI, car tu ne fermes le port que lorsque tu sorts de la boucle while.

 

ensuite pour ton erreur, c'est pas impossible que le soucis vienne de la vitesse en Baud (Baud rate) que tu utilises, que dit la doc de ton appareil?


We have two ears and one mouth so that we can listen twice as much as we speak.

Epictetus

Antoine Chalons

0 Compliments
Message 7 sur 10
3 869 Visites

l'appareil sur lequ'elle je travail est une petite maquette que j'ais fait, pour me permettre de dévelloper le logicielle de communication est d'affichage d'info sur labview. ce logicielle la sera alors utilser sur les produits fini.

j'ais programme et configurer un microcontrolleur pour qu'il puisse communquer avec un port com a 4800 baud. en hyper terminal sa marche tres bien ( copie de l'hyper terminal ci dessous) mais la presentation n'est pas terrible, alors j'ais pensée qu'avec un fenettre labview se serais mieux .

  

$PAGL,RMC,24-100%,48-100%OFF
$PAGL,RMC,24-50%,48-50%OFF
$PAGL,RMC,24-100%,48-100%OFF
$PAGL,RMC,24-50%,48-50%OFF
$PAGL,RMC,24-100%,48-100%OFF
$PAGL,CC
$PAGL,RMC,24-100%,48-100%CH
$PAGL,RMC,24-50%,48-50%CH
$PAGL,RMC,24-100%,48-100%CH
$PAGL,RMC,24-50%,48-50%CH
$PAGL,RMC,24-100%,48-100%CH
$PAGL,RMC,24-50%,48-50%CH
$PAGL,DD
$PAGL,RMC,24-100%,48-100%DEC
$PAGL,RMC,24-50%,48-50%DEC
$PAGL,RMC,24-100%,48-100%DEC
$PAGL,RMC,24-50%,48-50%DEC
$PAGL,RMC,24-100%,48-100%DEC
$PAGL,RMC,24-50%,48-50%DEC
$PAGL,FF
$PAGL,RMC,24-100%,48-100%OFF
$PAGL,RMC,24-50%,48-50%OFF
$PAGL,RMC,24-100%,48-100%OFF
$PAGL,RMC,24-50%,48-50%OFF

0 Compliments
Message 8 sur 10
3 867 Visites

@hamdi.jedda wrote:

[...] mais la presentation n'est pas terrible, alors j'ais pensée qu'avec un fenettre labview se serais mieux .

 


Sans aucun doute!

 

Cela dit, même si tu veux faire quelque chose de basique avec LabVIEW il ne faut pas oublier de mettre en place une structure saine et capable d'évoluer un peu. Je te suggère de partir du template de machine à état inclus dans LabVIEW et ensuite de faire un action engine pour la communication avec appareil. Si tu fais une recherche "action engine" sur le forum tu trouveras pas mal d'exemple qui t'aideront à en comprendre l'utilité.

 

Bon courage!


We have two ears and one mouth so that we can listen twice as much as we speak.

Epictetus

Antoine Chalons

0 Compliments
Message 9 sur 10
3 856 Visites

Merci TITOU

 

je vais faire ce que tu me suggéré et je te tiendrais informé si tu veux.

 

 

0 Compliments
Message 10 sur 10
3 854 Visites