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 :

encoding sur 32 bit [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 131
    Par défaut encoding sur 32 bit
    Bonjour,

    j'ai réalise une petite application qui me permet de récupère des données via un port série.
    un exemple de type de données que je récupère:
    987654321
    039876532

    je travaille sur 32 bit avec c#
    quand j'affiche ces données dans une textBox je trouve les données en plus des symbole:

    98765432103????
    ??4?64?F?????????????_

    le code qui me permet de récupère les données:

    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
     
     
    public string value = string.Empty;
     
     private void serialPort2_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
     
                 while (serialPort2.BytesToRead > 0)
                {
                    //char[] buffer = new char[255]; // on crée un char de 255 caractere
                    byte[] buffer =new byte[255];// nouveau
                    int longueur_bytes_read = serialPort2.Read(buffer, 0, buffer.Length); //lecture du buffer jusqu'a sa longeur buffer.Length
                    //tes characteres sont contenus dans buffer.
                    //on remplit notre string value byte par byte par notre tableau de charactere buffer, le += fait que l'on écrase pas les données qui sont inserées, mais on les ajoutes.
     
                     for (int i = 0; i < longueur_bytes_read; i++)
                     {
                         string donne = Encoding.UTF8.GetString(buffer);             
                         value += donne[i];
     
                       // value = Encoding.UTF8.GetString(buffer);//nouveau
     
                        }
     
                     StatusLabel1.Text = "Transfert en cours...";                 
                    }
     
                }
     
            private void button1_ecrir_Click(object sender, EventArgs e)
            {
     
                textBox1.AppendText(value + "\r\n");
            }
    mais ça na rien changer. pouvez-vous m'aider???

  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
    la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     string donne = Encoding.UTF8.GetString(buffer);
    me semble qu'il faudrait plutôt écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     string donne = Encoding.UTF8.GetString(buffer[i]);
    Comme ça, tu convertis chaque élement du buffer...

    Dans ton code, tu récupères xx éléments dans un buffer[xx], donc, après, pour lire, on fait une boucle avec buffer[xx];

    Maintenant, me semble que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string s = Encoding.UTF8.GetString(buffer, 0, buffer.Length);
    ferait le boulot sans faire une boucle...

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 131
    Par défaut
    bonjour,
    merci beaucoup pour le retour.
    j'ai adapter ton code mais j'ai une erreur : Error 1 The best overloaded method match for 'System.Text.Encoding.GetString(byte[])' has some invalid arguments.

    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
     
    public string value = string.Empty;
     private void serialPort2_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
     
     
                 while (serialPort2.BytesToRead > 0)
                {
                    byte[] buffer =new byte[255];// nouveau
                    int longueur_bytes_read = serialPort2.Read(buffer, 0, buffer.Length); //lecture du buffer jusqu'a sa longeur buffer.Length
                    //tes characteres sont contenus dans buffer.
                    //on remplit notre string value byte par byte par notre tableau de charactere buffer, le += fait que l'on écrase pas les données qui sont inserées, mais on les ajoutes.
     
     
     
                   for (int i = 0; i < longueur_bytes_read; i++)
                     {
                         value += Encoding.UTF8.GetString(buffer[i]);                                       
                    }
                    // StatusLabel1.Text = "Transfert en cours...";                 
                    }
     
                }
     
            private void button1_ecrir_Click(object sender, EventArgs e)
            {
               // textBox1.SelectedText = string.Empty;
                textBox1.AppendText(value.ToString() + "\r\n");
            }
    quand j'ai met juste cette ligne sans la boucle:
    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
     
    public string value = string.Empty;
     private void serialPort2_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
     
     
                 while (serialPort2.BytesToRead > 0)
                {
                    byte[] buffer =new byte[255];// nouveau
                    int longueur_bytes_read = serialPort2.Read(buffer, 0, buffer.Length); //lecture du buffer jusqu'a sa longeur buffer.Length
                    //tes characteres sont contenus dans buffer.
                    //on remplit notre string value byte par byte par notre tableau de charactere buffer, le += fait que l'on écrase pas les données qui sont inserées, mais on les ajoutes.
     
                    value = Encoding.UTF8.GetString(buffer, 0, buffer.Length);
                    }
     
                }
     
            private void button1_ecrir_Click(object sender, EventArgs e)
            {
               // textBox1.SelectedText = string.Empty;
                textBox1.AppendText(value.ToString() + "\r\n");
    j'ai en affichage une seule valeur égale à : 0

  4. #4
    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
    bah faut faire comme tout le monde, débugguer

    Regarder la taille du tableau, etc...

    Essayer du code (en dehors de ta boucle, pour valider la conversion par exemple), etc...

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 131
    Par défaut
    merci beaucoup pour l'aide.

    cette application je l'es faite sur un pc Windows 8 - 64 bits qui fonctionne parfaitement bien.

    ensuit j'ai fait l’exécutable, afin de passe à autre pc (Windows XP - 32-bits ).
    pour passer a 32 bit, j'ai changé donc dans les propriété de l'application, mets en " Release " et en "x86" .

    quand je l’exécute monAppli.exe sur le 32 bit je reçois les données et quand je les affiche dans la textBox, il sont pas afficher correctement (des données + des symbole)

    donc je me suis dit ça peut être au niveau du codage, mais ça n'a rien changer.

    J'ai beaucoup réessayer/vérifier mais je n'y arrive pas.

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 131
    Par défaut
    bonjour,

    Je cherche a savoir comment convertir un ASCII en string a partir d'un en UNICODE ?


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

Discussions similaires

  1. Manipulations sur les bits
    Par ThE_LaSt dans le forum C
    Réponses: 23
    Dernier message: 27/03/2006, 14h22
  2. Addition sur 16 bits de tous les octets d'une chaîne
    Par fkerbourch dans le forum Langage
    Réponses: 6
    Dernier message: 06/07/2005, 11h06
  3. Insérer un entier sur 64 bits dans une base ?
    Par DJZiaK dans le forum SQLite
    Réponses: 1
    Dernier message: 10/05/2005, 17h37
  4. Réel sur 80 bits...
    Par julson dans le forum Assembleur
    Réponses: 12
    Dernier message: 17/05/2004, 16h37
  5. opérations sur les bits d'un byte
    Par petitours dans le forum C++Builder
    Réponses: 4
    Dernier message: 10/02/2004, 20h42

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