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 :

Découper une chaîne de caractères


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Par défaut Découper une chaîne de caractères
    Bonjour tout le monde,

    Et oui, je viens encore vous sollicitez puisque je rencontre un problème, j'aurais besoin de vos lumières pour m'éclairer car là, j'ai du mal à comprendre.

    En fait, j'aimerais découper une chaîne de caractère. Par compliquer vous allez me dire, puisqu'un simple substring() ferait l'affaire. Oui mais quand je fais ça sur ma chaîne, ma chaîne est déjà découpée en deux et pourtant je ne fais nul part un substring().

    Je vous mets le code complet
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    using System;
    using System.Text;
    using System.Drawing;
    using System.IO.Ports;
    using System.Windows.Forms;
    using System.IO;
     
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            private SerialPort sp = new SerialPort();
            public enum LogMsgType { Incoming, Outgoing, Normal, Warning, Error };
            private Color[] LogMsgTypeColor = { Color.Blue, Color.Green, Color.Black, Color.Orange, Color.Red };
            public string trame = string.Empty;
     
            public Form1()
            {
                InitializeComponent();
     
                sp.BaudRate = 4800;
                sp.Parity = Parity.None;
                sp.StopBits = StopBits.One;
                sp.DataBits = 8;
                sp.ReceivedBytesThreshold = 1;
                sp.RtsEnable = true;
                sp.Handshake = Handshake.None;
                sp.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
     
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                bool erreur = false;
     
                // Si le port est ouvert, il faut le fermer
                if (sp.IsOpen) sp.Close();
                else
                {
                    // Réglage paramètre du port
                    sp.PortName = cmbPortName.Text;
     
                    try
                    {
                        // Ouvrir le port
                        sp.Open();
                    }
                    catch (UnauthorizedAccessException) { erreur = true; }
                    catch (IOException) { erreur = true; }
                    catch (ArgumentException) { erreur = true; }
     
                    if (erreur)
                        MessageBox.Show("Impossible d'ouvrir le port COM. Très probablement, il est déjà en cours d'utilisation, a été supprimé, ou n'est pas disponible.", "COM Port indisponible", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    else
                        MessageBox.Show("Connexion réussi","Port disponible");
                }
            }
     
            // Connexion à la fenêtre du terminal
            private void Log(LogMsgType msgtype, string msg)
            {
                rtfTerminal.Invoke(new EventHandler(delegate
                {
                    rtfTerminal.SelectedText = string.Empty;
                    rtfTerminal.SelectionFont = new Font(rtfTerminal.SelectionFont, FontStyle.Bold);
                    rtfTerminal.SelectionColor = LogMsgTypeColor[(int)msgtype];
                    rtfTerminal.AppendText(msg);
                    rtfTerminal.ScrollToCaret();
                }));
            }
     
            //Convertit un tableau d'octets en une chaîne formatée de chiffres hexadécimaux.
            private string ByteArrayToHexString(byte[] data)
            {
                StringBuilder sb = new StringBuilder();
                foreach (byte b in data)
                sb.Append(Convert.ToString(b, 16).PadLeft(2, '0').PadRight(3, ' '));
     
                return sb.ToString().ToUpper();
            }
     
             public void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                // Si le port est ouvert, le fermer
                if (!sp.IsOpen) return;
                // Obtenir le nombre d'octets en attente dans le tampon du port
                int bytes = sp.BytesToRead;
                // Créez une zone tampon (tableau d'octets) pour stocker les données entrantes
                byte[] buffer = new byte[bytes];
                // Lire les données du port et de le stocker dans la mémoire tampon
                sp.Read(buffer, 0, bytes);
     
                // Montrer à l'utilisateur les données entrantes dans un format hexadécimal
                Log(LogMsgType.Incoming, ByteArrayToHexString(buffer));
                MessageBox.Show((ByteArrayToHexString(buffer).Length).ToString());
            }
        }
    }
    Mon soucis se trouve exactement sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ByteArrayToHexString(buffer).Substring(0, 2)
    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageBox.Show((ByteArrayToHexString(buffer).Length).ToString());
    , je trouve une chaîne de 3 et une chaîne de 24.

    Je ne comprends réellement pas pourquoi elle est déjà prédécoupée, et surtout comment je pourrais faire pour remédier à ça.

    Je vous remercie d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Comment ca tu " je trouve une chaîne de 3 et une chaîne de 24." ?
    Si il n'y a qu'un seul messageBox tu ne peux avoir qu'une seule valeur.
    Si il y 2 messages box c'est parceque tu te trouves dans un évenement et qu'il est appelé 2 fois ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Narizuke Voir le message
    En fait, j'aimerais découper une chaîne de caractère. Par compliquer vous allez me dire, puisqu'un simple substring() ferait l'affaire. Oui mais quand je fais ça sur ma chaîne, ma chaîne est déjà découpée en deux et pourtant je ne fais nul part un substring().
    Je ne suis pas sûr d'avoir tout compris mais ce qu'il faut savoir c'est que Substring n'agit pas l'instance de la chaîne à laquelle on l'applique mais renvoie une valeur de retour qui contiendra la sous-chaîne attendue.

    Sinon expliques-nous plus clairement ton problème.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Par défaut
    Pour répondre à micka132,

    Mon évènement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
    où il y a mon MessageBox n'est appelé qu'une fois si tu regardes bien mon code et c'est bien ça le soucis.

    Pour répondre à h2s84,

    En gros, j'aimerais découper ma chaîne en sous chaîne de taille différentes en fonction de ce que je reçois du port série.

    Par exemple, je reçois 600050005351800051 (c'est de l'héxa), j'aimerais la découper, pour que ça ressemble à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    string s1 = 6;
    string s2 = 0005;
    string s3 = 00053518;
    string s4 =  0005 ;
    string s5 = 1;
    Est-ce plus compréhensible comme ceci, ou faut-il que je fournisse plus d'explication ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Si le découpage respecte une logique prédéfinie alors rien ne t'empêche d'utiliser Substring()

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    string s = "600050005351800051";
    string s1 = s.Substring(0, 1); // // Toujours 1 caractère
    string s2 = s.Substring(s1.Length, 4); // Toujours 4 caractères
    string s3 = s.Substring(s1.Length + s2.Length, 8); // Toujours 8 caractères
    string s4 = s.Substring(s1.Length + s2.Length, s3.Length, 4); // Toujours 4 caractères
    string s5 = s.Substring(s1.Length + s2.Length, s3.Length , s4.Length , 1); // Toujours 1 caractère

    la logique que j'ai utilisée ci-dessus est simple et on part sur le fait que chaque portion de notre chaîne de caractère initiale aura toujours une taille fixe.
    Si cette logique est différente de la tienne alors il faudra nous l'énoncer.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Par défaut
    Ma chaîne ne sera pas toujours de la même taille puisque les informations sortantes du port série sont différentes. Pour définir sa taille, j'ai juste à récupéré le premier chiffre et je sais à quel type de message j'ai à faire, donc ça c'est pas un soucis.

    Mais voici ce que j'obtiens quand je fais les substring() :
    L'index et la longueur doivent faire référence à un emplacement situé dans la chaîne.
    Je remets le code où j'utilise ce que tu m'as donné :

    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
     
    public void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                // Si le port est ouvert, le fermer
                if (!sp.IsOpen) return;
                // Obtenir le nombre d'octets en attente dans le tampon du port
                int bytes = sp.BytesToRead;
                // Créez une zone tampon (tableau d'octets) pour stocker les données entrantes
                byte[] buffer = new byte[bytes];
                // Lire les données du port et de le stocker dans la mémoire tampon
                sp.Read(buffer, 0, bytes);
     
                // Montrer à l'utilisateur les données entrantes dans un format hexadécimal
                string s = ByteArrayToHexString(buffer);
                string s1 = s.Substring(0, 1); // // Toujours 1 caractère
                string s2 = s.Substring(s1.Length, 4); // Toujours 4 caractères
                string s3 = s.Substring(s1.Length + s2.Length, 8); // Toujours 8 caractères
                string s4 = s.Substring(s1.Length + s2.Length + s3.Length, 4); // Toujours 4 caractères
                string s5 = s.Substring(s1.Length + s2.Length + s3.Length + s4.Length, 1); // Toujours 1 caractère
                Log(LogMsgType.Incoming, ByteArrayToHexString(buffer));
                MessageBox.Show(s1 + s2 + s3 + s4 + s5);
     
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageBox.Show(s1 + s2 + s3 + s4 + s5);
    me sert juste pour voir si la concaténation de ma chaîne découpée est similaire à ma chaîne du départ

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Narizuke Voir le message
    Ma chaîne ne sera pas toujours de la même taille puisque les informations sortantes du port série sont différentes. Pour définir sa taille, j'ai juste à récupéré le premier chiffre et je sais à quel type de message j'ai à faire, donc ça c'est pas un soucis.
    Donc je ne vois pas où tu coinces réellement alors que t'as la logique qui te permet de récupérer la taille en fonction du premier caractère ?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Par défaut
    Je vais réexpliquer mon soucis.

    Prenons l'exemple suivant : 251000401220151051
    Si je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageBox.Show(Reverse(ByteArrayToHexString(buffer)).Substring(0,1));
    Je devrais récupérer la valeur 2. Mais, le hic, c'est que j'ai deux MessageBox qui s'affiche, une avec la valeur 2 et l'autre avec la valeur 1. C'est comme si j'avais deux chaines avec :
    chaîne1 = 25 et chaîne2 = 1000401220151051, et pourtant la valeur que je récupère est bien une et une seule chaîne d'après mes fonctions Log() et port_DataReceived() que j'appelle bien qu'une seule fois.

    Du coup, j'essaie de trouver un moyen pour découper ma chaîne comme je l'ai dis dans un précédent post, mais je ne comprends pas pourquoi le MessageBox m'affiche 2 valeurs. Une fois que j'aurais compris, je pense que ça ira tout seul, mais là, perso, j'y pige strictement rien

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Narizuke Voir le message
    Du coup, j'essaie de trouver un moyen pour découper ma chaîne comme je l'ai dis dans un précédent post, mais je ne comprends pas pourquoi le MessageBox m'affiche 2 valeurs. Une fois que j'aurais compris, je pense que ça ira tout seul, mais là, perso, j'y pige strictement rien
    Je pense que micka132 a peut-être raison. Vu que tu te trouves dans un gestionnaire d'évènement il se peut que l'évènement soit déclenché 2 fois d'où le nombre d'affiche de ton MessageBox. Pour être sûr que le problème ne vient pas de là, il faut te désabonner dans le gestionnaire et voir si on a 2 fois le MessageBox.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Par défaut
    Comment ça me désabonner ?

  11. #11
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Tu mets sp.DataReceived -= new SerialDataReceivedEventHandler(port_DataReceived); en début de ta méthode port_DataReceived .

    Par contre ce n'est pas une solution viable, c'est juste pour vérifier...A mon avis s'il y a 2 évenements à la suite c'est qu'il y a une raison (genre message d'initialisation, puis donnée).

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Par défaut
    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sp.DataReceived -= new SerialDataReceivedEventHandler(port_DataReceived);
    j'ai plus rien qui s'affiche à l'écran.

    Par contre toujours les deux MessageBox. C'est comme si mon port série m'envoyait deux informations. La première étant le type de message et le second, toutes les informations relatives à un chrono (c'est-à-dire, le temps, la place, etc.)

  13. #13
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Tu as mis apres l'instruction "return"?
    Parceque peut etre bien que ton event se déclenche également quand sp est closed
    Code C# : 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
             public void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                // Si le port est ouvert, le fermer
                if (!sp.IsOpen) return;
    //Désabonnement à enlever
    sp.DataReceived -= new SerialDataReceivedEventHandler(port_DataReceived);
                // Obtenir le nombre d'octets en attente dans le tampon du port
                int bytes = sp.BytesToRead;
                // Créez une zone tampon (tableau d'octets) pour stocker les données entrantes
                byte[] buffer = new byte[bytes];
                // Lire les données du port et de le stocker dans la mémoire tampon
                sp.Read(buffer, 0, bytes);
     
                // Montrer à l'utilisateur les données entrantes dans un format hexadécimal
                Log(LogMsgType.Incoming, ByteArrayToHexString(buffer));
                MessageBox.Show((ByteArrayToHexString(buffer).Length).ToString());
            }

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Par défaut
    Même sans le return c'est pareil.

    C'est comme si mon port série m'envoyait deux informations. La première étant le type de message et le second, toutes les informations relatives à un chrono (c'est-à-dire, le temps, la place, etc.)
    Je mets le lien vers l'image qui montre comment ce qu'envoie le chrono http://imagesia.com/scan_2bu

  15. #15
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    T'es sur de pas avoir un messageBox à un autre endroit?
    En mode debug pas à pas, tu dois bien voir ce qui se passe non?

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Par défaut
    Ouais je suis sûr j'ai regardé partout. J'ai peut-être relu mon code 100 fois. Mais j'ai bien qu'un seul MessageBox.

    Comme je le disais, c'est comme si je recevais 2 infos de mon chrono, et comme je suis loin d'être un expert en port série, je sais pas si c'est possible ou non que le chrono m'envoie deux infos l'une à la suite de l'autre.

    J'ai essayé de gérer ça par un tableau mais toujours le même soucis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string s = ByteArrayToHexString(buffer);
    char[] tab = s.ToCharArray();
     MessageBox.Show(tab[0].ToString());

  17. #17
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Citation Envoyé par Narizuke Voir le message
    Comme je le disais, c'est comme si je recevais 2 infos de mon chrono, et comme je suis loin d'être un expert en port série, je sais pas si c'est possible ou non que le chrono m'envoie deux infos l'une à la suite de l'autre
    C'est possible en effet que le temps même que tu te désabonnes l'event soit envoyé 2 fois. Apres tu dois avoir des informations dans SerialDataReceivedEventArgs e.
    Peut etre un token, un timestamp, ou que sais-je!
    Apres c'est peut etre dans la doc de l'apareil que tu utilises.
    Mais pour le coup, je ne vois pas comment un messageBox s'ouvre deux fois avec qu'une seule instruction! C'est donc qu'il est appelé 2 fois.


    Edit:je viens de voir que c'est une classe microsoft.
    Une hypothèse parceque j'y connais pas grand chose:
    Il me semble que le flux de donné est limité ( en fonction du baudrate par exemple).
    Dans l'event SerialDataReceivedEventArgs il y a une valeur de type "serial data" avec comme valeur Chars et Eof. Peut etre que le premier event que tu recois est en fait le début du message, et aura pour valeur Chars, alors que le second et la fin et tu auras le Eof. Peut etre qu'il faut donc concatener (en stockant dans une variable de classe) les 2 messages pour avoir le message entier?

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Par défaut
    Citation Envoyé par micka132 Voir le message
    Il me semble que le flux de donné est limité ( en fonction du baudrate par exemple).
    Dans l'event SerialDataReceivedEventArgs il y a une valeur de type "serial data" avec comme valeur Chars et Eof. Peut etre que le premier event que tu recois est en fait le début du message, et aura pour valeur Chars, alors que le second et la fin et tu auras le Eof. Peut etre qu'il faut donc concatener (en stockant dans une variable de classe) les 2 messages pour avoir le message entier?
    Je vais essayer de voir comment je pourrais faire ceci. Voir déjà comment récupérer les valeurs Chars et Eof

  19. #19
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Citation Envoyé par Narizuke Voir le message
    Je vais essayer de voir comment je pourrais faire ceci. Voir déjà comment récupérer les valeurs Chars et Eof
    e.EventType

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Par défaut
    J'ai trouvé ça sur internet sur le e.EventType que j'ai adapté à mon code
    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
    24
    25
    26
    27
    switch (e.EventType)
                {
                    case SerialData.Chars:
                        {
                            // Si le port est ouvert, le fermer
                            if (!sp.IsOpen) return;
     
                            // Obtenir le nombre d'octets en attente dans le tampon du port
                            int bytes = sp.BytesToRead;
                            // Créez une zone tampon (tableau d'octets) pour stocker les données entrantes
                            byte[] buffer = new byte[bytes];
                            // Lire les données du port et de le stocker dans la mémoire tampon
                            sp.Read(buffer, 0, bytes);
     
                            // Montrer à l'utilisateur les données entrantes dans un format hexadécimal
                            Log(LogMsgType.Incoming, ByteArrayToHexString(buffer));
                            string s = Reverse(ByteArrayToHexString(buffer)).Substring(0, 1);
     
                            MessageBox.Show(s);
                            break;
                        }
                    case SerialData.Eof:
                        {
                            sp.Close();
                            break;
                        }
                }
    Mais j'obtiens toujours pas ce que j'aimerais obtenir, une chaîne et non les deux. Je vois pas comment faire la concaténation du Chars et Eof si j'arrive pas à récupérer la valeur -_-'

Discussions similaires

  1. Découper une chaîne de caractères
    Par gege2061 dans le forum Langage
    Réponses: 9
    Dernier message: 07/03/2008, 19h59
  2. [Tableaux] Découper une chaîne de caractères
    Par mix_35 dans le forum Langage
    Réponses: 5
    Dernier message: 17/03/2007, 02h06
  3. Découper une chaîne de caractères
    Par The Lord of Nesquik dans le forum C
    Réponses: 5
    Dernier message: 04/02/2007, 00h20
  4. [VBA-E] découper une chaîne de caractère
    Par jagwar dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/07/2006, 14h07
  5. Comment découper une chaîne de caractères en VBA
    Par TomPad dans le forum Access
    Réponses: 3
    Dernier message: 23/06/2005, 09h58

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