Discussions au sujet des autres produits NI

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

Lire données enregistrées dans un fichier avec Labwindows/CVI

Bonjour à tous !
Je suis très novice en matière de CVI puisque j'ai eu le droit qu'à 12h de formation l'année dernière. Je me joins donc à vous pour vous de demander l'aide.
Le projet que j'étudies en ce moment concerne une station météo. Le but étant de pouvoir affiché en temps réel les différentes données issues de celle-ci.
J'ai donc réussi à programmer la station météo pour récupérer toutes les secondes les différentes données. Ces données sont enregistrées dans un ficher .dat et sont donc actualisées toutes les secondes. Ce fichier est de la forme suivante :
Citer:
"TOA5","CR1000","CR1000","2860","CR1000.Std.17","CPU: Projet météo.CR1","64584","Public"
"TIMESTAMP","RECORD","BattV","BP_kPa","AirTC","RH","WS_kph","WindDir"
"TS","RN","Volts","kPa","Deg C","%","kilometers/hour","Degrees"
"","","","","","","",""
"2010-11-27 10:27:14.44",257,12.14808,61.78909,22.408,36.154,0,0.02405149

Les données à afficher se trouvent dans la dernière ligne, avec dans l'ordre,
la date, le nombre d'enregistrement, la tension de la batterie, la pression atm., la température, l'humidité, la vitesse du vent et sa direction.
Mon but étant de pouvoir afficher les différentes données météorologiques.

Ma question est donc, est-il possible d'aller récupérer les différentes données en continue et les afficher dans des afficheurs?

J'espère avoir été assez clair, et espère qu'un d'entre vous sera me dire si c'est possible et peut être m'orienter vers la façon de faire.

Cordialement, Frédérick.

 

0 Compliments
Message 1 sur 4
4 947 Visites

Bonjour,

 

Je n'ai pas CVI installé ici, mais en gros, je vous conseille d'effectuer ce genre de chose :

 

  • Ouvrir le fichier, récupérer la dernière ligne (ou pas, mais plus efficace je pense).
  • Utiliser les expressions régulières pour retrouver le pattern dans votre texte avec la fonction :  RegExpr_FindPatternInText
  • Puis réutiliser la même fonction pour récupérer chaque élément que vous cherchez dans votre pattern un par un (date, nombre, etc).

Utiliser les expressions régulières est plus efficace que de découper la chaîne suivant les espaces, ou autre caractères, car on peut vraiment vérifier que l'on a les données correctes dans le fichier.

 

SI j'ai le temps je vous fait un exemple de soir.

 

Cordialement,

 

Da Helmut
Voir le profil de Maxime M. sur LinkedIn - View Maxime M.'s profile on LinkedIn
0 Compliments
Message 2 sur 4
4 943 Visites

Merci pour ta réponse.

En revanche, j'attenderais ton exemple avant de me lancer dans quelque chose car je n'ai pas vraiment compris l'utilité et comment utiliser cette fonction.

Cordialement, Frédérick.

0 Compliments
Message 3 sur 4
4 924 Visites

Bonjour,

 

Merci d'avoir posté sur les forums NI.

 

En vérité, votre problème est davantage du ressort du langage C pur. La solution de Maxime marchera sans aucun doute (attention, il faudra rajouter la librairie .fp pour trouver la fonction ReExpr_FindPatternInText), tout comme la fonction FindPattern.

 

Avec des fonctions plus bas niveau, on pourra retrouver l'architecture suivante :

 

 

 

/* Architecture pour recueillir les données dans un tableau dans CVI*/

char text[][];
char line[];
int i,j;

Definir fichier;
Open fichier;

While(fin de fichier !=0){
	Lire ligne;
	while(fin de ligne !=0){
		Get caractere;
		while(caractere != ','){
			text[][]=line[];
			i++;
		}
		Passer caractere;
	}
}

Afficher(text[]); 

/* Puis traiter vos données... */
			

 

 

Encore une fois, cela dépendra de votre façon de penser en algorithmique !

Cordialement,

Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.

0 Compliments
Message 4 sur 4
4 893 Visites