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 :

Problème de communication série entre un Arduino et mon PC [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut Problème de communication série entre un Arduino et mon PC
    Bonjour à toutes et à tous,

    Je voudrais faire communiquer un Arduino avec mon PC via la liaison série. Pour ce faire, j'ai écrit une petite application : "LitCom" qui lit et écrit sur un port série en indiquant les paramètres qui vont bien. J'utilise un composant "TBlockSerial" de l'unité "Synaser". Voilà la procédure qui lit le port série.

    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
    procedure TForm1.ConnecterClick(Sender: TObject);
    begin
      if Assigned(PortCOM) then
        PortCOM.Free;
      Stop:= False;
      PortCOM:= TBlockSerial.Create;
      PortCOM.OnStatus:= @OnDistoXStatus;
      NbBauds:= StrToInt(ChoixBauds.Items[ChoixBauds.ItemIndex]);
      try
        PortCOM.Connect(NomPort.Items[NomPort.ItemIndex]);
        PortCOM.Config(NbBauds, 8, 'N', 1, False, False);
        while not Stop do
        begin
          try
            InfoCOM:= PortCOM.RecvString(2000);
            if InfoCOM <> '' then
              MemoData.Lines.Add(InfoCOM);
            Application.ProcessMessages;
          except
          end;
        end;
      finally
        DeconnecterClick(Sender);
      end;
    end;
    J'ai écrit un petit sketch Arduino (Pro Mini) pour faire le test :

    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
    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
      delay(500);
      Serial.println("Initialisation");
    }
     
    void loop() {
      // put your main code here, to run repeatedly:
      if (Serial.available()) {
        String data = Serial.readString();
        Serial.println(data);
      }
      Serial.print("Essai de ");Serial.println("Dialogue avec le PC");
      delay(500);
    }
    Dans un premier temps, je teste mon sketch avec le moniteur série de l'IDE Arduino : ça fonctionne très bien.

    Si je débranche mon Arduino du PC et que je le reconnecte, les échanges reprennent sans autre forme de procès. Si j'appuie sur le bouton de reset de mon Arduino, tout repart normalement.

    Maintenant, laissant branché mon Arduino sur le PC, je ferme l'IDE Arduino et je lance mon appli : j'établis la connexion et, Oh merveille, mon appli joue le même rôle que le moniteur Série de l'IDE.

    Si j'appuie sur le bouton d'initialisation de mon Arduino, la séquence reprend à l'initialisation : parfait.

    Maintenant, je déconnecte mon Arduino puis le reconnecte. Là ça ne va plus du tout. Mon appli n'échange plus avec l'Arduino, quoi que je fasse ; réinitialisation de l'Arduino, déconnexion et reconnexion de mon appli, c'est le silence total.

    Que je fasse les essais sous Windows 10 ou Ubuntu, le résultat est le même.

    Si j'active la ligne 7 de mon appli ( PortCOM.OnStatus:= @OnDistoXStatus), que ça fonctionne ou pas, j'ai les mêmes messages.

    Avez-vous une idée de ce qui cloche ?

    Cordialement.

    Pierre.

  2. #2
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    En fin de compte, le problème venait du circuit d'interface USB <--> Port série utilisé avec mon Arduino Pro Mini. En en utilisant un autre type ou avec d'autres circuits Arduino (Nano par exemple) le problème n’existe plus.

    Cordialement.

    Pierre.

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

Discussions similaires

  1. Communication bluetooth entre deux cartes Arduino
    Par raoudha1 dans le forum Arduino
    Réponses: 4
    Dernier message: 16/10/2018, 15h35
  2. Communication ethernet entre Arduino et QT
    Par PetitTonnerre dans le forum Arduino
    Réponses: 1
    Dernier message: 30/05/2018, 10h01
  3. Communication bluetooth entre pc et Arduino
    Par Rooobin dans le forum Arduino
    Réponses: 3
    Dernier message: 10/05/2018, 22h46
  4. Réponses: 10
    Dernier message: 27/03/2018, 21h07
  5. Communication bluetooth entre 2 arduinos
    Par synapsologic dans le forum Arduino
    Réponses: 8
    Dernier message: 02/05/2016, 16h26

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