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 :

l'equivalent en c# de chr(255) (vb)


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de lasrevinu
    Inscrit en
    Février 2010
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 215
    Par défaut l'equivalent en c# de chr(255) (vb)
    bonjour,
    lorsque j'envoie le caractere 255 a mon terminal, il est mal interpreté,
    (mon terminal me renvoie les caractere en hexa)
    il me renvoie 3F au lieu de FF

    voici ce que j'ai essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    serialPort1.Write((char)255 + "\r");
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    serialPort1.Write('\xFF'+"\r");
    avec le meme resultat a chaque fois 3f en hexa

    est-ce du à l'encodage?
    je suis en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     serialPort1.Encoding = Encoding.ASCII;
    quelqu'un à-il une idée

  2. #2
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Salut
    J'ai pas fait de liaison série depuis fort longtemps, et je l'ai toujours fait en C ou en ASM donc je vais peut être dire des conneries mais ...

    Tu es obliger d'écrire le "\r" en même temps ?
    Parce que du coup ce que tu passe à ta fonction c'est une string unicode. Du coup tu as moins de contrôle sur ce qui est écris dans ta liaison série.

    Un truc comme ca ne serait-il pas mieux ? (Attention au little/big endian)
    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Int16 value = 0xFF0D; // FF + \r
    serialPort1.Write(value);

  3. #3
    Membre confirmé Avatar de lasrevinu
    Inscrit en
    Février 2010
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 215
    Par défaut
    merci bcp pour ta reponse

    J'ai essayé ta proposition et j'ai une erreur:
    constant value '65293' cannot be converted to short
    c'est bizarre,
    il n'y a pas de table ascii etendue en c# ?
    je voudrais juste recuperer le caractere numero 255
    je concoit que ascii est codé sur 4 bits, il doit y avoir une table etendue sur 8 bits? comment on fait pour avoir les caractere entre 128 et 255
    bon j'arrete de pleurer

    merci pour ta reponse

  4. #4
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    C'est de ma faute, j'ai été un peu vite, j'ai oublié que le C# vérifie les types.
    Int16 fait la bonne taille mais effectivement, la valeur ne rentre pas dedans. La raison est qu'il est signé.
    utilise un "ushort" plutot qu'un Int16.

  5. #5
    Membre confirmé Avatar de lasrevinu
    Inscrit en
    Février 2010
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 215
    Par défaut
    voici la solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    serialport.encoding = encoding.default
    serialPort1.Write('\xFF'+"\r");
    cela envoie FF en hexa

    merci encore ctxnop

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

Discussions similaires

  1. Equivalent de la fct Chr() en VB avec c++ builder6
    Par taquilla dans le forum C++Builder
    Réponses: 6
    Dernier message: 09/02/2008, 16h14
  2. equivalent chr et ord de PHP (caractere<-> code ASCII)
    Par wamania dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/05/2006, 11h51
  3. Réponses: 2
    Dernier message: 28/01/2005, 06h43
  4. [Kylix] Equivalent ShellExec en CLX
    Par Anonymous dans le forum EDI
    Réponses: 7
    Dernier message: 14/08/2002, 11h55
  5. [Kylix] equivalent winsock avec kylix
    Par Victor dans le forum EDI
    Réponses: 2
    Dernier message: 08/05/2002, 07h43

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