1 pièce(s) jointe(s)
[Qt 5] Erreur de segmentation
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:
Code:
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();
} |
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.
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.