Outils pour utilisateurs

Outils du site


tpqt

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tpqt [2018/02/08 10:50]
bvandepo
tpqt [2019/04/11 17:16] (Version actuelle)
bvandepo
Ligne 1: Ligne 1:
-===== TP Initiation à l'API Réseau de QTCreator et utilisation d'un réseau local pour l'​échange de données via  sockets UDP===== ​ 
  
-Ce TP est la suite du tp[[tppic]]+{{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_pic/​warning.jpeg}} 
 +<color red> 
 +POUR ACCEDER A L'​INTEGRALITE DU SUJET DE TP: 
 +</​color>​
  
 +<color red>
 +Si vous êtes en salle ER2AU, se connecter (en cliquant en haut à droite sur s'​identifier) en tant que :  utilisateur=au,​ mot de passe=au ​
 +</​color> ​  
  
 <color red> <color red>
-SE LOGGER EN +Si vous êtes en salle ER2EN, se connecter (en cliquant en haut à droite sur s'​identifier) en tant que :  utilisateur=en,​ mot de passe=en ​    
 +</​color>​
  
-utilisateur;​ au, mot de passe; au    si vous êtes en salle ER2AU+Polycopié du cours: https://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_pic/​cours_preparation_pic_qt_six.pdf
  
-utilisateur;​ en, mot de passe; en    si vous êtes en salle ER2EN +et:   ​{{https:​//​homepages.laas.fr/​bvandepo/​files/​iut/​tp_qt/​cours_POO_intro9_2019.pdf}}
-</color>+
  
-Document de cours: ​ {{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_qt/​coursPOO2015.pdf}} 
  
 +
 +===== TP Initiation à l'API Réseau de QTCreator et utilisation d'un réseau local pour l'​échange de données via  sockets UDP===== ​
 +
 +Ce TP est la suite du tp: [[tppic]]
 +
 + 
 + 
  
 __Objectifs :__ __Objectifs :__
Ligne 34: Ligne 45:
 ====Utilisation de l'​application BroadcastReceiver sur les PC étudiant==== ====Utilisation de l'​application BroadcastReceiver sur les PC étudiant====
 L'​application que vous devez développer vous est fournie dans un premier temps afin que vous la voyez fonctionner et sachiez ce que vous devez faire. Une application fonctionnant sur le PC et simulant le PIC est également fournie pour faciliter le développement et permettre aux étudiants n'​ayant pas terminé le programme sur le PIC de faire ce TP. L'​application que vous devez développer vous est fournie dans un premier temps afin que vous la voyez fonctionner et sachiez ce que vous devez faire. Une application fonctionnant sur le PC et simulant le PIC est également fournie pour faciliter le développement et permettre aux étudiants n'​ayant pas terminé le programme sur le PIC de faire ce TP.
- +  ​
- +
-<ifauth @au> +
- ​Récupérer le dossier Commun/​2AU/​PIC/​ si ce n'est pas déjà fait. Veillez à ne pas écraser les fichiers que vous avez déjà écrit pour le PIC! +
-</​ifauth>​ +
- +
-<ifauth @en> +
 Récupérer les fichiers nécessaires en saisissant dans une console: Récupérer les fichiers nécessaires en saisissant dans une console:
   cd ~/   cd ~/
Ligne 50: Ligne 54:
   ./​testenlocal.sh  ​   ./​testenlocal.sh  ​
   echo '​fini'​   echo '​fini'​
-</​ifauth>​+ 
 ====Test des applications en local sur le PC==== ====Test des applications en local sur le PC====
 Dans les dossiers récupérés se trouve un exécutable permettant de simuler la carte PIC. Il y a également le fichier de script .bat ou .sh qui permet de lancer simupic pour qu'​elle utilise les  bons numéros d'IP et de port (que vous avez du déterminer à l'​exercice précédent) . Ce programme permet de simuler la carte PIC et de développer l'​application sur PC sans avoir besoin de la carte PIC. Pour le test en local, vous pourrez utiliser l'​adresse IP de la boucle locale (127.0.0.1). Dans les dossiers récupérés se trouve un exécutable permettant de simuler la carte PIC. Il y a également le fichier de script .bat ou .sh qui permet de lancer simupic pour qu'​elle utilise les  bons numéros d'IP et de port (que vous avez du déterminer à l'​exercice précédent) . Ce programme permet de simuler la carte PIC et de développer l'​application sur PC sans avoir besoin de la carte PIC. Pour le test en local, vous pourrez utiliser l'​adresse IP de la boucle locale (127.0.0.1).
  
-<ifauth @au>+<ifauth @prof>
 ===Configuration du script pour simupic=== ===Configuration du script pour simupic===
 Dans le dossier simupic, configurer l'​application simupic en éditant le script « lancersimupic.bat » (click droit, ​ modifier) pour configurer l'IP et les ports UDP en émission et en réception. La syntaxe est la suivante: Dans le dossier simupic, configurer l'​application simupic en éditant le script « lancersimupic.bat » (click droit, ​ modifier) pour configurer l'IP et les ports UDP en émission et en réception. La syntaxe est la suivante:
Ligne 70: Ligne 75:
 </​ifauth>​ </​ifauth>​
  
-<ifauth @en>+ 
 ===Utilisation de simupic=== ===Utilisation de simupic===
 Saisir dans la console: Saisir dans la console:
   cd ~/binaries   cd ~/binaries
-  ./​simupic ​      +  ./​simupic ​ & ​   ​ 
-</​ifauth>​+ 
  
  
Ligne 90: Ligne 95:
 </​ifauth>​ </​ifauth>​
  
-<ifauth @au>+<ifauth @prof>
 Dézipper le fichier QTbroadcastreceiveretudiantAU2ET3.zip. Pour ouvrir le projet, il faut que vous lanciez le script lanceqt.bat puis cliquez sur  Fichier->​ouvrir_projet et sélectionnez le fichier .pro dans le dossier que vous venez de dézipper. Dézipper le fichier QTbroadcastreceiveretudiantAU2ET3.zip. Pour ouvrir le projet, il faut que vous lanciez le script lanceqt.bat puis cliquez sur  Fichier->​ouvrir_projet et sélectionnez le fichier .pro dans le dossier que vous venez de dézipper.
 </​ifauth>​ </​ifauth>​
  
-<ifauth @en>+  echo commence
   cd ~/   cd ~/
   wget  http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_qt/​QTbroadcastreceiveretudiantAU2ET3.zip   wget  http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_qt/​QTbroadcastreceiveretudiantAU2ET3.zip
Ligne 101: Ligne 106:
   cd QTbroadcastreceiveretudiantAU2ET3/​QTbroadcastreceiveretudiant/​   cd QTbroadcastreceiveretudiantAU2ET3/​QTbroadcastreceiveretudiant/​
   rm broadcastreceiver.pro.user   rm broadcastreceiver.pro.user
-  qtcreator broadcastreceiver.pro  +  ​qmake-qt4 broadcastreceiver.pro 
-Cliquer sur Configurer le projet. +  ​qtcreator broadcastreceiver.pro ​& 
-</ifauth>+  echo fini 
 +   
 +<color red> ​  
 +Important: COCHER la configuration DEBUG  puis Cliquer sur Configurer le projet. 
 +</color> 
 + 
 + 
 + 
 + 
 +==Initialisation du système de gestion de version en local== 
 +POUR LA PREMIERE SEANCE UNIQUEMENT!,​ Copier/​coller dans une console: 
 +  echo commence 
 +  cd ~/​QTbroadcastreceiveretudiantAU2ET3/​QTbroadcastreceiveretudiant 
 +  git init 
 +  git add broadcastreceiver.pro ​ dialog.ui ​ main.cpp ​ receiver.cpp ​ receiver.h 
 +  git commit -m'​initial version'​ 
 +  gitk & 
 +  echo fini 
 + 
 +Vous pouvez ensuite fermer l'​outils gitk qui permet de voir les changements entre les différentes versions. 
 +   
 +   
 + 
 ===Structure du projet=== ===Structure du projet===
    
Ligne 128: Ligne 156:
  
 Afin que l'​application à développer sur PC soit capable d'​émettre les datagrammes pour piloter la carte PIC, il faut implémenter une méthode ** void Receiver::​sendUDP(int i)**, (i code le numéro de la led à allumer, donc le bouton ​ pressé de l'​application sur le PC). Cette méthode devra faire les actions suivantes: Afin que l'​application à développer sur PC soit capable d'​émettre les datagrammes pour piloter la carte PIC, il faut implémenter une méthode ** void Receiver::​sendUDP(int i)**, (i code le numéro de la led à allumer, donc le bouton ​ pressé de l'​application sur le PC). Cette méthode devra faire les actions suivantes:
-  - Définir une variable de type QHostAddress ​ (par exemple ​DestIP ​+  - Définir une variable de type **QHostAddress**  (par exemple ​**destIP** ​
-  - Appeler la méthode bool setAddress(char * IP) de l'​objet  ​DestIP ​pour régler l'ip du dispositif avec lequel communiquer. +  - Appeler la méthode ​**bool setAddress(char * addrIP)** de l'​objet  ​**destIP** ​pour régler l'ip du dispositif avec lequel communiquer ​à l'aide d'une chaine de caractères **addrIP**
-  - Définir une variable de type quint16 ​ pour coder le numéro du port UDP destination (par exemple ​DestPort=4567;) +  - Définir une variable de type **quint16**  pour coder le numéro du port UDP destination (par exemple ​destPort=4567;) 
-  - Définir un tableau de caractères (par exemple chaine[]) et générer la chaîne pour piloter les leds (par exemple avec la fonction sprintf comme pour le PIC) +  - Définir un tableau de caractères (par exemple ​**chaine[]**) et générer la chaîne pour piloter les leds (par exemple avec la fonction sprintf comme pour le PIC) 
-  - Pour émettre la chaîne sur la socket, appeler la méthode **qint64 writeDatagram(const char *data, qint64 len, const QHostAddress host, quint16 port);** de l'​objet udpSocket. ​NB: il faut caster (convertir le type de) la chaîne en  (const char *)  et  pour le paramètre len utiliser (qint64)strlen(chaine)+1 (car on envoie le contenu de la chaine + le caractère \0 terminateur de chaine.+  - Pour émettre la chaîne ​**chaine** ​sur la socket, appeler la méthode **qint64 writeDatagram(const char * chaine, qint64 len, const QHostAddress host, quint16 port);** de l'​objet ​**udpSocket**Pour le paramètre ​**len** utiliser ​la valeur **(qint64)strlen(chaine)+1** (car on envoie le contenu de la chaine + le caractère \0 terminateur de chaine.
   ​   ​
-Pour que la méthode **void Receiver::​sendUDP(int i)** soit appelée lorsque l'​utilisateur presse ​le bouton 0vous devrez appeler **sendUDP(0);​** dans la méthode **void Receiver::​sendUDP0();​** qui est une fonction associée au signal "click de la souris"​ sur le bouton ​0. +La méthode **void Receiver::​sendUDP(int i)** est appelée lorsque l'​utilisateur presse ​un des boutons, le paramètre i codant le numéro du bouton. ​
- +
-Faire de même pour les méthodes **sendUDP1** et **sendUDP2** afin d'​indiquer au programme ce qu'il doit faire en cas d'​appui sur les boutons 1 et 2.+
  
 Tester que l'​appui sur le bouton i commute bien la led i du simulateur. Tester que l'​appui sur le bouton i commute bien la led i du simulateur.
   ​   ​
-{{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_pic/​validation.png}} 
  
 +{{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_pic/​validation.png}} Une fois les réponses validées, mettre à jour le suivi de version en saisissant dans une console:
 +  echo commence
 +  cd ~/​QTbroadcastreceiveretudiantAU2ET3/​QTbroadcastreceiveretudiant
 +  git commit -a -m'​emission'​
 +  gitk & 
 +  echo fini
  
  
Ligne 157: Ligne 188:
  
 Ainsi la méthode **processPendingDatagrams()** sera automatiquement appelée à la réception d'un datagramme sur le numéro de port choisi. Ainsi la méthode **processPendingDatagrams()** sera automatiquement appelée à la réception d'un datagramme sur le numéro de port choisi.
 + 
  
 ===Implémentation de  la méthode de réception=== ===Implémentation de  la méthode de réception===
Ligne 167: Ligne 198:
   - Utiliser la fonction sscanf pour décoder le datagramme reçu **int sscanf(char *chaine, const char * format, …)**   - Utiliser la fonction sscanf pour décoder le datagramme reçu **int sscanf(char *chaine, const char * format, …)**
   - Régler les valeurs de variables codant l'​état des boutons (b1,b2,b3)   - Régler les valeurs de variables codant l'​état des boutons (b1,b2,b3)
-  - Régler les afficheurs de la fenêtre (sw1,​sw2,​sw3) en appelant la méthode **void setChecked(bool);​** de chacun des trois objets sw1 à 3 +  - Régler les afficheurs de la fenêtre (sw1,​sw2,​sw3) en appelant la méthode **void setChecked(bool);​** de chacun des trois objets sw1 à 3 . Appeler également la méthode setText(char * chaine) de l'​objet statusLabel pour afficher les caractères ASCII reçus.
    
 Tester que l'​appui sur le bouton i dans l'​application simupic est bien répercuté sur votre application. Tester que l'​appui sur le bouton i dans l'​application simupic est bien répercuté sur votre application.
  
   ​   ​
-{{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_pic/​validation.png}} +{{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_pic/​validation.png}} ​Une fois les réponses validées, mettre à jour le suivi de version en saisissant dans une console: 
 +  echo commence 
 +  cd ~/​QTbroadcastreceiveretudiantAU2ET3/​QTbroadcastreceiveretudiant 
 +  git commit -a -m'​reception'​ 
 +  gitk &  
 +  echo fini 
 +  ​
  
  
Ligne 192: Ligne 228:
   - Repérer les champs correspondants aux différentes couches réseau.   - Repérer les champs correspondants aux différentes couches réseau.
  
-  ​ +    
-{{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_pic/​validation.png}} +{{http://​homepages.laas.fr/​bvandepo/​files/​iut/​tp_pic/​validation.png}} ​Une fois les réponses validées, mettre à jour le suivi de version en saisissant dans une console: 
 +  echo commence 
 +  cd ~/​QTbroadcastreceiveretudiantAU2ET3/​QTbroadcastreceiveretudiant 
 +  git commit -a -m'​avec carte pic' 
 +  gitk & 
 +  echo fini
  
  
tpqt.1518083454.txt.gz · Dernière modification: 2018/02/08 10:50 par bvandepo