QSerialPort Class
Fournit des fonctions d'accès aux ports série. Plus...
| En-tête : | #include <QSerialPort> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS SerialPort)target_link_libraries(mytarget PRIVATE Qt6::SerialPort) |
| qmake : | QT += serialport |
| Héritages : | QIODevice |
Remarque : toutes les fonctions de cette classe sont réentrantes.
Types publics
| enum | BaudRate { Baud1200, Baud2400, Baud4800, Baud9600, Baud19200, …, Baud115200 } |
| enum | DataBits { Data5, Data6, Data7, Data8 } |
| enum | Direction { Input, Output, AllDirections } |
| flags | Directions |
| enum | FlowControl { NoFlowControl, HardwareControl, SoftwareControl } |
| enum | Parity { NoParity, EvenParity, OddParity, SpaceParity, MarkParity } |
| enum | PinoutSignal { NoSignal, DataTerminalReadySignal, DataCarrierDetectSignal, DataSetReadySignal, RingIndicatorSignal, …, SecondaryReceivedDataSignal } |
| flags | PinoutSignals |
| enum | SerialPortError { NoError, DeviceNotFoundError, PermissionError, OpenError, NotOpenError, …, UnknownError } |
| enum | StopBits { OneStop, OneAndHalfStop, TwoStop } |
Propriétés
|
|
Fonctions publiques
| QSerialPort(QObject *parent = nullptr) | |
| QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr) | |
| QSerialPort(const QString &name, QObject *parent = nullptr) | |
| virtual | ~QSerialPort() |
| qint32 | baudRate(QSerialPort::Directions directions = AllDirections) const |
| QBindable<QSerialPort::DataBits> | bindableDataBits() |
| QBindable<QSerialPort::SerialPortError> | bindableError() const |
| QBindable<QSerialPort::FlowControl> | bindableFlowControl() |
| QBindable<bool> | bindableIsBreakEnabled() |
| QBindable<QSerialPort::Parity> | bindableParity() |
| QBindable<QSerialPort::StopBits> | bindableStopBits() |
| bool | clear(QSerialPort::Directions directions = AllDirections) |
| void | clearError() |
| QSerialPort::DataBits | dataBits() const |
| QSerialPort::SerialPortError | error() const |
| QSerialPort::FlowControl | flowControl() const |
| bool | flush() |
| QSerialPort::Handle | handle() const |
| bool | isBreakEnabled() const |
| bool | isDataTerminalReady() |
| bool | isRequestToSend() |
| QSerialPort::Parity | parity() const |
| QSerialPort::PinoutSignals | pinoutSignals() |
| QString | portName() const |
| qint64 | readBufferSize() const |
| bool | setBaudRate(qint32 baudRate, QSerialPort::Directions directions = AllDirections) |
| bool | setBreakEnabled(bool set = true) |
| bool | setDataBits(QSerialPort::DataBits dataBits) |
| bool | setDataTerminalReady(bool set) |
| bool | setFlowControl(QSerialPort::FlowControl flowControl) |
| bool | setParity(QSerialPort::Parity parity) |
| void | setPort(const QSerialPortInfo &serialPortInfo) |
| void | setPortName(const QString &name) |
| void | setReadBufferSize(qint64 size) |
| bool | setRequestToSend(bool set) |
| void | setSettingsRestoredOnClose(bool restore) |
| bool | setStopBits(QSerialPort::StopBits stopBits) |
(since 6.10) void | setWriteBufferSize(qint64 size) |
| bool | settingsRestoredOnClose() const |
| QSerialPort::StopBits | stopBits() const |
(since 6.10) qint64 | writeBufferSize() const |
Fonctions publiques réimplémentées
| virtual qint64 | bytesAvailable() const override |
| virtual qint64 | bytesToWrite() const override |
| virtual bool | canReadLine() const override |
| virtual void | close() override |
| virtual bool | isSequential() const override |
| virtual bool | open(QIODeviceBase::OpenMode mode) override |
| virtual bool | waitForBytesWritten(int msecs = 30000) override |
| virtual bool | waitForReadyRead(int msecs = 30000) override |
Signaux
| void | baudRateChanged(qint32 baudRate, QSerialPort::Directions directions) |
| void | breakEnabledChanged(bool set) |
| void | dataBitsChanged(QSerialPort::DataBits dataBits) |
| void | dataTerminalReadyChanged(bool set) |
| void | errorOccurred(QSerialPort::SerialPortError error) |
| void | flowControlChanged(QSerialPort::FlowControl flow) |
| void | parityChanged(QSerialPort::Parity parity) |
| void | requestToSendChanged(bool set) |
(since 6.9) void | settingsRestoredOnCloseChanged(bool restore) |
| void | stopBitsChanged(QSerialPort::StopBits stopBits) |
Fonctions protégées réimplémentées
| virtual qint64 | readData(char *data, qint64 maxSize) override |
| virtual qint64 | readLineData(char *data, qint64 maxSize) override |
| virtual qint64 | writeData(const char *data, qint64 maxSize) override |
Description détaillée
Vous pouvez obtenir des informations sur les ports série disponibles en utilisant la classe d'aide QSerialPortInfo, qui permet d'énumérer tous les ports série du système. Cette fonction est utile pour obtenir le nom correct du port série que vous souhaitez utiliser. Vous pouvez passer un objet de la classe d'aide comme argument aux méthodes setPort() ou setPortName() pour affecter le périphérique série souhaité.
Après avoir défini le port, vous pouvez l'ouvrir en mode lecture seule (r/o), écriture seule (w/o) ou lecture-écriture (r/w) à l'aide de la méthode open().
Remarque : le port série est toujours ouvert avec un accès exclusif (c'est-à-dire qu'aucun autre processus ou thread ne peut accéder à un port série déjà ouvert).
Utilisez la méthode close() pour fermer le port et annuler les opérations d'E/S.
Une fois le port ouvert avec succès, QSerialPort tente de déterminer la configuration actuelle du port et s'initialise. Vous pouvez reconfigurer le port en utilisant les méthodes setBaudRate(), setDataBits(), setParity(), setStopBits() et setFlowControl().
Il existe quelques propriétés permettant de travailler avec les signaux de brochage, à savoir : QSerialPort::dataTerminalReady, QSerialPort::requestToSend. Il est également possible d'utiliser la méthode pinoutSignals() pour demander le jeu de signaux de brochage actuel.
Une fois que vous savez que les ports sont prêts à lire ou à écrire, vous pouvez utiliser les méthodes read() ou write(). Les méthodes de commodité readLine() et readAll() peuvent également être invoquées. Si toutes les données ne sont pas lues en même temps, les données restantes seront disponibles plus tard, lorsque les nouvelles données entrantes seront ajoutées au tampon de lecture interne du QSerialPort. Vous pouvez limiter la taille du tampon de lecture en utilisant setReadBufferSize().
QSerialPort fournit un ensemble de fonctions qui suspendent le thread appelant jusqu'à ce que certains signaux soient émis. Ces fonctions peuvent être utilisées pour mettre en œuvre des ports série bloquants :
- waitForReadyRead() bloque les appels jusqu'à ce que de nouvelles données soient disponibles pour la lecture.
- waitForBytesWritten() bloque les appels jusqu'à ce qu'une charge utile de données ait été écrite sur le port série.
Voir l'exemple suivant :
qint64 numReadTotal = 0; char buffer[50]; for (;;) { const qint64 numRead = serial.read(buffer, 50); // Do whatever with the array numReadTotal += numRead; if (numRead == 0 && !serial.waitForReadyRead()) break; }
Si waitForReadyRead() renvoie false, la connexion a été fermée ou une erreur s'est produite.
Si une erreur se produit à un moment donné, QSerialPort émet le signal errorOccurred(). Vous pouvez également appeler error() pour connaître le type d'erreur qui s'est produit en dernier.
La programmation avec un port série bloquant est radicalement différente de la programmation avec un port série non bloquant. Un port série bloquant ne nécessite pas de boucle d'événements et conduit généralement à un code plus simple. Cependant, dans une application GUI, le port série bloquant ne doit être utilisé que dans les threads non-GUI, afin d'éviter de geler l'interface utilisateur.
Pour plus de détails sur ces approches, reportez-vous aux exemples d' applications.
La classe QSerialPort peut également être utilisée avec les opérateurs de flux de QTextStream et QDataStream(operator<<() et operator>>()). Il faut cependant être conscient d'un problème : assurez-vous que suffisamment de données sont disponibles avant d'essayer de lire en utilisant l'opérateur surchargé operator>>().
Voir également QSerialPortInfo.
Documentation sur les types de membres
enum QSerialPort::BaudRate
Cette énumération décrit la vitesse de transmission avec laquelle le dispositif de communication fonctionne.
Remarque : seules les vitesses de transmission standard les plus courantes sont répertoriées dans cet enum.
| Constante | Valeur | Description de la constante |
|---|---|---|
QSerialPort::Baud1200 | 1200 | 1200 bauds. |
QSerialPort::Baud2400 | 2400 | 2400 bauds. |
QSerialPort::Baud4800 | 4800 | 4800 bauds. |
QSerialPort::Baud9600 | 9600 | 9600 bauds. |
QSerialPort::Baud19200 | 19200 | 19200 bauds. |
QSerialPort::Baud38400 | 38400 | 38400 bauds. |
QSerialPort::Baud57600 | 57600 | 57600 bauds. |
QSerialPort::Baud115200 | 115200 | 115200 bauds. |
Voir aussi QSerialPort::baudRate.
enum QSerialPort::DataBits
Cette énumération décrit le nombre de bits de données utilisés.
| Constante | Valeur | Description |
|---|---|---|
QSerialPort::Data5 | 5 | Le nombre de bits de données dans chaque caractère est de 5. Il est utilisé pour le code Baudot. Il n'a généralement de sens qu'avec les anciens équipements tels que les téléimprimeurs. |
QSerialPort::Data6 | 6 | Le nombre de bits de données dans chaque caractère est de 6. Il est rarement utilisé. |
QSerialPort::Data7 | 7 | Le nombre de bits de données dans chaque caractère est de 7. Il est utilisé pour le véritable ASCII. Il n'a généralement de sens qu'avec des équipements plus anciens tels que les téléimprimeurs. |
QSerialPort::Data8 | 8 | Le nombre de bits de données dans chaque caractère est de 8. Il est utilisé pour la plupart des types de données, car cette taille correspond à celle d'un octet. Il est presque universellement utilisé dans les applications récentes. |
Voir également QSerialPort::dataBits.
enum QSerialPort::Direction
flags QSerialPort::Directions
Cette énumération décrit les directions possibles de la transmission de données.
Remarque : cette énumération est utilisée pour régler la vitesse de transmission du périphérique séparément pour chaque direction sur certains systèmes d'exploitation (par exemple, de type POSIX).
| Constante | Valeur | Description de la constante |
|---|---|---|
QSerialPort::Input | 1 | Direction d'entrée. |
QSerialPort::Output | 2 | Direction de sortie. |
QSerialPort::AllDirections | Input | Output | Simultanément dans deux directions. |
Le type Directions est un typedef pour QFlags<Direction>. Il stocke une combinaison OU de valeurs de direction.
enum QSerialPort::FlowControl
Cette énumération décrit le contrôle de flux utilisé.
| Constante | Valeur | Description de la constante |
|---|---|---|
QSerialPort::NoFlowControl | 0 | Pas de contrôle de flux. |
QSerialPort::HardwareControl | 1 | Contrôle de flux matériel (RTS/CTS). |
QSerialPort::SoftwareControl | 2 | Contrôle de flux logiciel (XON/XOFF). |
Voir aussi QSerialPort::flowControl.
enum QSerialPort::Parity
Cette énumération décrit le schéma de parité utilisé.
| Constante | Valeur | Description |
|---|---|---|
QSerialPort::NoParity | 0 | Aucun bit de parité n'est envoyé. Il s'agit du paramètre de parité le plus courant. La détection des erreurs est gérée par le protocole de communication. |
QSerialPort::EvenParity | 2 | Le nombre de bits 1 dans chaque caractère, y compris le bit de parité, est toujours pair. |
QSerialPort::OddParity | 3 | Le nombre de bits de 1 dans chaque caractère, y compris le bit de parité, est toujours impair. Il garantit qu'au moins une transition d'état se produit dans chaque caractère. |
QSerialPort::SpaceParity | 4 | Parité spatiale. Le bit de parité est envoyé dans la condition de signal d'espace. Il ne fournit pas d'information de détection d'erreur. |
QSerialPort::MarkParity | 5 | Parité de marque. Le bit de parité est toujours placé dans l'état du signal de marque (1 logique). Il ne fournit pas d'information de détection d'erreur. |
Voir également QSerialPort::parity.
enum QSerialPort::PinoutSignal
flags QSerialPort::PinoutSignals
Cette énumération décrit les signaux de brochage RS-232 possibles.
| Constante | Valeur | Description |
|---|---|---|
QSerialPort::NoSignal | 0x00 | Aucune ligne active |
QSerialPort::DataTerminalReadySignal | 0x04 | DTR (Data Terminal Ready). |
QSerialPort::DataCarrierDetectSignal | 0x08 | DCD (Data Carrier Detect). |
QSerialPort::DataSetReadySignal | 0x10 | DSR (Data Set Ready). |
QSerialPort::RingIndicatorSignal | 0x20 | RNG (Indicateur d'anneau). |
QSerialPort::RequestToSendSignal | 0x40 | RTS (Request To Send). |
QSerialPort::ClearToSendSignal | 0x80 | CTS (Clear To Send). |
QSerialPort::SecondaryTransmittedDataSignal | 0x100 | STD (données secondaires transmises). |
QSerialPort::SecondaryReceivedDataSignal | 0x200 | SRD (données secondaires reçues). |
Le type PinoutSignals est un typedef pour QFlags<PinoutSignal>. Il stocke une combinaison OU de valeurs PinoutSignal.
Voir également pinoutSignals(), QSerialPort::dataTerminalReady, et QSerialPort::requestToSend.
enum QSerialPort::SerialPortError
Cette énumération décrit les erreurs qui peuvent être contenues dans la propriété QSerialPort::error.
| Constante | Valeur | Description de l'erreur |
|---|---|---|
QSerialPort::NoError | 0 | Aucune erreur n'est survenue. |
QSerialPort::DeviceNotFoundError | 1 | Une erreur s'est produite lors de la tentative d'ouverture d'un périphérique inexistant. |
QSerialPort::PermissionError | 2 | Une erreur s'est produite lors de la tentative d'ouverture d'un dispositif déjà ouvert par un autre processus ou par un utilisateur ne disposant pas des autorisations et des informations d'identification suffisantes pour procéder à l'ouverture. |
QSerialPort::OpenError | 3 | Une erreur s'est produite lors de la tentative d'ouverture d'un dispositif déjà ouvert dans cet objet. |
QSerialPort::NotOpenError | 10 | Cette erreur se produit lors de l'exécution d'une opération qui ne peut être menée à bien que si le périphérique est ouvert. Cette valeur a été introduite dans QtSerialPort 5.2. |
QSerialPort::WriteError | 4 | Une erreur d'E/S s'est produite lors de l'écriture des données. |
QSerialPort::ReadError | 5 | Une erreur d'E/S s'est produite lors de la lecture des données. |
QSerialPort::ResourceError | 6 | Une erreur d'E/S s'est produite lorsqu'une ressource est devenue indisponible, par exemple lorsque le périphérique est retiré inopinément du système. |
QSerialPort::UnsupportedOperationError | 7 | L'opération demandée sur le périphérique n'est pas prise en charge ou interdite par le système d'exploitation en cours d'exécution. |
QSerialPort::TimeoutError | 9 | Une erreur de délai s'est produite. Cette valeur a été introduite dans QtSerialPort 5.2. |
QSerialPort::UnknownError | 8 | Une erreur non identifiée s'est produite. |
Voir également QSerialPort::error.
enum QSerialPort::StopBits
Cette énumération décrit le nombre de bits d'arrêt utilisés.
| Constante | Valeur | Description |
|---|---|---|
QSerialPort::OneStop | 1 | 1 bit d'arrêt. |
QSerialPort::OneAndHalfStop | 3 | 1,5 bit d'arrêt. Uniquement pour la plate-forme Windows. |
QSerialPort::TwoStop | 2 | 2 bits d'arrêt. |
Voir également QSerialPort::stopBits.
Documentation sur les propriétés
baudRate : qint32
Cette propriété contient le débit en bauds des données pour la direction souhaitée
Si la configuration est réussie ou si elle est définie avant l'ouverture du port, la propriété renvoie true; sinon, elle renvoie false et définit un code d'erreur qui peut être obtenu en accédant à la valeur de la propriété QSerialPort::error. Pour définir le débit en bauds, utilisez l'énumération QSerialPort::BaudRate ou toute valeur positive de qint32.
Remarque : si le paramètre est défini avant l'ouverture du port, la configuration réelle du port série est effectuée automatiquement dans la méthode QSerialPort::open() juste après que l'ouverture du port ait réussi.
Attention : La définition de l'indicateur AllDirections est prise en charge sur toutes les plates-formes. Windows ne supporte que ce mode.
Attention : Renvoie un débit en bauds égal dans n'importe quelle direction sous Windows.
La valeur par défaut est Baud9600, c'est-à-dire 9600 bits par seconde.
Fonctions d'accès :
| qint32 | baudRate(QSerialPort::Directions directions = AllDirections) const |
| bool | setBaudRate(qint32 baudRate, QSerialPort::Directions directions = AllDirections) |
Signal de notification :
| void | baudRateChanged(qint32 baudRate, QSerialPort::Directions directions) |
[bindable] breakEnabled : bool
Note : Cette propriété prend en charge les liaisons QProperty.
Cette propriété contient l'état de la ligne de transmission en pause
Renvoie true en cas de succès, false dans le cas contraire. Si l'indicateur est true, la ligne de transmission est en état de rupture, sinon elle est en état de non-rupture.
Remarque : le port série doit être ouvert avant d'essayer de définir ou d'obtenir cette propriété ; sinon, la commande renvoie false et définit le code d'erreur NotOpenError. C'est un peu inhabituel par rapport à la configuration habituelle des propriétés d'une classe dans Qt. Cependant, il s'agit d'un cas d'utilisation particulier puisque la propriété est définie par l'interaction avec le noyau et le matériel. Par conséquent, les deux scénarios ne peuvent pas être complètement comparés l'un à l'autre.
Fonctions d'accès :
| bool | isBreakEnabled() const |
| bool | setBreakEnabled(bool set = true) |
Signal du notificateur :
| void | breakEnabledChanged(bool set) |
[bindable] dataBits : DataBits
Note : Cette propriété prend en charge les liaisons QProperty.
Cette propriété contient les bits de données d'une trame
Si la configuration est réussie ou si elle est définie avant l'ouverture du port, elle renvoie true; sinon, elle renvoie false et définit un code d'erreur qui peut être obtenu en accédant à la valeur de la propriété QSerialPort::error.
Remarque : si le réglage est effectué avant l'ouverture du port, le réglage réel du port série est effectué automatiquement dans la méthode QSerialPort::open() juste après que l'ouverture du port ait réussi.
La valeur par défaut est Data8, c'est-à-dire 8 bits de données.
Fonctions d'accès :
| QSerialPort::DataBits | dataBits() const |
| bool | setDataBits(QSerialPort::DataBits dataBits) |
Signal de notification :
| void | dataBitsChanged(QSerialPort::DataBits dataBits) |
dataTerminalReady : bool
Cette propriété contient l'état (haut ou bas) du signal de ligne DTR
Renvoie true en cas de succès, false dans le cas contraire. Si l'indicateur est true, le signal DTR est mis à l'état haut, sinon à l'état bas.
Remarque : le port série doit être ouvert avant d'essayer de définir ou d'obtenir cette propriété, sinon false est renvoyé et le code d'erreur est fixé à NotOpenError.
Fonctions d'accès :
| bool | isDataTerminalReady() |
| bool | setDataTerminalReady(bool set) |
Notifier signal :
| void | dataTerminalReadyChanged(bool set) |
Voir aussi pinoutSignals().
[bindable read-only] error : SerialPortError
Note : Cette propriété supporte les liens QProperty.
Cette propriété contient l'état d'erreur du port série
L'état du périphérique d'E/S renvoie un code d'erreur. Par exemple, si open() renvoie false, ou si une opération de lecture/écriture renvoie -1, cette propriété peut être utilisée pour déterminer la raison de l'échec de l'opération.
Le code d'erreur prend la valeur par défaut QSerialPort::NoError après un appel à clearError().
Fonctions d'accès :
| QSerialPort::SerialPortError | error() const |
| void | clearError() |
Notificateur signal :
| void | errorOccurred(QSerialPort::SerialPortError error) |
[bindable] flowControl : FlowControl
Note : Cette propriété prend en charge les liaisons QProperty.
Cette propriété contient le mode de contrôle de flux souhaité
Si la configuration est réussie ou définie avant l'ouverture du port, elle renvoie true; sinon, elle renvoie false et définit un code d'erreur qui peut être obtenu en accédant à la valeur de la propriété QSerialPort::error.
Remarque : si le paramètre est défini avant l'ouverture du port, la configuration réelle du port série est effectuée automatiquement dans la méthode QSerialPort::open() juste après que l'ouverture du port ait réussi.
La valeur par défaut est NoFlowControl, c'est-à-dire qu'il n'y a pas de contrôle de flux.
Fonctions d'accès :
| QSerialPort::FlowControl | flowControl() const |
| bool | setFlowControl(QSerialPort::FlowControl flowControl) |
Signal de notification :
| void | flowControlChanged(QSerialPort::FlowControl flow) |
[bindable] parity : Parity
Note : Cette propriété supporte les liens QProperty.
Cette propriété contient le mode de vérification de la parité
Si la configuration est réussie ou définie avant l'ouverture du port, elle renvoie true; sinon, elle renvoie false et définit un code d'erreur qui peut être obtenu en accédant à la valeur de la propriété QSerialPort::error.
Remarque : si le paramètre est défini avant l'ouverture du port, la configuration réelle du port série est effectuée automatiquement dans la méthode QSerialPort::open() juste après que l'ouverture du port ait réussi.
La valeur par défaut est NoParity, c'est-à-dire sans parité.
Attention : Certains systèmes d'exploitation UNIX (par exemple macOS) ne supportent pas l 'indicateur CMSPAR. Sur ces systèmes, le réglage de la parité sur Mark or Space n'est pas pris en charge.
Fonctions d'accès :
| QSerialPort::Parity | parity() const |
| bool | setParity(QSerialPort::Parity parity) |
Signal de notification :
| void | parityChanged(QSerialPort::Parity parity) |
requestToSend : bool
Cette propriété contient l'état (haut ou bas) du signal de ligne RTS
Renvoie true en cas de succès, false dans le cas contraire. Si l'indicateur est true, le signal RTS est mis à l'état haut, sinon à l'état bas.
Remarque : le port série doit être ouvert avant d'essayer de définir ou d'obtenir cette propriété ; sinon, false est renvoyé et le code d'erreur est fixé à NotOpenError.
Note : Une tentative de contrôle du signal RTS dans le mode HardwareControl échouera avec le code d'erreur UnsupportedOperationError, car le signal est automatiquement contrôlé par le pilote.
Fonctions d'accès :
| bool | isRequestToSend() |
| bool | setRequestToSend(bool set) |
Signal de notification :
| void | requestToSendChanged(bool set) |
Voir aussi pinoutSignals().
[since 6.9] settingsRestoredOnClose : bool
Cette propriété définit si les paramètres du port doivent être restaurés à la fermeture ou non
Après l'ouverture du port, la classe met en cache ses paramètres avant d'appliquer les paramètres définis par l'utilisateur.
Si la propriété vaut true, le port série tente de restaurer les paramètres mis en cache avant de fermer le port ; dans le cas contraire, les paramètres mis en cache sont supprimés.
La valeur par défaut est true.
Remarque : cette propriété peut n'avoir aucun effet sur certains systèmes d'exploitation. Par exemple, macOS semble toujours restaurer les paramètres par défaut du port série lorsque le port est fermé.
Cette propriété a été introduite dans Qt 6.9.
Fonctions d'accès :
| bool | settingsRestoredOnClose() const |
| void | setSettingsRestoredOnClose(bool restore) |
Notificateur signal :
| void | settingsRestoredOnCloseChanged(bool restore) |
[bindable] stopBits : StopBits
Remarque : Cette propriété prend en charge les liaisons QProperty.
Cette propriété contient le nombre de bits d'arrêt dans une trame
Si la configuration est réussie ou si elle est définie avant l'ouverture du port, elle renvoie true; sinon, elle renvoie false et définit un code d'erreur qui peut être obtenu en accédant à la valeur de la propriété QSerialPort::error.
Remarque : si le paramètre est défini avant l'ouverture du port, la configuration réelle du port série est effectuée automatiquement dans la méthode QSerialPort::open() juste après que l'ouverture du port ait réussi.
La valeur par défaut est OneStop, c'est-à-dire 1 bit d'arrêt.
Fonctions d'accès :
| QSerialPort::StopBits | stopBits() const |
| bool | setStopBits(QSerialPort::StopBits stopBits) |
Signal Notificateur :
| void | stopBitsChanged(QSerialPort::StopBits stopBits) |
Member Function Documentation
[explicit] QSerialPort::QSerialPort(QObject *parent = nullptr)
Construit un nouvel objet port série avec l'adresse parent.
[explicit] QSerialPort::QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr)
Construit un nouvel objet port série avec l'adresse parent pour représenter le port série avec la classe d'aide spécifiée serialPortInfo.
[explicit] QSerialPort::QSerialPort(const QString &name, QObject *parent = nullptr)
Construit un nouvel objet port série avec le nom parent donné pour représenter le port série avec le nom name spécifié.
Le nom doit avoir un format spécifique ; voir la méthode setPort().
[virtual noexcept] QSerialPort::~QSerialPort()
Ferme le port série, si nécessaire, puis détruit l'objet.
[signal] void QSerialPort::baudRateChanged(qint32 baudRate, QSerialPort::Directions directions)
Ce signal est émis lorsque le débit en bauds a été modifié. La nouvelle vitesse de transmission est transmise en tant que baudRate et les directions en tant que directions.
Note : Signal de notification pour la propriété baudRate.
Voir aussi QSerialPort::baudRate.
[override virtual] qint64 QSerialPort::bytesAvailable() const
Réimplémente : QIODevice::bytesAvailable() const.
Renvoie le nombre d'octets entrants en attente de lecture.
Voir aussi bytesToWrite() et read().
[override virtual] qint64 QSerialPort::bytesToWrite() const
Réimplémente : QIODevice::bytesToWrite() const.
Renvoie le nombre d'octets en attente d'écriture. Les octets sont écrits lorsque le contrôle revient à la boucle d'événements ou lorsque flush() est appelé.
Voir aussi bytesAvailable() et flush().
[override virtual] bool QSerialPort::canReadLine() const
Réimplémente : QIODevice::canReadLine() const.
Renvoie true si une ligne de données peut être lue sur le port série ; sinon, renvoie false.
Voir également readLine().
bool QSerialPort::clear(QSerialPort::Directions directions = AllDirections)
Rejette tous les caractères de la mémoire tampon de sortie ou d'entrée, en fonction des instructions données directions. Cela inclut l'effacement des tampons de classe internes et des tampons UART (pilote). Termine également les opérations de lecture ou d'écriture en cours. En cas de succès, la commande renvoie true; sinon, elle renvoie false.
Remarque : le port série doit être ouvert avant d'essayer d'effacer des données mises en mémoire tampon ; dans le cas contraire, le message false est renvoyé et le code d'erreur NotOpenError est activé.
[override virtual] void QSerialPort::close()
Réimplémente : QIODevice::close().
Note : Le port série doit être ouvert avant d'essayer de le fermer, sinon le code d'erreur NotOpenError est affiché.
Voir aussi QIODevice::close().
[signal] void QSerialPort::dataBitsChanged(QSerialPort::DataBits dataBits)
Ce signal est émis lorsque les bits de données d'une trame ont été modifiés. Les nouveaux bits de données d'une trame sont transmis en tant que dataBits.
Note : Signal de notification pour la propriété dataBits.
Voir également QSerialPort::dataBits.
[signal] void QSerialPort::dataTerminalReadyChanged(bool set)
Ce signal est émis après que l'état (haut ou bas) du signal de ligne DTR a été modifié. Le nouvel état (haut ou bas) du signal de ligne DTR est transmis à set.
Note : Signal de notification pour la propriété dataTerminalReady.
Voir également QSerialPort::dataTerminalReady.
[signal] void QSerialPort::errorOccurred(QSerialPort::SerialPortError error)
Ce signal est émis lorsqu'une erreur se produit sur le port série. L'adresse error spécifiée décrit le type d'erreur qui s'est produite.
Note : Signal de notification pour la propriété error.
Voir également QSerialPort::error.
[signal] void QSerialPort::flowControlChanged(QSerialPort::FlowControl flow)
Ce signal est émis lorsque le mode de contrôle du flux a été modifié. Le nouveau mode de contrôle de flux est transmis en tant que flow.
Note : Signal de notification pour la propriété flowControl.
Voir également QSerialPort::flowControl.
bool QSerialPort::flush()
Cette fonction écrit autant de données que possible depuis le tampon d'écriture interne vers le port série sous-jacent sans bloquer. Si des données ont été écrites, cette fonction renvoie true; sinon, elle renvoie false.
Appelez cette fonction pour envoyer immédiatement les données mises en mémoire tampon au port série. Le nombre d'octets écrits avec succès dépend du système d'exploitation. Dans la plupart des cas, il n'est pas nécessaire d'appeler cette fonction, car la classe QSerialPort commence à envoyer les données automatiquement dès que le contrôle est renvoyé à la boucle d'événements. En l'absence d'une boucle d'événements, appelez plutôt waitForBytesWritten().
Remarque : le port série doit être ouvert avant d'essayer d'effacer les données mises en mémoire tampon, sinon la fonction renvoie false et active le code d'erreur NotOpenError.
Voir également write() et waitForBytesWritten().
QSerialPort::Handle QSerialPort::handle() const
Si la plate-forme est prise en charge et que le port série est ouvert, renvoie la poignée native du port série ; sinon, renvoie -1.
Avertissement : Cette fonction est réservée aux experts ; vous l'utilisez à vos risques et périls. En outre, cette fonction ne promet aucune compatibilité entre les versions mineures de Qt.
[override virtual] bool QSerialPort::isSequential() const
Réimplémente : QIODevice::isSequential() const.
Renvoie toujours true. Le port série est un dispositif séquentiel.
[override virtual] bool QSerialPort::open(QIODeviceBase::OpenMode mode)
Réimplémente : QIODevice::open(QIODeviceBase::OpenMode mode).
Ouvre le port série à l'aide de l'OpenMode mode, puis renvoie true en cas de succès ; dans le cas contraire, renvoie false et définit un code d'erreur qui peut être obtenu en appelant la méthode error().
Si le port est ouvert, mais que la définition des paramètres de port souhaités échoue, la méthode renvoie false et ferme le port automatiquement.
Attention : L'adresse mode doit être QIODeviceBase::ReadOnly, QIODeviceBase::WriteOnly, ou QIODeviceBase::ReadWrite. Les autres modes ne sont pas pris en charge.
Remarque : pour des raisons historiques, lors d'une ouverture réussie, le signal errorOccurred() est émis avec le code d'erreur NoError. Ce comportement est conservé pour assurer la compatibilité ascendante.
Voir aussi QIODeviceBase::OpenMode et setPort().
[signal] void QSerialPort::parityChanged(QSerialPort::Parity parity)
Ce signal est émis lorsque le mode de contrôle de la parité a été modifié. Le nouveau mode de contrôle de la parité est transmis en tant que parity.
Note : Signal de notification pour la propriété parity.
Voir aussi QSerialPort::parity.
QSerialPort::PinoutSignals QSerialPort::pinoutSignals()
Renvoie l'état des signaux de ligne dans un format bitmap.
À partir de ce résultat, il est possible d'attribuer l'état du signal souhaité en appliquant un masque "AND", où le masque est la valeur d'énumération souhaitée à partir de QSerialPort::PinoutSignals.
Remarque : cette méthode effectue un appel système, ce qui garantit que les états des signaux de ligne sont renvoyés correctement. Cela est nécessaire lorsque les systèmes d'exploitation sous-jacents ne peuvent pas fournir de notifications appropriées sur les changements.
Remarque : le port série doit être ouvert avant d'essayer d'obtenir les signaux de brochage, sinon la méthode renvoie NoSignal et active le code d'erreur NotOpenError.
Voir également QSerialPort::dataTerminalReady et QSerialPort::requestToSend.
QString QSerialPort::portName() const
Renvoie le nom défini par setPort() ou transmis au constructeur de QSerialPort. Ce nom est court, c'est-à-dire qu'il est extrait et converti à partir de l'emplacement du système de variables internes de l'appareil. L'algorithme de conversion est spécifique à chaque plate-forme :
| Plate-forme | Brève description |
|---|---|
| Windows | Supprime le préfixe "\\N.\N" ou "//./" de l'emplacement du système et renvoie le reste de la chaîne. |
| Unix, BSD | Supprime le préfixe "/dev/" de l'emplacement du système et renvoie le reste de la chaîne. |
Voir également setPortName(), setPort() et QSerialPortInfo::portName().
qint64 QSerialPort::readBufferSize() const
Renvoie la taille du tampon de lecture interne. Cela limite la quantité de données que le client peut recevoir avant d'appeler les méthodes read() ou readAll().
Une taille de tampon de lecture de 0 (par défaut) signifie que le tampon n'a pas de limite de taille, ce qui garantit qu'aucune donnée n'est perdue.
Voir également setReadBufferSize() et read().
[override virtual protected] qint64 QSerialPort::readData(char *data, qint64 maxSize)
Réimplémente : QIODevice::readData(char *data, qint64 maxSize).
[override virtual protected] qint64 QSerialPort::readLineData(char *data, qint64 maxSize)
Réimplémente : QIODevice::readLineData(char *data, qint64 maxSize).
[signal] void QSerialPort::requestToSendChanged(bool set)
Ce signal est émis après que l'état (haut ou bas) du signal de ligne RTS a été modifié. Le nouvel état (haut ou bas) du signal de ligne RTS est transmis en tant que set.
Note : Signal de notification pour la propriété requestToSend.
Voir également QSerialPort::requestToSend.
void QSerialPort::setPort(const QSerialPortInfo &serialPortInfo)
Définit le port stocké dans l'instance d'information sur le port série serialPortInfo.
Voir aussi portName() et QSerialPortInfo.
void QSerialPort::setPortName(const QString &name)
Définit l'adresse name du port série.
Le nom du port série peut être transmis sous la forme d'un nom court ou d'un emplacement système long si nécessaire.
Voir également portName() et QSerialPortInfo.
void QSerialPort::setReadBufferSize(qint64 size)
Fixe la taille du tampon de lecture interne de QSerialPort à size octets.
Si la taille de la mémoire tampon est limitée à une certaine taille, QSerialPort ne mettra pas en mémoire tampon plus de données que cette taille. Le cas particulier d'une taille de tampon de 0 signifie que le tampon de lecture est illimité et que toutes les données entrantes sont mises en mémoire tampon. Il s'agit de la valeur par défaut.
Cette option est utile si les données ne sont lues qu'à certains moments (par exemple dans une application de flux en temps réel) ou si le port série doit être protégé contre la réception d'un trop grand nombre de données, ce qui pourrait éventuellement entraîner une saturation de la mémoire de l'application.
Voir aussi readBufferSize() et read().
[since 6.10] void QSerialPort::setWriteBufferSize(qint64 size)
Fixe la taille du tampon d'écriture interne de QSerialPort à size octets.
L'envoi des données sur le port série est relativement lent, c'est pourquoi, en pratique, lorsque write() est appelé, les données ne sont pas envoyées immédiatement. Elles sont d'abord stockées dans un tampon intermédiaire, puis écrites par morceaux.
Ainsi, une tentative d'écrire trop de données ou d'écrire des données à un taux plus élevé que ce que le port série sous-jacent peut gérer, peut conduire à une situation où le tampon interne va croître. L'application peut alors se retrouver à court de mémoire, en particulier sur un appareil disposant de peu de ressources mémoire.
Cette méthode permet de limiter la mémoire tampon interne à une certaine taille. Si la prochaine tentative d'écriture dépasse la capacité de la mémoire tampon, la méthode write() renvoie le nombre d'octets réellement stockés dans la mémoire tampon. Il incombe à l'utilisateur de répéter la tentative d'écriture avec le reste des octets après la réception du signal bytesWritten() ou après que la méthode waitForBytesWritten() a renvoyé true.
Passer 0 à cette méthode signifie que le tampon d'entrée n'est pas limité et que toutes les données entrantes sont mises en mémoire tampon. Il s'agit de la valeur par défaut.
Cette fonction a été introduite dans Qt 6.10.
Voir aussi writeBufferSize() et write().
[signal, since 6.9] void QSerialPort::settingsRestoredOnCloseChanged(bool restore)
Ce signal est émis lorsque la propriété settingsRestoredOnClose est modifiée. Le paramètre restore contient la nouvelle valeur de la propriété.
Note : Signal de notification pour la propriété settingsRestoredOnClose.
Cette fonction a été introduite dans Qt 6.9.
Voir aussi QSerialPort::settingsRestoredOnClose.
[signal] void QSerialPort::stopBitsChanged(QSerialPort::StopBits stopBits)
Ce signal est émis lorsque le nombre de bits d'arrêt d'une trame a été modifié. Le nouveau nombre de bits d'arrêt dans une trame est transmis en tant que stopBits.
Note : Signal de notification pour la propriété stopBits.
Voir également QSerialPort::stopBits.
[override virtual] bool QSerialPort::waitForBytesWritten(int msecs = 30000)
Réimplémente : QIODevice::waitForBytesWritten(int msecs).
Cette fonction se bloque jusqu'à ce qu'au moins un octet ait été écrit sur le port série et que le signal bytesWritten() ait été émis. La fonction s'arrête au bout de msecs millisecondes ; le délai par défaut est de 30000 millisecondes. Si msecs vaut -1, cette fonction ne s'arrêtera pas.
La fonction renvoie true si le signal bytesWritten() est émis ; sinon, elle renvoie false (si une erreur s'est produite ou si l'opération s'est arrêtée).
[override virtual] bool QSerialPort::waitForReadyRead(int msecs = 30000)
Réimplémente : QIODevice::waitForReadyRead(int msecs).
Cette fonction se bloque jusqu'à ce que de nouvelles données soient disponibles pour la lecture et que le signal readyRead() ait été émis. La fonction s'arrête au bout de msecs millisecondes ; le délai par défaut est de 30000 millisecondes. Si msecs vaut -1, cette fonction ne s'arrêtera pas.
La fonction renvoie true si le signal readyRead() est émis et que de nouvelles données sont disponibles pour la lecture ; sinon, elle renvoie false (si une erreur s'est produite ou si l'opération s'est interrompue).
Voir aussi waitForBytesWritten().
[since 6.10] qint64 QSerialPort::writeBufferSize() const
Renvoie la taille du tampon d'écriture interne.
Une taille de tampon d'écriture de 0 (par défaut) signifie que le tampon n'a pas de limite de taille.
Cette fonction a été introduite dans Qt 6.10.
Voir aussi setWriteBufferSize() et write().
[override virtual protected] qint64 QSerialPort::writeData(const char *data, qint64 maxSize)
Réimplémente : QIODevice::writeData(const char *data, qint64 maxSize).
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.