Installation et utilisation de QTExtSerialPort sous Debian/GNU Linux 6.0

Pour un projet industriel, les étudiants doivent utiliser QT4 et dialoguer avec différents appareils par le port série. QT4 ne délivrant pas nativement de classe gérant le port série, il faut se tourner vers des développements extérieurs. Pour l’instant j’en connais deux:

Mon environnement de développement sera une debian Squeeze. QTCreator est installé depuis les paquets standards (en version 1.3.1 basé sur les librairies QT 4.6.3).

Test avec QExtSerialPort

Il faut se rendre àl’adresse indiquée plus haut. On va faire une copie du projet en utilisant Mercurial. Il faut d’abord installer celui-ci puis se déplacer dans un endroit adéquate puis enfin rapatrier le projet:

On rentre dans le répertoire « qextserialport ». On remarque un « qextserialport.pro » (un projet Qt4). On va donc essayer de compiler ce projet avec une simple commande « make ». En analysant les messages de compilation, on remarque que l’on a obtenu:

  • une librairie partagée :  libqextserialport.so.1.2.0 dans le répertoire « src/build » et les liens symboliques
  • des exemples : enumerator,  event (le projet QEPSTA nécessite une compilation dans QTCreator)

On teste donc les exemples fournis…le problème est que la librairie partagée n’est pas reconnue. Je copie donc celle-ci dans « /lib » et je fais les liens symboliques associés. Enfin on remet à jour la liste des librairies avec ldconfig:

  • enumerator : on lance l’éxecution du programme « enumerator » et l’on obtient la liste des « ports séries » disponible sur la machine.

En fait le seul port série que j’ai sur ma machine est le « /dev/ttyUSB0 » : c’est un adaptateur USB-Serie basé sur le circuit FT232 de FTDI.

  • event : si on exécute ce programme, le message d’erreur suivant apparaît :

Visiblement le nom du port est codé « en dur ». Donc on modifie le fichier source (remplacement de COM0 par /dev/ttyUSB0) et on recompile (make dans le répertoire) puis on exécute :

Visiblement le programme fonctionne et reçoit les données de la voie série. Nous avons donc deux codes sources à examiner.

J’ouvre enfin le programme QEPSTA dans QTCreator (ouvrir le projet QEPSTA.pro) et je lance la compilation et l’exécution. A la compilation une erreur apparaît, je modifie la ligne d’include concernée en #include « ../../src/qextserialport.h ». Je relance la compilation est j’obtiens deux erreurs sur fprintf et stderr. Je choisis la solution radicale de commenter les lignes concernées. Il y a d’autres erreurs du mêmes types. Cependant à la fin le programme ne pouvait être lié avec la bibliothèque qextserialportd (voir le fichier qespta.pro, d pour debug). J’ai donc changé en qextserialport et c’est OK. Le programme graphique s’exécute.

J’ai depuis développé une petite application de test basé sur trois « scrool bar » R,G,B pour commander le microcontrolleur. Le tout est fonctionnel. Le code sera mis plus tard avec les classes associées.

Comme nous avons des doutes sur la compilation de cette librairie sous la dernière version de QT (4.8 à l’instant d’écriture de ces lignes) j’installe dans une machine virtuelle VirtualBox une ubuntu 11.10. QTCreator sera alors installé ensuite pour voir quel version est utilisé dans cette environnement. Suivant la version, j’installerai le dernier SDK directement depuis le site de QT.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *