IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Récupérer et traiter les données via serialport [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Par défaut Récupérer et traiter les données via serialport
    Bonjour,
    je suis dans un projet de domotique et ma tâche consiste à réaliser une interface d'affichage (via C#) pour les données mesurées. En fait je voudrais pouvoir récupérer et traiter les données que m'envoie le microcontrôleurs. le format est le suivant: <|numeroAppareil|tension|courant|temperature|>. comment faire pour extraire chaque valeur de cette chaîne de caractère? Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    si tu récupères un byte, tu peux utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string result = Encoding.UTF8.GetString(byte[]);
    pour récupérer ton résultat sous forme de chaine (le serialPort te donne des bytes...)

    et utiliser un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string[] chaines = result.Split('|');
    pour découper la chaine en petites chaines en utilisant le "|" comme séparateur...

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Par défaut
    merci. Mais il y a un autre soucis. puisque je reçois les chaînes de caractère provenant de plusieurs appareils en continue. j'aimerai pouvoir extraire les données de chaque appareil que je reçois et les mettre à jour automatiquement sur l'interface. par exemple <|appareil1|tension|courant|température|><|appareil2|humidité|pression|><|appareil3|puissance|énergie|coût|>etc. donc pour être sûr de lire les infos d'un appareil précis, il faut que j'identifie le séparateur de début "<|" et celui de la fin "|>" sinon je risque de ne pas avoir les données correctes. comment faire cela?

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    bonjour

    Une des solutions est d'utiliser la fonction "ReadLine()" de la classe SerialPort
    et de configurer, la propriété "NewLine" avec la valeur que tu veux...

    Genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SerialPort toto = new SerialPort()
    ...
    toto.NewLine = ">|";
    ...
     
    // code de lecture
    string mychaine = toto.ReadLine();
    Ainsi, dans myChaine, tu auras le contenu qui s'est terminé par newLine (soit ">|" dans ton cas).

  6. #6
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Par défaut
    est ce la même chose pour identifier le début de ma chaîne?

  7. #7
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Par défaut
    Citation Envoyé par btm007 Voir le message
    est ce la même chose pour identifier le début de ma chaîne?
    Pol63 t'a donné un lien permettant de trouver les réponses à tes questions... Parmi les éléments présentés il y a : String.Split.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/06/2008, 20h33
  2. Scanner un répertoire et traiter les données
    Par Flyer007 dans le forum Web
    Réponses: 6
    Dernier message: 28/08/2007, 13h39
  3. Réponses: 15
    Dernier message: 20/06/2006, 10h29
  4. [VB 6.3] Traiter les données d'un fichier
    Par yaya54 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 21/02/2006, 14h00
  5. Réponses: 4
    Dernier message: 18/08/2003, 09h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo