Gestion du port série avec surveillance des paquets pour qt

Soyez le premier à donner votre avis sur cette source.

Vue 9 685 fois - Téléchargée 864 fois

Description

Bonjour bonjour,

Ca fait un moment que je cherche une bonne bibliothèque pour gérer le port série avec QT.
N'en ayant pas trouvée, je l'ai faite moi même.
Pour ceux qui n'ont pas envie de se prendre la tête, ou ceux qui veulent améliorer, et pour tout le monde
en général, voici le fruit de mon travail.

Par contre, je vous demande une chose, si vous la modifiez (en mieux) mettez le header à jour et faites moi en part,
ainsi que tout le monde. Se serai vraiment sympa.

Si il y a des choses à améliorer je suis là.

PS : Si certains ne veulent pas de QT J'ai aussi, mais y'a plus le thread

++

Source / Exemple :


#ifndef _RS232
#define _RS232

#include <windows.h>
#include <QThread>
#include <QMutex>
#include <QWaitCondition>

//ATTENTION : Toutes les lectures retournent un pointeur vers un signed char

class RS232 : public QThread
{
    Q_OBJECT
private:
    //Variables de la communication
    DCB configuration;
    HANDLE port_handle;
    COMMTIMEOUTS temps_attente;

    //var des threads
    QMutex mutex;
    QMutex fini;
    int sortir;

    int taille_donnee;      //taille maximale de la donnee un octets

public:

    int creation_ok;

    RS232(char *Port="COM1",char *Parite="Aucune",int Vitesse=9600,int Data=8,char *StopBit="1",int TimeOut=500);
    ~RS232(){CloseHandle(port_handle);}
    int envoi_chaine(char *Chaine,char *EolChar = "$");
		
    int envoi(unsigned int nombre);
		
    int recevoir(char *ChaineRecue);

    virtual void run();

    void fin_thread();

signals:
    void event_new(char *reception);
};
#endif

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
4
Date d'inscription
mardi 11 octobre 2011
Statut
Membre
Dernière intervention
25 octobre 2011

Salut,
J'ai un probleme de avec le signal, qui ne me connect pas à mon slot.
A la reception d'un octet, je tombe bien dans le thread je passe dans le if(nBytesRead) (point d'arret) mais quand je mets un point d'arret dans le slot qui est connecté au signal.... ben j'y tombe jamais. Je precise que je debute sur QT donc il est probable que l'erreur soit dans mon code, mais un peu de support me ferait du bien
Messages postés
7
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
15 juin 2010

J'ai regardé le type enum, intéressant. Je vais voir comment m'en servir...
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
Messages postés
2
Date d'inscription
samedi 13 mars 2010
Statut
Membre
Dernière intervention
20 juin 2010

Ca m'interesse d'avoir ton test avec le bouton
Messages postés
7
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
15 juin 2010

Euh, non j'ai pas, pour le tester, je sélectionne une valeur, je l'envoie sur le port, de l'autre coté j'ai un pic qui me renvoie la valeur lorsque j'appuie sur un bouton.

Je suis pas trop connaisseur en QT, je pense que tu devrais regarder sur leur site, toutes les possibilités et les fonctions sont explicitées.
Afficher les 10 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.