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