Partage
  • Partager sur Facebook
  • Partager sur Twitter

Relier Arduino et programme C++

Anonyme
    23 mars 2015 à 20:07:07

    Salut à tous,

    J'ai un gros problème. J'ai ma carte arduino reliée à un bouton. J'ai également un programme C++ qui tourne en tache de fond sur mon PC. J'aimerai qu'à chaque fois que j'appuie sur le bouton, la carte envoie un signal (n'importe quoi peu importe, juste pour que le programme détecte que j'ai appuyé sur le bouton) au COM3 pour que le programme C++ effectue une tâche sur l'ordinateur.

    Pour résumer :

    1. J'appuie sur le bouton
    2. La carte envoie un signal vers le PC
    3. Le programme C++ détecte ce signal
    4. Il simule l'appuie sur une touche

    Je travaille avec QT, voilà mon code (pour l’instant le programme simule la touche lorsque je branche la carte) :

    main.cpp

    #include <QDesktopServices>
    #include <QProcess>
    #include <QDebug>
    #include<QCoreApplication>
    #include"MaClasse.h"
    
    
    int main(int argc,char*argv[])
    {
    
    QCoreApplication a(argc,argv);
    
    MaClasse m_timer;
    
    
    return a.exec();
    }
    

    maClasse.cpp

    #include <QMessageBox>
    #include <iostream>
    #include"MaClasse.h"
    #include <QSettings>
    #include <QPushButton>
    #include <QDebug>
    #include <QProcess>
    #include <QFileInfo>
    #include <QStringList>
    #include <QCoreApplication>
    #include <QTimer>
    #include <QObject>
    #include <QSerialPortInfo>
    #include <windows.h>
    
    
    
    MaClasse::MaClasse()
    {
    
        m_oldPortNames = getAllPortNames();
    
        m_timer=new QTimer(this);
        connect(m_timer,SIGNAL(timeout()),this,SLOT(checkPorts()));
        m_timer->start(2000);
    }
    
    
    QStringList MaClasse::getAllPortNames() {
    
        QStringList ports;
    
        foreach ( QSerialPortInfo portInfo, QSerialPortInfo::availablePorts() ) {
            ports.append(portInfo.portName());
        }
    
        return ports;
    
    }
    
    void MaClasse::checkPorts() {
    
    
    
        // On réccupère tous les ports détectés
        QStringList newPortNames;
        newPortNames = getAllPortNames();
    
    
        // On vérifie si un nouveau port est apparu dans la liste
        foreach (QString port, newPortNames ) {
            if ( !m_oldPortNames.contains(port) ) {
    
                // Ce port est nouveau, il faut donc l'ouvrir !
                keybd_event(VK_RIGHT,0,0,0);
    
            }
    
    
             }
    
        // On met à jour la liste m_oldPortNames
        m_oldPortNames = newPortNames;
    }
    
    
    

    maClasse.h

    #ifndef MACLASSE_H
    #define MACLASSE_H
    #include <QStringList>
    #include<QCoreApplication>
    #include<QTimer>
    #include<QObject>
    
    
    class MaClasse : public QObject {
    
        Q_OBJECT
    
    public:
        MaClasse();
        QStringList getAllPortNames();
    public slots:
        void checkPorts();
    private:
        QStringList m_oldPortNames;
        QTimer*m_timer;
    
    };
    
    #endif // MACLASSE_H
    

    Merci beaucoup d'avance, je ne sais plus quoi faire ! :(

    -
    Edité par Anonyme 23 mars 2015 à 20:07:37

    • Partager sur Facebook
    • Partager sur Twitter
      26 mars 2015 à 12:10:43

      Salut,

      le mieux c'est d'aller lire tes informations comme ceci:

      Côté Arduino:

      a l'appui du bouton, tu écris dans le serial:

      Serial.println("a");

      Ton arduino affichera dans l'interface série "a". Il l'enverra donc à ton pc et donc à tout programme pouvant être connecté au port com demandé.

      Coté C++:

      je ne fais pas trop de c++ je suis plutôt en c# avec visual studio. Regarde ici http://eskimon.fr/108-arduino-304-ordinateur-voie-serie-autre-langage#589475.

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        26 mars 2015 à 17:25:11

        Salut,

        Merci pour la source je vais essayer de bricoler un truc en C++ :)

        • Partager sur Facebook
        • Partager sur Twitter
          26 mars 2015 à 19:33:02

          De rien c'est à ça que sert ce forum ;)
          • Partager sur Facebook
          • Partager sur Twitter

          Relier Arduino et programme C++

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown