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
| #include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QApplication>
#include <QSerialPortInfo>
#include <QSerialPort>
#include <QDebug>
#include <QThread>
#include <QIODevice>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this); // Je créee ma fenetre avec le fichier forms
// Au démarrage je cache le bouton de déconnexion
ui->BoutonDeconnexion->setVisible(false);
// Je récupére les ports disponibles
QList<QSerialPortInfo> com_ports = QSerialPortInfo::availablePorts();
QSerialPortInfo port;// Je créer un attribut de type "QSerilPort nommé "port"
foreach(port, com_ports) // Je remplis la combobox avec la liste des ports disponibles
{
ui->Combo_Port->addItem(port.portName());
}
}
MainWindow::~MainWindow()
{
delete ui;
}
/**************************************************************************
Cette fonction envoi la trame pour ARRETER quand on relache le Bouton
**************************************************************************/
void MainWindow::on_Bouton_Avance_released()
{
// Je stoppe les moteurs
//je creer un tableau de bytes pourt stocker ma trame à envoyer
QByteArray trame_arret;
trame_arret.resize(10); // Je lui affecte 10 cases
trame_arret[0] = 2; // je le remplis de ma série de bytes
trame_arret[1] = 0;
trame_arret[2] = 6;
trame_arret[3] = 128;
trame_arret[4] = 128;
trame_arret[5] = 128; // je le remplis de ma série de bytes
trame_arret[6] = 128;
trame_arret[7] = 0;
trame_arret[8] = 128;
trame_arret[9] = 132;
serial.write(trame_arret); // J'envoie la trame au port serie
}
/**************************************************************************
Cette fonction envoi la trame pour AVANCER quand on clic sur le Bouton
Le Bouton est configuré en auto-repaeat avec delay 100ms
**************************************************************************/
void MainWindow::on_Bouton_Avance_pressed()
{
//je creer un tableau de bytes pourt stocker ma trame à envoyer
QByteArray trame;
trame.resize(10); // Je lui affecte 10 cases
trame[0] = 2; // je le remplis de ma série de bytes
trame[1] = 0;
trame[2] = 6;
trame[3] = 150;
trame[4] = 128;
trame[5] = 128; // je le remplis de ma série de bytes
trame[6] = 128;
trame[7] = 0;
trame[8] = 128;
trame[9] = 146;
serial.write(trame); // J'envoie la trame au port serie
/* ZONE DE TEST
unsigned char Trame[]={2,0,6,150,128,128,128,0,128,146};
serial.write(Trame[0]);
qint64 QIODevice::write(arraybytes[], 10);
serial.write(arraybytes[0]); // J'envoie la trame au port serie
QIODevice::write(arraybytes[0], 10);
*/
}
/****************************************************************************
Cette fonction Connecte le port selectionné dans la combobox et le configure
****************************************************************************/
void MainWindow::on_BoutonConnexion_clicked()
{
// Je determine le nom du PORT COM par ce qui est selectionné dans la combobox
serial.setPortName(ui->Combo_Port->currentText());
// Je convertie en une valeur int, le texte selectionné dans la combo-box baud
int Valeur = ui->Combo_Baud->currentText().toInt();
serial.setBaudRate(Valeur); // Je determine la valeur du baudrate
// J'ouvre le PORT COM
if(serial.open(QIODevice::ReadWrite)) // Si le port est correctement ouvert je le configure
{
if(!serial.setDataBits(QSerialPort::Data8))
qDebug()<<serial.errorString();
if(!serial.setParity(QSerialPort::NoParity))
qDebug()<<serial.errorString();
if(!serial.setStopBits(QSerialPort::OneStop))
qDebug()<<serial.errorString();
if(!serial.setFlowControl(QSerialPort::NoFlowControl))
qDebug()<<serial.errorString();
// JE signale à la console que le port est ouvert
qDebug()<<"Le PORT"<<ui->Combo_Port->currentText()<<" est ouvert ";
//Je modifie les Boutons
ui->BoutonConnexion->setVisible(false);
ui->BoutonDeconnexion->setVisible(true);
}
else // Si le port n'as pas été ouvert je l'indique
{
qDebug()<<"PORT"<<ui->Combo_Port->currentText()<<" n'a pas été ouvert. Erreur: "<<serial.errorString();
//Je modifie les Boutons
ui->BoutonConnexion->setVisible(true);
ui->BoutonDeconnexion->setVisible(false);
}
}
/********************************************************
Cette fonction ferme la connexion
********************************************************/
void MainWindow::on_BoutonDeconnexion_clicked()
{
ui->BoutonConnexion->setVisible(true); // J'affcihe le >Btn connexion
ui->BoutonDeconnexion->setVisible(false); // JE cache le Btn déconnexion
qDebug()<<"La connexion du PORT"<<ui->Combo_Port->currentText()<<" est fermée";
serial.close();
} |
Partager