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

Bibliothèques Discussion :

TComPort : communication ingérables


Sujet :

Bibliothèques

  1. #1
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 29
    Points : 16
    Points
    16
    Par défaut TComPort : communication ingérables
    Bonjour à toutes et à tous,
    Je re-débute dans la programmation C++ (BTS info indus il y a 10 ans).
    Sans pratique depuis mon BTS, je repars prèsque à zéro.

    Voici ce que je veux faire :

    J'ai une platine PICBASIC reliée à un convertisseur A/N MAXIM 20170.
    Le PIC communique grace à un MAX 232.

    J'ai 6 mesure différentes à réaliser (6 entrées différentes du CAN) à la suite, à envoyer sur le PC et en calculer le résultat avec le PC.
    Ces 6 entrées correspondent à 6 caractères envoyés sur le TXD comme ceci :
    ComPort1->Events = TComEvents();
    ComPort1->Connected=true; //Ouverture de port
    ComPort1->ClearBuffer(true, false);
    ComPort1->WriteStr('\xA5');

    Le PIC réagit et envoi la valeur contenue à l'adresse \xA5 (10100101 en bin)

    Pour l'instant, je ne traite qu'une seule donnée pour les essais.

    Pour lire le buffer, j'ai essayé deux méthodes.

    La 1ere méthode :

    A la suite du WriteStr, j'ai inséré ceci :

    ComPort1->ReadStr(MesureBrut[1][1], 2);
    Mesure[1][1]<<MesureBrut[1][1];
    Calcul();
    ComPort1->Connected=false;
    MesureBrut est un tableau de unsignedchar et mesure un tableau de Int pour les calculs

    1ere question : Pour transformer un unsignedchar en int, << fonctionne ?
    2eme question : Est-ce la bonne méthode ? j'ai vu du read et du readasync.

    La 2eme méthode : Événement RxChar

    void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int count)
    {

    ComPort1->ReadStr(MesureBrut[1][1], 2);
    Mesure[1][1]<<MesureBrut[1][1];
    Calcul();
    Edit3->Text=MesureAffichee[1][1];
    }

    Avec RxChar, il ne se passe strictement rien, j'ai pourtant configurer mon port avec TriggerRxChar à true, ComPort1RxChar défini dans Event.

    Je ne comprends pas comment fonctionne ce TComPort en lecture.
    J'ai compris que les valeurs en RX vont dans le buffer et que readstr lit le buffer.
    La seule chose que j'ai réussi à faire, c'est de mettre le readstr dans un bouton et, pendant le timeout, de déclencher manuellement à partir du pic l'envoi d'une chaine de caractères. Là, je récupère bien les données.


    Ce que je voudrais, c'est avec un bouton :
    Envoyer les 6 commandes à la suite
    remplire le buffer avec mes 6 valeurs
    les transferer dans un tableau de caracteres
    changer les caractere en int pour les calculs
    calculer
    afficher le résultat dans des Edits


    Si quelqu'un peut m'éclairer, je tourne en rond et je ne m'en sors pas.

    Merci d'avance


    PS : le TComPort est bien installé car le port fonctionne dans les 2 sens

  2. #2
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Bonsoir,

    J'ai réussi tout seul à force d'essayer toutes les solutions, on fini par y arriver.
    En fait, pour utiliser l'évènement RxChar, il faut lui donner dans ses propriétés une valeur définie. Il se déclenchera dès la réception de cette valeur.
    Dans mon cas, je fais un writeStr pour lancer la mesure dans le picbasic et celui-ci envoi les données avec comme dernière valeur, le caractère du RxChar.

    Ca parait évident mais je ne l'ai vu écrit nul part.

    J'espère que ça servira a quelqu'un.


    A+

Discussions similaires

  1. [TComPort]Communication Bluetooth (RS232)
    Par bobish dans le forum Composants VCL
    Réponses: 3
    Dernier message: 11/09/2007, 15h32
  2. Communication Kit Velleman K8063 par port série et TComport
    Par carotreger dans le forum Composants VCL
    Réponses: 16
    Dernier message: 07/11/2005, 21h11
  3. communication fichier binaire fichier txt
    Par micdie dans le forum C
    Réponses: 3
    Dernier message: 05/12/2002, 00h19
  4. communication corba
    Par joejoe dans le forum CORBA
    Réponses: 5
    Dernier message: 14/07/2002, 20h53
  5. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05

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