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++Builder Discussion :

Comment récupérer le contenu d'un Edit et l'envoyer sur le port USB ?


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Par défaut Comment récupérer le contenu d'un Edit et l'envoyer sur le port USB ?
    Bonjour,

    j'ai le contenu d'un Edit avec des valeurs en Héxa (ex: 105DEF) et j'aimerai mettre par exemple Trame[0] = '0x10', Trame[1] = '0x5D', Trame[2] = '0xEF' pour ensuite envoyer la trame sur un module en usb avec la fonction WriteFile.

    J'ai essayé comme ceci mais sans succès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    unsigned char Trame[20];
     
    Trame[0] =  Form1->EditNum->Text.SubString(1,2);
    Le message d'erreur est :
    [BCC32 Erreur] U1.cpp(877): E2034 Impossible de convertir 'AnsiString' en 'unsigned char'
    Comment puis je résoudre mon problème ?

    Merci d'avance et à bientôt !

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Commence par convertir ta chaine String de 2 caractères en char. Va lire ceci:
    http://cpp.developpez.com/faq/bcb/?p...ineapartirhexa

    Ton code devrait ressembler a qqchose comme ceci (je pense):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Trame[0] =  (char)HEX2ASCII(Form1->EditNum->Text.SubString(1,2));

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Par défaut
    Toujours une erreur :

    [BCC32 Erreur] UClient.cpp(877): E2031 Impossible de transtyper de 'AnsiString' en 'char'

  4. #4
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Ajoute .c_str() pour transformer une AnsiString en char
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Trame[0] =  (char)HEX2ASCII(Form1->EditNum->Text.SubString(1,2)).c_str();

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Par défaut
    Bonjour,

    je l'ai fait mais j'ai toujours la même erreur !

    [BCC32 Erreur] UClient.cpp(877): E2031 Impossible de transtyper de 'AnsiString' en 'char'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    	unsigned char Trame [20];
     
     
     
    	Trame[0] =  (char) HEX2ASCII(Form1->EditNum->Text.SubString(1,2).c_str());

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    S'il s'agit de saisir une expression littérale (hexadécimale) pour ensuite la convertir :

    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
     
    //--
    // Pour les parmètres MSD et LSD : 
    // de '0' à '9' ou de 'A' à 'F' (maj ou min)
    //--
    Byte HexToByte(char MSD, char LSD)
    {
    int msd = MSD & 0x0F;
    if(MSD >= 'A') msd = msd + 0x09;
    msd = msd << 4;
     
    int lsd = LSD & 0x0F;
    if(LSD >= 'A') lsd = lsd + 0x09;
     
    return (Byte)(msd + lsd);
    }
    //--
    void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
    {
    AnsiString N = Edit1->Text;
    trame[0] = HexToByte(N[1], N[2]);
    trame[1] = HexToByte(N[3], N[4]);
    trame[2] = HexToByte(N[5], N[6]);
    }
    //--
    A plus !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/11/2010, 16h33
  2. Réponses: 2
    Dernier message: 30/05/2010, 03h36
  3. Comment récupérer le contenu de plusieurs fichiers textes ?
    Par calimero2611 dans le forum Langage
    Réponses: 9
    Dernier message: 19/02/2006, 15h45
  4. [SQL] comment récupérer le contenu de cases à cocher
    Par Viau dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 31/01/2006, 14h56
  5. [Balise XML] Comment récupérer le contenu entre 2 balise?
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/03/2004, 16h36

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