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 :

Code ASCII étendu. [Débutant]


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2012
    Messages : 10
    Par défaut Code ASCII étendu.
    Bonjour,

    Pour un projet dans lequel je communique avec un matériel sur le port com (RS232 donc), je dois récupérer des "events" composés de caractère ASCII envoyé par ce matériel.
    Chaque event envoyé est terminé par un checksum de 2 caractères (qui correspond au modulo 256 de la somme de tous les caractères), le problème est que certains caractères font partie d'une table ASCII étendu et j'ignore comment faire.

    Pour l'instant, ma méthodologie est de récupérer le message et le mettre en en string, ensuite mettre chaque caractère dans un tableau et parcourir ce tableau en convertissant les caractères en ASCII:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int total = 0;
    string data;
     
    char[] values = data.ToCharArray();
    foreach (char letter in values)
    {
            int value = Convert.ToInt32(letter);
            total = total + value;
    }
    int i_checksum = total % 256;
    Pourriez-vous me dire comment récupérer le code ASCII d'une table étendue?



    Merci d'avance.

  2. #2
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Il faut jouer avec l'encodage, mais pour ça il faut connaitre le code page de ton ASCII étendu.

    Sur le principe, un truc comme ça devrait te donner satisfaction : (pour le code page 1250)
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    Encoding.GetEncoding(1250).GetChars(Encoding.GetEncoding(1250).GetBytes(data));

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2012
    Messages : 10
    Par défaut
    Tout d'abord, merci d'avoir répondu aussi rapidement.

    Ensuite, que veux-tu dire par code page?

    Tout ce que je sais, c'est que l'un des caractères que je veux récupérer est un carré noir qui a comme qui correspond au code FE en hexa (254 en décimal).

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2012
    Messages : 10
    Par défaut
    OK, je sais ce que c'est qu'un code page . Je pense avoir trouvé le bon (437) mais lorsque je veux tester le caractère dans un MessageBox, il n'arrive pas à l'afficher. Par ex, il affiche un carré blanc au lieu d'un c cédille.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2012
    Messages : 10
    Par défaut
    Bonjour,

    Je reviens car je rencontre des difficultés pour récupérer le code ASCII d'un certains caractère: "■". Je le retrouve dans le code page 437, il correspond au code ASCII 254 mais lorsque je le reçois du port série, je reçois un point d'interrogation (ASCII: 3F) ce qui fait que mon calcul de checksum est faux. Je ne comprend pas pourquoi il ne le reconnait pas ou bien dois-je lui dire d’être en UTF-8?

    Voici ce que je fais pour l'encodage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SerialPort sp = new SerialPort();
    sp.Encoding = System.Text.Encoding.GetEncoding(437);


    Merci d'avance.

  6. #6
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2012
    Messages : 10
    Par défaut
    Je retire ce que j'ai dit, c'est OK.

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

Discussions similaires

  1. Code ascii étendu
    Par enzo68290 dans le forum VB.NET
    Réponses: 10
    Dernier message: 09/02/2011, 22h40
  2. Code ASCII étendu
    Par darkwall_37 dans le forum Débuter
    Réponses: 23
    Dernier message: 21/10/2009, 11h01
  3. Code ASCII du symbole Euro
    Par FW-S dans le forum Delphi
    Réponses: 9
    Dernier message: 03/04/2007, 01h27
  4. [Hardware portable] Comment entrer un code Ascii?
    Par l.sage dans le forum Ordinateurs
    Réponses: 13
    Dernier message: 11/08/2005, 13h04
  5. [TP]Code ASCII.
    Par franck H dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 18/01/2004, 19h28

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