Bonjour,
J'ai un petit soucis que je n'arrive pas à résoudre.
Alors, je développe une interface en Qt pour dialoguer avec un système par liaison série.
Pour la liaison série j'ai choisi d'utiliser QSerialPort inclus dans Qt5 mais je suis confrontée à un problème.
Dans ma fenêtre principale, je définis un objet QSerialPort. En fonction des parmètres entrés par l'utilisateur (vitesse, numéro du port ...) ; je me connecte au port voulu. J'envoie alors un certains nombre de commandes au système grâce à la fonction write(). Toute cette partie fonctionne très bien. Pour la récupération des données; j'ai connecté le signal readyRead() au slot start() d'un thread.
Ainsi, à chaque réception de données, le thread est lancé; il récupère les données.
Voici le code de la fonction run() du thread:
Pendant un moment, la réception fonctionne bien ; dans la fenêtre de sortie je visualise bien le nombre de données reçues. Mais, au bout d'un moment, le programme s'arrête sur une erreur de segmentation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void thread_com:: run() { unsigned long int nb_data = 0; QByteArray buffer; //Récupération des données m_Semaphore_Port->acquire(); buffer = m_Port->readAll(); nb_data = buffer.length(); qDebug()<<nb_data; m_Semaphore_Port->release(); }
D'après ce que je crois comprendre, le soucis est interne à la fonction readAll().
Voici une copie d'ecran pour vous montrer l'état du système lors de son arrêt.
Merci d'avance pour vos idées.
Partager