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 :

convertir une chaine de caractère dans une collection exploitable


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien détection et monitoring BTP
    Inscrit en
    Février 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien détection et monitoring BTP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2020
    Messages : 4
    Par défaut convertir une chaine de caractère dans une collection exploitable
    Bonjour,

    Je suis débutant en programmation je développe un petit programme qui me permettra de récupérer un log pour l'envoyer dans une "chaine de traitement".
    Ce log doit sortir un format spécifique pour pouvoir être traité par la "chaine de traitement".
    lorsque je le récupère avec la une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    private  string ReadPort()
    {
        string returValue = string.Empty;
     
        try
        {
            SerialPort _serialPort = new SerialPort(cmbCOM.SelectedItem.ToString(), 9600, Parity.None, 8, StopBits.One);
     
            // Set the read/ write timeouts
            _serialPort.ReadTimeout = 2000;
            _serialPort.WriteTimeout = 2000;
            _serialPort.Open();
            _serialPort.WriteLine(comboBox1.Text + "\r");
            Thread.Sleep(1000);
            string message = _serialPort.ReadExisting();
            string[] Datas = message.Split(' ');
            textBox1.Text = message;
            returValue = message;
            _serialPort.Close();
        }
        catch{}
        return returValue;
    }
    je récupère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    log
    Tst 20.6C  Tint 20.3C  Twt 20.7C  Tdcdc 22.5C  Tpcb 20.3C  Tres 20.3C  Taux -64.4C  Ubat 12.60V  Uaus 12.58V  Uklemm 12.58V  Uper 0.74V  UperIn 12.59V  Ust 1.35V  Uzell 112.1mV  ULF1 0.0V  Uref 2.50V  Ubb 0.37V  IntSteiU 0.0000n  Iaus -0.04A  Iper 0.01A  Ist 0.000A  Pst 0.0W  Pper 0.0W  FuellSt 96.2n  LastError 0n  Error 0n  StBtrb 5969.86h  SysBtrb 10638.21h  PcStack 0n  PcAux 17722n  ResF 0n  DHV 318.21n  DC-DC 0.00%  AdW 0n  FS 0n  SysTime 20200228.110423n
    SFC>
    et j'aimerai pouvoir récupérer un format du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    log
    Tst Tint Twt Tdcdc Tpcb Tres Taux Ubat Uaus Uklemm Uper UperIn Ust Uzell ULF1 Uref Ubb IntSteiU Iaus Iper Ist Pst Pper FuellSt LastError Error StBtrb SysBtrb PcStack PcAux ResF DHV DC-DC AdW FS SysTime 
    20.6C  20.3C  20.7C  22.5C  20.3C  20.3C  -64.4C  12.60V  12.58V  12.58V  0.74V  12.59V  1.35V  112.1mV  2.50V  0.0V  0.37V  0.0000n  -0.04A  0.01A  0.000A  0.0W  0.0W  96.2n  0n  0n  5969.86h  10638.21h  0n  17722n  0n  318.21n  0.00%  0n  0n  20200228.110423n
    SFC>
    Donc tous les noms des grandeurs (suivies d'un espace) sur la 2ème ligne,
    puis toutes les valeurs (suivies de deux espaces) sur la 3ème ligne.

    Je suis un peu perdu dans les méthodes à utiliser.
    Dois-je exploiter mon array Datas ? Comment faire ?

    J'utilise cette application comme un exercice pour apprendre à coder. J'ai besoin d'une piste de réflexion pas d'une solution toute prête clé en main.

    Merci d'avance pour votre coup de main.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Par défaut
    Comme tu le souhaites je te propose une façon de faire et pas de code :
    Le tableau Datas va effectivement te servir mais tu dois au préalable compléter la méthode Split utilisée de son option qui retire les entrées vides.
    Ensuite tu pourras effectuer un foreach de Datas et alimenter alternativement 2 chaînes (une pour chaque ligne à construire).
    Une ligne recevra les index pairs, l'autre les index impairs, et tu y ajouteras le nombre d'espaces de séparation souhaités.
    Tu peux simplement de servir d'un int comme compteur.

    Il te reste à le coder et c'est facile. Bon travail…

  3. #3
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    Est-ce-que tu connais exactement le format des données que tu peux recevoir de ton SerialPort ?

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Technicien détection et monitoring BTP
    Inscrit en
    Février 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien détection et monitoring BTP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2020
    Messages : 4
    Par défaut
    Citation Envoyé par Noxen Voir le message
    Est-ce-que tu connais exactement le format des données que tu peux recevoir de ton SerialPort ?
    Salut Noxen,
    Non je ne connais pas le format.
    Je sais juste quelles commandes je dois envoyer pour recevoir tel ou tel résultat.

  5. #5
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    À quoi correspond la séquence de données dans l'exemple de ton premier post ?

    Sinon pour moi on a typiquement un ensemble de clé-valeur. Tu dois pouvoir en faire un Dictionary, mais ça dépend de la fiabilité que tu peux accorder au format de données.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Technicien détection et monitoring BTP
    Inscrit en
    Février 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien détection et monitoring BTP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2020
    Messages : 4
    Par défaut
    Bonsoir Noxen,

    Cette semaine je n'ai pas eu le temps de me remettre dans mon problème.

    Pour répondre à ta question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    log
    Tst 20.6C  Tint 20.3C  Twt 20.7C  Tdcdc 22.5C  Tpcb 20.3C  Tres 20.3C  Taux -64.4C  Ubat 12.60V  Uaus 12.58V  Uklemm 12.58V  Uper 0.74V  UperIn 12.59V  Ust 1.35V  Uzell 112.1mV  ULF1 0.0V  Uref 2.50V  Ubb 0.37V  IntSteiU 0.0000n  Iaus -0.04A  Iper 0.01A  Ist 0.000A  Pst 0.0W  Pper 0.0W  FuellSt 96.2n  LastError 0n  Error 0n  StBtrb 5969.86h  SysBtrb 10638.21h  PcStack 0n  PcAux 17722n  ResF 0n  DHV 318.21n  DC-DC 0.00%  AdW 0n  FS 0n  SysTime 20200228.110423n
    SFC>
    il s'agit de la réponse à la commande "log \r" que j'envoie sur le port série.

    Sinon pour moi on a typiquement un ensemble de clé-valeur. Tu dois pouvoir en faire un Dictionary, mais ça dépend de la fiabilité que tu peux accorder au format de données.
    Je suis en train d'étudier les dictionnaires. On a un format qui est toujours le même. La réponse à "log \r" comportera toujours les mêmes noms (Tst, Tint, ... Ubat, ... Pst, ... LastError, Error ...).

    Merci d'avance pour votre compréhension.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Technicien détection et monitoring BTP
    Inscrit en
    Février 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien détection et monitoring BTP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2020
    Messages : 4
    Par défaut
    Citation Envoyé par Krantz Voir le message
    Comme tu le souhaites je te propose une façon de faire et pas de code :
    Le tableau Datas va effectivement te servir mais tu dois au préalable compléter la méthode Split utilisée de son option qui retire les entrées vides.
    Ensuite tu pourras effectuer un foreach de Datas et alimenter alternativement 2 chaînes (une pour chaque ligne à construire).
    Une ligne recevra les index pairs, l'autre les index impairs, et tu y ajouteras le nombre d'espaces de séparation souhaités.
    Tu peux simplement de servir d'un int comme compteur.

    Il te reste à le coder et c'est facile. Bon travail…
    Merci Krantz !
    Je suis dessus cette après-midi.
    Je reviendrai vers toi quand j'aurais réussi !

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/06/2018, 11h34
  2. Réponses: 1
    Dernier message: 01/02/2008, 17h03
  3. Remplacer une PARTIE de chaine de caractères dans un champ
    Par Turlututuchapopointu dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/08/2005, 11h57
  4. [String]Recherche d'une chaine de caractères dans une autre
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 3
    Dernier message: 29/07/2004, 11h51
  5. recherche d'une chaine de caractère dans une données text
    Par jdeheul dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 17/06/2004, 16h35

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