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

Lazarus Pascal Discussion :

Gestion de port COM ! [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 11
    Points
    11
    Par défaut Gestion de port COM !
    Bonjour à tous,

    Je vous explique mon soucis, je suis actuellement en stage de licence mesure physique, l’objet de mon stage est de réaliser l’acquisition de grandeur physique mais avant de pouvoir réaliser cela il faut que je réalise un programme pour pouvoir gérer les ports COM.

    Pour cela j’utilise Lazarus sous Windows avec la librairie Synaser qui permet de gérer les ports COM, par la suite mon programme devra être compatible à linux.

    Mon gros problème est que je ne connais pas grand chose en programmation et c’est bien la le problème (surtout en langage Pascal que je n’ai jamais utilisé).

    J’ai commencé par réaliser l’interface graphique :

    Voici se que doit réaliser la Feuille 1

    La feuille 1 est composé de 3 boutons et d'un mémo leur rôles sont:

    un bouton ouvrir doit ouvrir le port COM, permettre le lancement de l'acquisition sur le mémo et bloquer l'accès à la configuration et ouvrir
    Un bouton fermer doit fermer le port COM et redonner l'accès à ouvrir et configuration
    un bouton configuration doit afficher la feuille2 de configuration
    un mémo doit récupérer les données du port COM par événement c'est à dire afficher les données dit que cela est possible

    Voici ce que doit réaliser la feuille2

    La feuille 2 est composé de 2 bouton et 4 TComboBox(menu déroulant)

    Un bouton détection automatique des ports doit détecter les ports COM branchés sur le pc
    Un ComboBox doit configurer le paramètre Vitesse de transfert
    Un ComboBox doit configurer le paramètre bit de donnés
    Un ComboBox doit configurer le paramètre bit d'arrêt
    Un ComboBox doit configurer le paramètre parité
    Un bouton appliquer les paramètres doit appliquer les paramètres sélectionnés au port COM et les retranscrire afin que la librairie synaser permette la bonne configuration du port

    Si quelqu’un pouvais m’aider sa serai cool, je pense que se n'est pas insurmontable pour quelqu'un qui connait le langage mais la personnellement je rame, j'ai réalisé l'interface graphique et la fonction qui permet de lancer la deuxième feuille mais pour réaliser les autres fonctions je n'y arrive pas.

    Je vous met les photo de l'interface et des code sources
    Images attachées Images attachées     

  2. #2
    Membre averti

    Profil pro
    dirlo
    Inscrit en
    Février 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : dirlo

    Informations forums :
    Inscription : Février 2008
    Messages : 83
    Points : 404
    Points
    404
    Par défaut
    regarde si cela peut t'aider:


    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
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,synaser,
      Buttons, ExtCtrls;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        ConnectButton: TButton;
        SendButton: TButton;
        ComboBoxNumeroPort: TComboBox;
        ComboBoxBauds: TComboBox;
        Trame: TEdit;
        Label1: TLabel;
        terminal: TMemo;
        Timer1: TTimer;
     
        procedure ConnectButtonClick(Sender: TObject);
        procedure SendButtonClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
     
      private
        { private declarations }
      public
        { public declarations }
      end; 
     
    var
      Form1: TForm1; 
      PortCom: TBlockSerial;
      TimeOut: integer;
     
    const ligneMax = 30;
    implementation
     
     
    { TForm1 }
     
     
     
     
     
    procedure TForm1.FormCreate(Sender: TObject);
        var l: string;
        p: integer;
     
    //lister les ports disponibles
     
    begin
          l := GetSerialPortNames;
     
      if l >'' then repeat
        begin
        p :=  pos(',',l);
        if p > 0 then
          begin
          form1.ComboBoxNumeroPort.Items.Add(copy(L,1,p-1));
          delete(L,1,p);
          end
        else
          form1.ComboBoxNumeroPort.Items.Add(L);
        end;
        until p = 0;
     
    end;
     
     
     
    procedure TForm1.ConnectButtonClick(Sender: TObject);
     
    var bauds: integer;
    const ligneMax = 30;
     
    begin
         PortCom := TBlockSerial.Create;
         PortCom.RaiseExcept := true;
         with ComboBoxNumeroPort do PortCom.Connect(Items[itemindex]);
         with ComboBoxBauds do bauds := StrToInt(Items[itemindex]);
         PortCom.Config(bauds,8,'N',0,false,false);
         TimeOut := LigneMax*10000 div bauds;
         timer1.enabled := true;
    end;
     
    procedure TForm1.Timer1Timer(Sender: TObject);
    var ligne: string;
         WD: integer;
     
    // a l'ecoute  du peripherique
     
    begin
       timer1.Enabled := false;
       WD := PortCom.WaitingData;
       if WD  > 0 then  terminal.Lines.Add(PortCom.Recvstring(TimeOut));
       timer1.Enabled := true;
    end;
     
    procedure TForm1.SendButtonClick(Sender: TObject);
    begin
      PortCom.SendString(Trame.Text+CRLF);
    end;

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 11
    Points
    11
    Par défaut
    merci parhelie pour le code!!
    cela ma était d'une grande aide
    Aujourd'hui mon programme marche mais j'ai encore quelque soucis !!

  4. #4
    Membre averti

    Profil pro
    dirlo
    Inscrit en
    Février 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : dirlo

    Informations forums :
    Inscription : Février 2008
    Messages : 83
    Points : 404
    Points
    404
    Par défaut
    Avec plaisir.
    Sous linux, GetSerialPortNames ne fonctionne pas avec les USB/Serial. Mais c'est pas bien dfficile à résoudre.
    Bon courage pour la suite.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 11
    Points
    11
    Par défaut
    salut parhelie, ben justement c exactement mon probléme maintenant j'ai mit mon application sous linux et la sa marche plus !!
    j'ai essayer en forçant la connection du port COM manuellement (/dev/ttyUSB0) et la sa marche donc c bien GetSerialPortNames qui ne fonctionne pas
    Je précise que le port COM est branché en USB sur mon PC donc dans synaser j'ai essayer de changer /dev/ttyS* par /dev/ttyUSB* mais sa ne marche toujours pas et la je coince donc si tu pouvais m'expliquer la modification a réaliser sa serai !!!

    Une fois que le code sera sans probléme je le mettrai sur le site on sait jamais si sa peu servir a quelqu'un !!!

  6. #6
    Membre averti

    Profil pro
    dirlo
    Inscrit en
    Février 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : dirlo

    Informations forums :
    Inscription : Février 2008
    Messages : 83
    Points : 404
    Points
    404
    Par défaut
    Tu ne devrais pas bricoler Synaser!

    Moi, j'avais rajouté ces trois lignes à la fin de la procedure Form.Create.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     {$ifdef linux}
       ComboBoxNumeroPort.Items.Add('/dev/ttyUSB0');
       ComboBoxNumeroPort.Items.Add('/dev/ttyUSB1');
      {$endif}
    C'est un peu bourrin, mais ça marche.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 11
    Points
    11
    Par défaut
    oui mais en utilisant cela ta fonction getserialportnames ne te sert a rien en fait tu force le Combobox a mettre c valeurs ??

  8. #8
    Membre averti

    Profil pro
    dirlo
    Inscrit en
    Février 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : dirlo

    Informations forums :
    Inscription : Février 2008
    Messages : 83
    Points : 404
    Points
    404
    Par défaut
    C'est bien vrai, mais ça me suffisait.
    Si tu fais dmesg, tu verra tes ports usbserial. C'est une piste.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 11
    Points
    11
    Par défaut
    Mon application doit forcément reconnaître les ports toute seule !!
    C'est quoi dmesg ???

  10. #10
    Membre averti

    Profil pro
    dirlo
    Inscrit en
    Février 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : dirlo

    Informations forums :
    Inscription : Février 2008
    Messages : 83
    Points : 404
    Points
    404
    Par défaut
    Eh bien quoi, tu peux faire un petit effort!
    Ce qui te manque, ce sont les ports UsbSerial.
    Tu n'as qu'a chercher dans /dev/ les fichiers ttyUSB* et rajoutrer ceux que tu trouves dans ta ComboBoxNumeroPort.
    ainsi, tu ne rajouteras que ceux qui sont réellement disponibles.
    GetSerialPortName fonctionne par contre très bien avec les ttyS*.
    Tu connectes quoi comme appareil? Un Spider?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 11
    Points
    11
    Par défaut
    j'ai chercher sur le pc et je trouve /dev/ttyUSB1 et USB0 mais le truc c'st que je ne veut pas les rajouter par moi méme parce que l'appliction va étre appliquer sur des eee pc que mon entreprise fournira avec ces différent capteur donc en clair l'application ne servira pas qu'a un seul pc mais a plusieur donc je ne ve pa a avoir a refaire la manip a chaque fois pour savoir quelleport sont utilisé par le pc !
    sinon je connecte une base de reception de données en RS 232 !

  12. #12
    Membre averti

    Profil pro
    dirlo
    Inscrit en
    Février 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : dirlo

    Informations forums :
    Inscription : Février 2008
    Messages : 83
    Points : 404
    Points
    404
    Par défaut
    Bon. alors, pourquoi n'écrirais-tu pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     {$ifdef linux}
     If exists('/dev/ttyUSB0') then ComboBoxNumeroPort.Items.Add('/dev/ttyUSB0');
     If exists('/dev/ttyUSB1') then ComboBoxNumeroPort.Items.Add('/dev/ttyUSB1');
     {$endif}
    ou quelque chose dans le genre?

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 11
    Points
    11
    Par défaut
    salut parhelie je pense que ta solution peut marcher j'essaye sa et je te dit le résultat !!

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 11
    Points
    11
    Par défaut
    alors j'ai essayé et la sa marche je compile et pas de problème je recoit bien les bonnes trames sous linux comme sous windows !!

    mais j'ai apris a pas me réjouir trop tot en effet quand je met mon exécutable sur le eee pc l'appliction se lance il me reconnait bien les port USB je paramètre mon port et quand je l'ouvre ben les trames ne s'affiche pas !!!

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 11
    Points
    11
    Par défaut
    voila mon code maintenant il marche et il est entièrement compatible entre XP et Linux et fonctionne également sur le eee PC !!

    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
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
     
     
    unit UnitMain;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
      StdCtrls, synaser, ExtCtrls,Windows;
     
    type
     
      { TFrmMain }
     
      TFrmMain = class(TForm)
        BtnDetectionPort: TButton;
        BTOuvrir: TButton;
        BTFermer: TButton;
        cbChoixPort: TComboBox;
        cbVitessedetransfert: TComboBox;
        cbBitsdedonnees: TComboBox;
        cbParite: TComboBox;
        cbBitdarret: TComboBox;
        chkHardflow: TCheckBox;
        chkSoftflow: TCheckBox;
        DPS: TImage;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        Label5: TLabel;
        Label6: TLabel;
        MemoMain: TMemo;
        procedure BTFermerClick(Sender: TObject);
        procedure BtnDetectionPortClick(Sender: TObject);
        procedure BTOuvrirClick(Sender: TObject);
        procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
        procedure FormCreate(Sender: TObject);
         private
        { private declarations }
      public
        { public declarations }
        procedure DetectPortCOM;
      end; 
     
    var
      FrmMain: TFrmMain;
      ser:TBlockSerial;
      stop : boolean;
     
    implementation
     
    { TFrmMain }
     
    //Etape 1 Détection du port COM
     
    procedure TFrmMain.FormCreate(Sender: TObject);
    begin
      //----- creation du port
      ser := TBlockSerial.Create;
      DetectPortCom;
    end;
     
    procedure TFrmMain.BtnDetectionPortClick(Sender: TObject);
    begin
    DetectPortCOm;
    end;
     
      // ----- détection des port COM linux Win32
     
    procedure TFrmMain.DetectPortCOM;
    var
      l: string;
      p: integer;
     
    begin
         cbChoixPort.Clear;
     
    {$IFDEF WIN32}
          l := GetSerialPortNames;
     
         if l >'' then repeat
           begin
              p :=  pos(',',l);
              if p > 0 then
                begin
                  cbChoixPort.Items.Add(copy(L,1,p-1));
                  delete(L,1,p);
                end
              else
                cbChoixPort.Items.Add(L);
            end;
          until p = 0;
    {$ENDIF}
    {$ifdef linux}
     If FileExists('/dev/ttyUSB0') then cbChoixPort.Items.Add('/dev/ttyUSB0');
     If FileExists('/dev/ttyUSB1') then cbChoixPort.Items.Add('/dev/ttyUSB1');
    {$ENDIF}
    end;
     
    //Etape 2 Configuration du port COM
     
    procedure TFrmMain.BTOuvrirClick(Sender: TObject);
    var
      port : string;
      bauds, databit, stopbit: integer;
      parity : char;
      hardflow, softflow : boolean;
     
    begin
      // ----- évite la modification de la configuration du port lors de son fonctionnement
      cbChoixPort.Enabled:=false;
      cbVitessedetransfert.Enabled:=false;
      cbBitsdedonnees.Enabled:=false;
      cbParite.Enabled:=false;
      cbBitdarret.Enabled:=false;
      chkHardflow.Enabled:=false;
      chkSoftflow.Enabled:=false;
      BTOuvrir.enabled:=false;
     
     
      //----- ouverture du port
      port := cbChoixPort.Items[cbChoixPort.itemIndex];
      ser.Connect(port);
      //ser.RaiseExcept:=true;
      //----- parametrage du port
      case cbVitessedeTransfert.itemindex of
           0 : bauds := 9600;
           1 : bauds := 19200;
           2 : bauds := 38400;
           3 : bauds := 57600;
           4 : bauds := 115200;
      end;
     
      case cbBitsdeDonnees.Itemindex of
           0 : databit := 4;
           1 : databit := 5;
           2 : databit := 6;
           3 : databit := 7;
           4 : databit := 8;
      end;
     
      case cbParite.Itemindex of
           0 : parity := 'N';
           1 : parity := 'O';
           2 : parity := 'E';
           3 : parity := 'M';
           4 : parity := 'S';
      end;
     
      case cbBitdarret.itemindex of
           0 : stopbit := SB1;
           1 : stopbit := SB1andHalf;
           2 : stopbit := SB2;
      end;
     
      softflow := chkSoftflow.checked;
      hardflow := chkHardflow.checked;
     
     
      ser.Config(bauds,databit,parity,stopbit,softflow,hardflow);
     
      // ----- Lancement de l'acquisition des trames
     
    stop := false;
      repeat
         memomain.Lines.Add(ser.RecvTerminated(1000,#13#10));
         Application.ProcessMessages;
      until  stop = true;
    end;
     
     
     
    procedure TFrmMain.BTFermerClick(Sender: TObject);
    begin
      // ----- permet la modification de la configuration du port, une fois fermer
      cbChoixPort.Enabled:=true;
      cbVitessedetransfert.Enabled:=true;
      cbBitsdedonnees.Enabled:=true;
      cbParite.Enabled:=true;
      cbBitdarret.Enabled:=true;
      chkHardflow.Enabled:=true;
      chkSoftflow.Enabled:=true;
      BTOuvrir.enabled:=true;
      // ----- fermeture du port COM
      stop := true;
      ser.CloseSocket;
    end;
     
    procedure TFrmMain.FormCloseQuery(Sender: TObject; var CanClose: boolean);
    begin
      //libérer le port
      ser.CloseSocket;
      ser.Free;
    end;
     
    initialization
      {$I unitmain.lrs}
     
    end.
    Voila j'aimerai quand méme faire une dernière modif !! parce que mon maitre de stage ma dit qu'utiliser repeat, until c'est pas top, il faudrai mieu que je réalise un thead !
    donc si quelqu'un pouvais m'expliquer vite fait !!

    Parhelie si tu as l'occasion d'essayer mon code sa serai cool de me dire si sa marche nikelchez toi !! et est ce que tu sais si synapse peut gérer les port ethernet ??

    en tout cas merci pour ton aide précieuse !!
    Images attachées Images attachées  

  16. #16
    Membre averti

    Profil pro
    dirlo
    Inscrit en
    Février 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : dirlo

    Informations forums :
    Inscription : Février 2008
    Messages : 83
    Points : 404
    Points
    404
    Par défaut
    Salut,
    Parhelie si tu as l'occasion d'essayer mon code sa serai cool de me dire si sa marche nikelchez toi
    Je verrai ça cet aprés midi.
    il faudrai mieu que je réalise un thead !
    donc si quelqu'un pouvais m'expliquer vite fait !!
    tu as un exemple de thread : ..../lazarus/examples/multithreading.
    est ce que tu sais si synapse peut gérer les port ethernet ??
    Jette ausi un coup d'oeil sur les composants Inet.
    @+

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 11
    Points
    11
    Par défaut
    Je verrai ça cet aprés midi.


    tu as un exemple de thread : ..../lazarus/examples/multithreading.
    sa à l'air bien compliquer cette affaire de thread !!!

    Jette ausi un coup d'oeil sur les composants Inet.
    tu es sur que les composant Inet sont applicables sous Lazarus, avec mes recherches je trouve qu'il sont utilisés avec VB

  18. #18
    Membre expérimenté
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Points : 1 688
    Points
    1 688
    Par défaut
    Bonjour,

    Inet Fonctionne très bien avec Lazarus

    Inet pour Lazarus

    @+

  19. #19
    Membre averti

    Profil pro
    dirlo
    Inscrit en
    Février 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : dirlo

    Informations forums :
    Inscription : Février 2008
    Messages : 83
    Points : 404
    Points
    404
    Par défaut
    sa à l'air bien compliquer cette affaire de thread !!!
    C'est en effet pour faire plus simple que j'avais utilisé un timer.

    Si on avait écrit le programme en GCC, on aurait été obligé d'utiliser un fork (voir ici).

    Le timer permet d'éviter d'avoir à créer un processus. Pourquoi s'en priver?
    En adaptant son <interval> à la fréquence d'échantillonnage de l'instrument, le TimeOut de la fonction TBlockSerial.RcvTerminated à la longueur des trames attendues et à la vitesse de transmission, on obtient un résultat tout à fait satisfaisant, il me semble.

    Peut-être pas pour les puristes.

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 11
    Points
    11
    Par défaut
    salut parhelie !!

    alors j'ai supprimer le timer car mon maître de stage me la demander, parce que dans notre cas on va receptionné trés rapidement les tramesen dessous de 18 ms par trame et il ma dit que le timer ne permettait de le faire !!

    tu a pu tester le programme sinon ?

    je ne peut pas t'envoyer l'exe car je ne peut pas la mettre en pièce jointe !!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Gestion du Port COM
    Par megamario dans le forum Embarqué
    Réponses: 6
    Dernier message: 04/07/2012, 15h43
  2. [IO] PortSerie Gestion des ports COM
    Par maxdwarf dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/11/2007, 18h45
  3. Gestion du port COM en RS232
    Par bkhbkh dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 08/06/2007, 00h47
  4. Réponses: 4
    Dernier message: 07/04/2006, 18h08
  5. Gestion de deux ports COM
    Par chourmo dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 15/12/2005, 15h03

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