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 :

realiser un automate avec C++Builder devant communiquer avec une base de donnée


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mai 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 12
    Par défaut realiser un automate avec C++Builder devant communiquer avec une base de donnée
    Bonjour à tous!
    je suis débutant en C++builder et je travaille sur mon projet de fin d'étude qui porte sur la mise sur pied d'une interface borland qui doit recuperer une donnée dans une table d'une base de donnée Mysql et l'afficher dans un Edit,puis l'écrire sur le port serie.
    Puis attendre la réponse par lecture du même port série,ensuite l'afficher dans un autre Edit ensuite inserrer la donnée de cette réponse dans une autre table de la même base de donnée Mysql.
    NB:tout ce fonctionnement doit s'executer après chaque 2secondes, je voulais utiliser un timer pour çà. Je suis à cours d'idée et voici où je me trouve avec mon code source. jusqu'ici ce code recupere bien la donnée et l'affiche, mais une seule fois.S'il vous plaît aider moi.

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    Unit1.cpp
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma link "CPortCtl"
    #pragma link "CPort"
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Timer1->Enabled=true;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    Timer1->Enabled=false;
    }
    //---------------------------------------------------------------------------
     
     
     
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    // déclarations de nos variables
     
    AnsiString pass;
     
    // On remonte d'une ligne sur notre table
     
    Table1->Last();
     
     
     
    // On récupère la valeur de chaque colonne
     
    pass = Table1->FieldByName("pass")->AsString;
     
     
    // On affiche ces valeurs dans les zones de texte
     
    Edit1->Text = pass;
     
     
    } 
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count)
    {
    AnsiString Str;
    ComPort1->ReadStr(Str, Count);
    Edit2->Text=Str;
     
    }
    //---------------------------------------------------------------------------
     
     
    Unit1.h
    //---------------------------------------------------------------------------
     
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <DB.hpp>
    #include <DBTables.hpp>
    #include "CPortCtl.hpp"
    #include <ExtCtrls.hpp>
    #include "CPort.hpp"
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// IDE-managed Components
            TTable *Table1;
            TDatabase *Database1;
            TEdit *Edit1;
            TLabel *Label1;
            TLabel *Label2;
            TEdit *Edit2;
            TComLed *ComLed1;
            TComLed *ComLed2;
            TLabel *Label3;
            TLabel *Label4;
            TButton *Button1;
            TButton *Button2;
            TQuery *Query1;
            TDataSource *DataSource1;
            TTimer *Timer1;
            TComPort *ComPort1;
            void __fastcall Button1Click(TObject *Sender);
            void __fastcall Button2Click(TObject *Sender);
            //void __fastcall Timer1TimerTimer(TObject *Sender);
            void __fastcall Timer1Timer(TObject *Sender);
            void __fastcall ComPort1RxChar(TObject *Sender, int Count);
    private:	// User declarations
    public:		// User declarations
            __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Par défaut
    1) utilise des listes pour l'affichage ce sera plus facile à suivre.
    2) tu dois faire une boucle sur le nombre d'enregistrement(R) de ta table "Table1->RecorCount, avec un First() et un Next() à chaque valeur de R.
    3) pour enregistret c'est pareil utiliste Edit() ou Append() et Post() à la fin

    Fait déja une lecture de tous tes enregistrement avec visualisation car lç avec un Last() tu te positionne au dernier record.

  3. #3
    Membre habitué
    Inscrit en
    Mai 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 12
    Par défaut
    Merci Fbartolo,
    je vais essayer d'echanger avec vous selon l'ordre de vos suggestions parce que je suis débutant en C++Builder:
    1) utilise des listes pour l'affichage ce sera plus facile à suivre.
    je voudrais vous signaler que dans ce programme, une et une seule donnée doit être affichée.sourtout les données provenant de la base de donnée,donc un Edit me suffit

    2) tu dois faire une boucle sur le nombre d'enregistrement(R) de ta table "Table1->RecorCount, avec un First() et un Next() à chaque valeur de R.
    est ce que ce que vous me proposer ici me permettra d'actualiser l'affichage des données provenant de la base de donnée? parce que j'ai utilisé un timer pour actualiser l'affichage des données dans mon Edit apres chaque 2s, mais malheureusement cela ne s'affiche qu'une seule fois. POUVEZ VOUS ME PROPOSEZ UN CODE PERMETTANT A LA FONCTION TIMER DE S'EXECUTER APRES CHAQUE 2s?

    3) pour enregistret c'est pareil utiliste Edit() ou Append() et Post() à la fin Fait déja une lecture de tous tes enregistrement avec visualisation car lç avec un Last() tu te positionne au dernier record.
    Je dois recupérer uniquement la derniere donnée dans la table Password apres chaque 2s, c'est pour cela que jai utilisé un Last().

    Merci pour votre bonne compréhension

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Par défaut
    Ok, donc un procesus extérieur vient rajouter des données ou modifier la derniere ligne.
    De mémoire ton code est bon(je suis sur iPhone et je ne peut visualiser ton code)
    il te manque juste le rafraichissement de ton dataset ou table:
    soit par un requery, refresh ou plus simple :
    table1->active = false puis true
    j'utiliserais plus dans ton cas un query sql avec méthode Exec()
    la tu est sur de tout avoir au moment ou tu le demande(toutes les deux secondes dans ton timer

  5. #5
    Membre habitué
    Inscrit en
    Mai 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 12
    Par défaut
    Merci beaucoup patron
    maintenant le timer fonctionne correctement mais, j'ai un autre problème: je n'arrive pas à pointer vers Edit1 pour récupérer la donnée presente et l'écrire directement sur le port série avec le composant Tcomport et je souhaite que ces données soit des chaines de caractère:pouvez vous m'aider avec un bout de code source?
    Merci d'avance

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Par défaut
    C'est du delphi, mais facilement transposable:
    http://nono40.developpez.com/tutorie...comport/#LIV-B

    sinon en BCB:
    http://petit.developpez.com/serie/cours_tcomport/

    tu as tout pour faire.

    bon courage.

Discussions similaires

  1. Réponses: 8
    Dernier message: 30/04/2014, 10h50
  2. Réponses: 1
    Dernier message: 02/12/2012, 00h48
  3. Réponses: 2
    Dernier message: 17/10/2010, 21h48
  4. Builder C++ communique avec MS SQL 2005 EXPRESS
    Par anthonyBo dans le forum C++Builder
    Réponses: 0
    Dernier message: 08/07/2009, 16h56
  5. Réponses: 10
    Dernier message: 25/11/2007, 10h30

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