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
| #include "fenetre.h"
#include "qextserialport.h"
#include "qextserialenumerator.h"
#include <QIODevice>
#include <QTimer>
Fenetre::Fenetre() : QWidget()
{
m_clicked=false;
setFixedSize(500, 500);
m_button_test = new QPushButton(this);
m_button_test->move(100,300);
m_button_connection = new QPushButton("Connecter",this);
m_button_connection->move(100,0);
m_button_connection->setCheckable(true);
m_comboPort= new QComboBox(this);
m_comboPort->move(100,100);
QextSerialEnumerator enumerateur; //L'objet mentionnant les infos
QList<QextPortInfo> ports = enumerateur.getPorts();
for(int i=0; i<ports.size(); i++)
{
m_comboPort->addItem(ports.at(i).physName);
}
m_label= new QLabel(" ",this);
m_label->move(100,400);
m_timer=new QTimer(this);
QObject::connect(m_button_connection,SIGNAL(clicked()),this,SLOT(toggle_connection()));
QObject::connect(this,SIGNAL(connect()),this,SLOT(connection()));
QObject::connect(this,SIGNAL(disconnect()),this,SLOT(deconnection()));
QObject::connect(m_timer, SIGNAL(timeout()),this,SLOT(readData()));
}
//Slot pour checker le bouton connection
void Fenetre::toggle_connection()
{
if(m_clicked)
{
m_clicked=false;
emit disconnect();
}
else
{
m_clicked=true;
emit connect();
}
}
//Slot pour le click sur le bouton de connexion
void Fenetre::connection()
{
//on essaie de faire la connexion avec la carte Arduino
//on commence par créer l'objet port série
m_port = new QextSerialPort();
//on règle le port utilisé (sélectionné dans la liste déroulante)
m_port->setPortName(m_comboPort->currentText());
//on règle la vitesse utilisée
m_port->setBaudRate(BAUD9600);
//quelques règlages pour que tout marche bien
m_port->setParity(PAR_NONE);//parité
m_port->setStopBits(STOP_1);//nombre de bits de stop
m_port->setDataBits(DATA_8);//nombre de bits de données
m_port->setFlowControl(FLOW_OFF);//pas de contrôle de flux
//on démarre !
m_port->open(QextSerialPort::ReadOnly);
//change le message du bouton
m_button_connection->setText("Deconnecter");
//on fait la connexion pour pouvoir obtenir les évènements
QObject::connect(m_port,SIGNAL(readyRead()), this, SLOT(waitData()));
}
void Fenetre::deconnection()
{
m_button_connection->setText("Connecter");
//on se déconnecte de la carte Arduino
m_port->close();
//puis on détruit l'objet port série devenu inutile
delete m_port;
}
void Fenetre::waitData()
{
m_timer->start(500);
}
void Fenetre::readData()
{
QString data=m_port->readAll();
m_button_test->setText(data);
} |
Partager