 |
Ecran-DARTS
1.1
BTS SNIR LaSalle Avignon 2021
|
Aller à la documentation de ce fichier.
25 qDebug() << Q_FUNC_INFO;
37 qDebug() << Q_FUNC_INFO;
60 localDevice.setHostMode(QBluetoothLocalDevice::HostDiscoverable);
65 connect(&
localDevice, SIGNAL(
error(QBluetoothLocalDevice::Error)),
this, SLOT(
error(QBluetoothLocalDevice::Error)));
67 QList<QBluetoothAddress> remotes;
69 if(remotes.size() > 0)
70 qDebug() << Q_FUNC_INFO << remotes;
73 qDebug() << Q_FUNC_INFO <<
"Pas de Bluetooth !!!";
90 serveur =
new QBluetoothServer(QBluetoothServiceInfo::RfcommProtocol,
this);
97 qDebug() << Q_FUNC_INFO <<
"Serveur en attente de connexion";
114 qDebug() << Q_FUNC_INFO <<
"Arrête le serveur Bluetooth";
141 qDebug() << Q_FUNC_INFO;
157 qDebug() << Q_FUNC_INFO;
172 qDebug() << Q_FUNC_INFO <<
socket->isOpen();
183 qDebug() << Q_FUNC_INFO <<
"Déconnexion socket";
197 qDebug() << Q_FUNC_INFO <<
trame;
209 donnees =
socket->readAll();
210 qDebug() << Q_FUNC_INFO << donnees;
212 trame += QString(donnees);
238 const QString DEBUT_TRAME =
"$";
239 const QString ENTETE_TRAME =
"DARTS";
240 const QString DELIMITEUR_CHAMP =
";";
241 const QString DELIMITEUR_FIN =
"\r\n";
242 const QString TRAME_PARTIE =
"START";
243 const QString TRAME_TOUCHE =
"HIT";
244 const QString TRAME_ACQUITTEMENT =
"OK";
245 const QString TRAME_REINITIALISATION =
"RESET";
246 const QString TRAME_FIN =
"FIN";
247 bool trameTraitee =
false;
252 if(
trame.startsWith(DEBUT_TRAME + ENTETE_TRAME) &&
trame.endsWith(DELIMITEUR_FIN))
255 trame.remove(DELIMITEUR_FIN);
257 if(
trame.startsWith(DEBUT_TRAME + ENTETE_TRAME + DELIMITEUR_CHAMP + TRAME_PARTIE))
264 qDebug() << Q_FUNC_INFO <<
trame <<
"trame de début";
265 QStringList champs =
trame.split(
";");
266 qDebug() << Q_FUNC_INFO << champs;
269 QStringList nomsJoueur;
270 for(
int i = 0; i < nbJoueurs; ++i)
276 envoyer(DEBUT_TRAME + ENTETE_TRAME + DELIMITEUR_CHAMP + TRAME_ACQUITTEMENT + DELIMITEUR_FIN);
279 else if(
trame.startsWith(DEBUT_TRAME + ENTETE_TRAME + DELIMITEUR_CHAMP + TRAME_TOUCHE))
283 qDebug() << Q_FUNC_INFO <<
trame <<
"trame de touche";
284 QStringList champs =
trame.split(
";");
285 qDebug() << Q_FUNC_INFO << champs;
286 int idTouche = (champs.at(
CHAMP_ID)).toInt();
291 envoyer(DEBUT_TRAME + ENTETE_TRAME + DELIMITEUR_CHAMP + TRAME_ACQUITTEMENT + DELIMITEUR_FIN);
303 else if(
trame.startsWith(DEBUT_TRAME + ENTETE_TRAME + DELIMITEUR_CHAMP + TRAME_REINITIALISATION))
307 qDebug() << Q_FUNC_INFO <<
trame <<
"trame réinitialisation";
310 envoyer(DEBUT_TRAME + ENTETE_TRAME + DELIMITEUR_CHAMP + TRAME_ACQUITTEMENT + DELIMITEUR_FIN);
313 else if(
trame.startsWith(DEBUT_TRAME + ENTETE_TRAME + DELIMITEUR_CHAMP + TRAME_FIN))
317 QStringList champs =
trame.split(
";");
322 qDebug() << Q_FUNC_INFO <<
trame <<
"trame de fin";
325 envoyer(DEBUT_TRAME + ENTETE_TRAME + DELIMITEUR_CHAMP + TRAME_ACQUITTEMENT + DELIMITEUR_FIN);
330 qDebug() << Q_FUNC_INFO <<
trame <<
"inconnue !";
331 trameTraitee =
false;
339 qDebug() << Q_FUNC_INFO <<
trame <<
"incomplète !";
340 trameTraitee =
false;
354 if (
localDevice.pairingStatus(adresse) == QBluetoothLocalDevice::Paired ||
localDevice.pairingStatus(adresse) == QBluetoothLocalDevice::AuthorizedPaired)
356 qDebug() << Q_FUNC_INFO << adresse.toString() <<
"appairé";
360 qDebug() << Q_FUNC_INFO << adresse.toString() <<
"non appairé";
370 qDebug() << Q_FUNC_INFO << adresse;
381 qDebug() << Q_FUNC_INFO << erreur;
void error(QBluetoothLocalDevice::Error erreur)
Renvoie une erreur.
int etatPartie
Défini les états de la partie.
void tramePartieFinRecue(QString leGagnant)
Signal qui est envoyer quand la trame de fin et reçu.
void connexionMobileDarts()
Signal qui est envoyer lors de la connection Bluetooth.
QBluetoothLocalDevice localDevice
L'interface add Widjet Bluetooth de la Raspberry Pi.
void deviceConnected(const QBluetoothAddress &adresse)
Vérifie si l'appreille est connecter.
static const QString serviceNom(QStringLiteral("ecran-darts"))
#define ETAT_PARTIE_ATTENTE
Quand la partie est en attente.
~Communication()
Déstruteur de la classe Communication.
void connexionAppareil()
Signal qui est envoyer quand l'appareil est connecter.
#define CHAMP_MULTIPLICATEUR
Le champ qui contient le valeur du multiplicateur.
void recevoir()
Recoit les trames envoyer.
void partieEnCours(int etatPartie)
Signal qui change l'état de la partie et qui la met en cours.
void envoyer(QString trame)
Envoie la trame.
bool traiterTrame()
Méthode qui traite la trame.
QString localDeviceName
Le nom de l'appareil.
#define ETAT_PARTIE_FIN
Quand la partie est fini.
QBluetoothServiceInfo serviceInfo
Informations sur le service bluetooth.
QBluetoothServer * serveur
Le serveur Bluetooth.
#define CHAMP_DEBUT_NOM_JOUEUR
Le champ qui contient le nom des joueurs.
void connecter()
Connecte la socket de communication Bluetooth.
#define CHAMP_ID
Le champ qui contient l'identifiant de la touche.
void deconnexionAppareil()
Signal qui est envoyer quand l'appareil est déconnecter.
void tramePartieRecue(QString typePartie, int nbJoueurs)
Signal qui contient le type de partie et le nombres de joueurs.
QBluetoothSocket * socket
La socket de communication Bluetooth.
void deconnecter()
Méthode qui déconnect le bluetooth.
#define ETAT_PARTIE_EN_COURS
Quand la partie est en cours.
void socketDisconnected()
Déconnecte la socket de communication Bluetooth.
void listeJoueurs(QStringList nomsJoueur)
Signal qui contient la liste de nom des joueurs.
#define CHAMP_TYPE_PARTIE
Le champ qui définie le type de partie.
void deviceDisconnected(const QBluetoothAddress &adresse)
Emet le signal deconnexionAppareil()
static const QString serviceUuid(QStringLiteral("0000110a-0000-1000-8000-00805f9b34fb"))
void configurer()
Méthode qui configure la connexion Bluetooth en mode serveur.
void partieFini(int etatPartie)
Signal qui change l'état de la partie et qui la met en attente.
bool estConnecte()
Méthode qui vérifie la connection Bluetooth.
void deconnexionMobileDarts()
Signal qui est envoyer lors de la déconnection Bluetooth.
Déclaration de la classe Communication.
#define CHAMP_NB_JOUEURS
Le champ qui contient le nombre de joueurs.
Communication(QObject *parent=nullptr)
Constructeur de la classe Communication.
void trameReinitialisationRecue()
Signal qui est envoyer quand la trame de reinitialisation et reçu.
void arreter()
Méthode qui arrête le serveur Bluetooth
QString trame
Attribut qui contient la trame.
#define CHAMP_TOUCHE
Le champ qui contient le valeur de la touche.
void trameToucheRecue(int id, int touche, int multiplicateur)
Signal qui contient l'identifiant de la touche, la valeur de la touche et le multiplcateur de touche.
void effacerTrame()
Méthode qui efface la trame.
void demarrer()
Méthode qui démarre le serveur Bluetooth.