QSerialPort Class
Fournit des fonctions permettant d'accéder aux ports série. En savoir plus...
| En-tête : | #include <QSerialPort> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS SerialPort) target_link_libraries(mytarget PRIVATE Qt6::SerialPort) |
| qmake : | QT += serialport |
| Hérite de : | 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 à l'aide de la classe d'aide ` QSerialPortInfo `, qui permet de répertorier tous les ports série du système. Cela s'avère utile pour obtenir le nom exact du port série que vous souhaitez utiliser. Vous pouvez transmettre un objet de cette classe d'aide en tant qu'argument aux méthodes ` setPort()` ou ` setPortName()` afin d'attribuer le périphérique série souhaité.
Une fois le port défini, 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 ouvert avec succès, QSerialPort tente de déterminer la configuration actuelle du port et s’initialise. Vous pouvez reconfigurer le port selon les paramètres souhaités à l’aide des méthodes setBaudRate(), setDataBits(), setParity(), setStopBits() et setFlowControl().
Il existe deux propriétés permettant de gérer les signaux des broches : QSerialPort::dataTerminalReady et QSerialPort::requestToSend. Il est également possible d’utiliser la méthode pinoutSignals() pour interroger l’ensemble actuel des signaux des broches.
Une fois que vous savez que les ports sont prêts pour la lecture ou l’écriture, vous pouvez utiliser les méthodes read() ou write(). Vous pouvez également utiliser les méthodes de commodité ` readLine()` et ` readAll()`. Si toutes les données ne sont pas lues en une seule fois, les données restantes seront disponibles ultérieurement, car les nouvelles données entrantes sont ajoutées au tampon de lecture interne de `QSerialPort`. Vous pouvez limiter la taille du tampon de lecture à l'aide de ` 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 implémenter 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 la fonction ` waitForReadyRead()` renvoie ` false`, cela signifie que la connexion a été fermée ou qu’une erreur s’est produite.
Si une erreur se produit à un moment quelconque, QSerialPort émettra le signal errorOccurred(). Vous pouvez également appeler error() pour connaître le type de la dernière erreur survenue.
La programmation avec un port série bloquant est radicalement différente de celle avec un port série non bloquant. Un port série bloquant ne nécessite pas de boucle d’événements et permet généralement d’écrire un code plus simple. Cependant, dans une application avec interface graphique, le port série bloquant ne doit être utilisé que dans des threads non liés à l’interface graphique, afin d’éviter le gel de celle-ci.
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 (operator<<() et operator>>()) de QTextStream et QDataStream. Il convient toutefois de prêter attention à un point : assurez-vous qu’il y a suffisamment de données disponibles avant de tenter une lecture à l’aide de l’opérateur surchargé operator>>().
Voir également QSerialPortInfo.
Documentation sur les types membres
enum QSerialPort::BaudRate
Cette énumération décrit le débit en bauds utilisé par le périphérique de communication.
Remarque : seules les vitesses de transmission standard les plus courantes sont répertoriées dans cette énumération.
| Constante | Valeur | Description |
|---|---|---|
QSerialPort::Baud1200 | 1200 | 1 200 bauds. |
QSerialPort::Baud2400 | 2400 | 2 400 bauds. |
QSerialPort::Baud4800 | 4800 | 4 800 bauds. |
QSerialPort::Baud9600 | 9600 | 9 600 bauds. |
QSerialPort::Baud19200 | 19200 | 19 200 bauds. |
QSerialPort::Baud38400 | 38400 | 38 400 bauds. |
QSerialPort::Baud57600 | 57600 | 57 600 bauds. |
QSerialPort::Baud115200 | 115200 | 115 200 bauds. |
Voir également QSerialPort::baudRate.
enum QSerialPort::DataBits
Cette énumération indique 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. Elle est utilisée pour le code Baudot. Elle n'a généralement de sens qu'avec des équipements anciens tels que les téléscripteurs. |
QSerialPort::Data6 | 6 | Le nombre de bits de données dans chaque caractère est de 6. Elle est rarement utilisée. |
QSerialPort::Data7 | 7 | Le nombre de bits de données par caractère est de 7. Cette valeur est utilisée pour le véritable ASCII. Elle n'a généralement de sens qu'avec des équipements anciens, tels que les téléscripteurs. |
QSerialPort::Data8 | 8 | Chaque caractère comporte 8 bits de données. Ce format 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 sens possibles de transmission des données.
Remarque : cette énumération sert à définir la vitesse de transmission de l'appareil séparément pour chaque sens sur certains systèmes d'exploitation (par exemple, de type POSIX).
| Constante | Valeur | Description |
|---|---|---|
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 Direction.
enum QSerialPort::FlowControl
Cette énumération décrit le contrôle de flux utilisé.
| Constante | Valeur | Description |
|---|---|---|
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 réglage 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 « 1 » dans chaque caractère, y compris le bit de parité, est toujours impair. Cela garantit qu’au moins une transition d’état se produit dans chaque caractère. |
QSerialPort::SpaceParity | 4 | Parité « espace ». Le bit de parité est transmis à l'état « espace » du signal. Il ne fournit aucune information de détection d'erreur. |
QSerialPort::MarkParity | 5 | Parité « Mark ». Le bit de parité est toujours défini sur l’état « mark » (1 logique). Il ne fournit aucune information de détection d’erreur. |
Voir également QSerialPort::parity.
enum QSerialPort::PinoutSignal
flags QSerialPort::PinoutSignals
Cette énumération décrit les signaux possibles du brochage RS-232.
| Constante | Valeur | Description |
|---|---|---|
QSerialPort::NoSignal | 0x00 | Ligne inactive |
QSerialPort::DataTerminalReadySignal | 0x04 | DTR (Data Terminal Ready). |
QSerialPort::DataCarrierDetectSignal | 0x08 | DCD (détection de la porteuse). |
QSerialPort::DataSetReadySignal | 0x10 | DSR (Prêt du poste de données). |
QSerialPort::RingIndicatorSignal | 0x20 | RNG (indicateur de sonnerie). |
QSerialPort::RequestToSendSignal | 0x40 | RTS (Demande d'émission). |
QSerialPort::ClearToSendSignal | 0x80 | CTS (Prêt à envoyer). |
QSerialPort::SecondaryTransmittedDataSignal | 0x100 | STD (Données transmises secondaires). |
QSerialPort::SecondaryReceivedDataSignal | 0x200 | SRD (données secondaires reçues). |
Le type PinoutSignals est un typedef pour QFlags<PinoutSignal>. Il stocke une combinaison OR de valeurs PinoutSignal.
Voir également pinoutSignals(), QSerialPort::dataTerminalReady et QSerialPort::requestToSend.
enum QSerialPort::SerialPortError
Cette énumération décrit les erreurs pouvant être contenues dans la propriété « QSerialPort::error ».
| Constante | Valeur | Description |
|---|---|---|
QSerialPort::NoError | 0 | Aucune erreur ne s'est produite. |
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 périphérique déjà ouvert par un autre processus ou par un utilisateur ne disposant pas des autorisations et des identifiants nécessaires pour l'ouvrir. |
QSerialPort::OpenError | 3 | Une erreur s'est produite lors de la tentative d'ouverture d'un périphérique déjà ouvert dans cet objet. |
QSerialPort::NotOpenError | 10 | Cette erreur se produit lorsqu'une opération est exécutée alors qu'elle ne peut aboutir que si le périphérique est ouvert. Cette valeur a été introduite dans la version 5.2 d'QtSerialPort. |
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 a été retiré de manière inattendue du système. |
QSerialPort::UnsupportedOperationError | 7 | L’opération demandée sur le périphérique n’est pas prise en charge ou est interdite par le système d’exploitation en cours d’exécution. |
QSerialPort::TimeoutError | 9 | Une erreur de délai d'attente s'est produite. Cette valeur a été introduite dans la version 5.2 d'QtSerialPort. |
QSerialPort::UnknownError | 8 | Une erreur non identifiée s'est produite. |
Voir également QSerialPort::error.
enum QSerialPort::StopBits
Cette énumération indique 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. Cette option est réservée à 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 la vitesse de transmission pour la direction souhaitée
Si la configuration aboutit ou si elle est définie avant l’ouverture du port, la méthode renvoie true; dans le cas contraire, elle renvoie false et définit un code d’erreur accessible via la valeur de la propriété QSerialPort::error. Pour définir la vitesse de transmission, utilisez l’énumération QSerialPort::BaudRate ou toute valeur qint32 positive.
Remarque : si le paramètre est défini avant l'ouverture du port, la configuration effective du port série s’effectue automatiquement dans la méthode ` QSerialPort::open()` immédiatement après la réussite de l’ouverture du port.
Avertissement : la configuration du drapeau « AllDirections » est prise en charge sur toutes les plateformes. Windows ne prend en charge que ce mode.
Avertissement : renvoie un débit en bauds identique dans les deux sens sous Windows.
La valeur par défaut est Baud9600, soit 9 600 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
Remarque : cette propriété prend en charge les liaisons de type « QProperty ».
Cette propriété contient l'état de la ligne de transmission en cas de rupture
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 de tenter de définir ou d’obtenir cette propriété ; sinon, la fonction renvoie false et définit le code d’erreur NotOpenError. Ce comportement est quelque peu inhabituel par rapport aux réglages habituels des propriétés Qt d’une classe. Il s'agit toutefois d'un cas d'utilisation particulier, car la propriété est définie via une interaction avec le noyau et le matériel. Par conséquent, ces deux scénarios ne peuvent pas être entièrement comparés l'un à l'autre.
Fonctions d’accès :
| bool | isBreakEnabled() const |
| bool | setBreakEnabled(bool set = true) |
Signal de notification :
| void | breakEnabledChanged(bool set) |
[bindable] dataBits : DataBits
Remarque : cette propriété prend en charge les liaisons de type « QProperty ».
Cette propriété contient les bits de données d'une trame
Si la configuration aboutit ou est définie avant l’ouverture du port, renvoie « true » ; dans le cas contraire, renvoie « false » et définit un code d’erreur accessible via la valeur de la propriété « QSerialPort::error ».
Remarque : si la configuration est définie avant l’ouverture du port, la configuration effective du port série est effectuée automatiquement dans la méthode ` QSerialPort::open()` immédiatement après la réussite de l’ouverture du port.
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 « true » est activé, le signal DTR est défini sur haut ; sinon, il est défini sur bas.
Remarque : le port série doit être ouvert avant de tenter de définir ou d’obtenir cette propriété ; sinon, la valeur « false » est renvoyée et le code d’erreur est défini sur « NotOpenError ».
Fonctions d'accès :
| bool | isDataTerminalReady() |
| bool | setDataTerminalReady(bool set) |
Signal de notification :
| void | dataTerminalReadyChanged(bool set) |
Voir également pinoutSignals().
[bindable read-only] error : SerialPortError
Remarque : cette propriété prend en charge les liaisons de type « 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 la méthode 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 est défini par défaut sur QSerialPort::NoError après un appel à clearError()
Fonctions d’accès :
| QSerialPort::SerialPortError | error() const |
| void | clearError() |
Signal de notification :
| void | errorOccurred(QSerialPort::SerialPortError error) |
[bindable] flowControl : FlowControl
Remarque : cette propriété prend en charge les liaisons de type « QProperty ».
Cette propriété contient le mode de contrôle de flux souhaité
Si la configuration aboutit ou est définie avant l’ouverture du port, la méthode renvoie « true » ; dans le cas contraire, elle renvoie « false » et définit un code d’erreur accessible via la valeur de la propriété « QSerialPort::error ».
Remarque : si le paramètre est défini avant l’ouverture du port, la configuration effective du port série s’effectue automatiquement dans la méthode QSerialPort::open() immédiatement après la réussite de l’ouverture du port.
La valeur par défaut est NoFlowControl, c'est-à-dire sans 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
Remarque : cette propriété prend en charge les liaisons de type « QProperty ».
Cette propriété définit le mode de contrôle de parité
Si la configuration aboutit ou est définie avant l’ouverture du port, la méthode renvoie « true » ; dans le cas contraire, elle renvoie « false » et définit un code d’erreur accessible via la valeur de la propriété « QSerialPort::error ».
Remarque : si le paramétrage est défini avant l’ouverture du port, la configuration effective du port série s’effectue automatiquement dans la méthode QSerialPort::open() immédiatement après la réussite de l’ouverture du port.
La valeur par défaut est NoParity, c’est-à-dire aucune parité.
Avertissement : certains systèmes d’exploitation UNIX (par exemple macOS) ne prennent pas en charge le drapeau CMSPAR. Sur ces systèmes, la configuration de la parité Mark or Space n’est pas prise 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 « true » est activé, le signal RTS est défini sur haut ; sinon, il est défini sur bas.
Remarque : le port série doit être ouvert avant de tenter de définir ou d’obtenir cette propriété ; sinon, la valeur « false » est renvoyée et le code d’erreur est défini sur « NotOpenError ».
Remarque : toute tentative de contrôle du signal RTS en 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 également pinoutSignals().
[since 6.9] settingsRestoredOnClose : bool
Cette propriété détermine si les paramètres du port doivent être restaurés à la fermeture ou non
Une fois le port ouvert, la classe met en cache ses paramètres avant d'appliquer ceux définis par l'utilisateur.
Si la propriété est définie sur « 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 ignorés.
La valeur par défaut est « true ».
Remarque : cette propriété peut ne pas avoir d’effet sur certains systèmes d’exploitation. Par exemple, macOS semble toujours restaurer les paramètres par défaut du port série lorsque celui-ci est fermé.
Cette énumération a été introduite dans Qt 6.9.
Fonctions d'accès :
| bool | settingsRestoredOnClose() const |
| void | setSettingsRestoredOnClose(bool restore) |
Signal de notification :
| void | settingsRestoredOnCloseChanged(bool restore) |
[bindable] stopBits : StopBits
Remarque : cette propriété prend en charge les liaisons de type « QProperty ».
Cette propriété contient le nombre de bits d'arrêt dans une trame
Si la configuration aboutit ou est effectuée avant l’ouverture du port, la méthode renvoie « true » ; dans le cas contraire, elle renvoie « false » et définit un code d’erreur accessible via la valeur de la propriété « QSerialPort::error ».
Remarque : si le paramétrage est effectué avant l’ouverture du port, la configuration effective du port série est effectuée automatiquement dans la méthode ` QSerialPort::open()` immédiatement après la réussite de l’ouverture du port.
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 de notification :
| void | stopBitsChanged(QSerialPort::StopBits stopBits) |
Documentation des fonctions membres
[explicit] QSerialPort::QSerialPort(QObject *parent = nullptr)
Crée un nouvel objet de port série à l'aide de l'parent on fournie.
[explicit] QSerialPort::QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr)
Crée un nouvel objet de port série avec l’ parent on fournie afin de représenter le port série à l’aide de la classe d’aide spécifiée serialPortInfo.
[explicit] QSerialPort::QSerialPort(const QString &name, QObject *parent = nullptr)
Crée un nouvel objet de port série à partir de l'parent fournie afin de représenter le port série dont l'name est spécifiée.
Le nom doit respecter 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 une fois que la vitesse de transmission a été modifiée. La nouvelle vitesse de transmission est transmise via baudRate et les directions via directions.
Remarque : signalde notification pour la propriété baudRate.
Voir également 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 également 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 la fonction flush() est appelée.
Voir également 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 à partir du port série ; sinon, renvoie ` false`.
Voir également readLine().
bool QSerialPort::clear(QSerialPort::Directions directions = AllDirections)
Efface tous les caractères du tampon de sortie ou d’entrée, selon les instructions fournies directions. Cela inclut l’effacement des tampons internes de la classe et des tampons UART (pilote). Met également fin aux opérations de lecture ou d’écriture en cours. En cas de succès, renvoie true; sinon, renvoie false.
Remarque : le port série doit être ouvert avant de tenter d'effacer des données mises en mémoire tampon ; sinon, la fonction renvoie « false » et définit le code d'erreur « NotOpenError ».
[override virtual] void QSerialPort::close()
Réimplémente : QIODevice::close().
Remarque : le port série doit être ouvert avant de tenter de le fermer ; sinon, la fonction renvoie le code d'erreur NotOpenError.
Voir également QIODevice::close().
[signal] void QSerialPort::dataBitsChanged(QSerialPort::DataBits dataBits)
Ce signal est émis après la modification des bits de données d'une trame. Les nouveaux bits de données d'une trame sont transmis sous la forme « dataBits ».
Remarque : signalde 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 changé. Le nouvel état (haut ou bas) du signal de ligne DTR est transmis via la propriété set.
Remarque : signalde 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 au niveau du port série. L'error spécifiée décrit le type d'erreur survenue.
Remarque : signalde notification pour la propriété « error ».
Voir également QSerialPort::error.
[signal] void QSerialPort::flowControlChanged(QSerialPort::FlowControl flow)
Ce signal est émis après la modification du mode de contrôle du débit. Le nouveau mode de contrôle du débit est transmis sous la forme flow.
Remarque : signalde 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 blocage. 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 vers le 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 rendu à la boucle d'événements. En l'absence de boucle d'événements, appelez plutôt ` waitForBytesWritten()`.
Remarque : le port série doit être ouvert avant de tenter de vider les données mises en mémoire tampon ; sinon, la fonction renvoie false et définit le code d'erreur NotOpenError.
Voir également write() et waitForBytesWritten().
QSerialPort::Handle QSerialPort::handle() const
Si la plateforme est prise en charge et que le port série est ouvert, renvoie le descripteur natif du port série ; sinon, renvoie ` -1`.
Avertissement : cette fonction est réservée aux utilisateurs expérimentés ; utilisez-la à vos propres risques. De plus, cette fonction ne bénéficie d'aucune garantie de 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 périphérique séquentiel.
[override virtual] bool QSerialPort::open(QIODeviceBase::OpenMode mode)
Réimplémente : QIODevice::open(mode OpenMode de QIODeviceBase).
Ouvre le port série en utilisant le mode OpenMode mode, puis renvoie true en cas de succès ; sinon, 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 configuration des paramètres souhaités échoue, la méthode renvoie false et ferme automatiquement le port.
Avertissement : le signal « mode » doit être « QIODeviceBase::ReadOnly », « QIODeviceBase::WriteOnly » ou « QIODeviceBase::ReadWrite ». Les autres modes ne sont pas pris en charge.
Remarque : pour des raisons historiques, lorsqu’une ouverture réussit, le signal errorOccurred() est émis avec le code d’erreur NoError. Ce comportement est conservé pour assurer la rétrocompatibilité.
Voir également QIODeviceBase::OpenMode et setPort().
[signal] void QSerialPort::parityChanged(QSerialPort::Parity parity)
Ce signal est émis une fois que le mode de contrôle de parité a été modifié. Le nouveau mode de contrôle de parité est transmis via la propriété parity.
Remarque : signalde notification pour la propriété parity.
Voir également ` QSerialPort::parity`.
QSerialPort::PinoutSignals QSerialPort::pinoutSignals()
Renvoie l'état des signaux de ligne au format bitmap.
À partir de ce résultat, il est possible de déterminer l'état du signal souhaité en appliquant un masque « AND », où le masque correspond à la valeur d'énumération souhaitée issue de QSerialPort::PinoutSignals.
Remarque : cette méthode effectue un appel système, garantissant ainsi que les états des signaux de ligne sont correctement renvoyés. Cela est nécessaire lorsque les systèmes d’exploitation sous-jacents ne peuvent pas fournir de notifications appropriées concernant les changements.
Remarque : le port série doit être ouvert avant de tenter d’obtenir les signaux de broches ; sinon, la fonction renvoie « NoSignal » et définit le code d’erreur « NotOpenError ».
Voir également QSerialPort::dataTerminalReady et QSerialPort::requestToSend.
QString QSerialPort::portName() const
Renvoie le nom défini par la fonction ` setPort()` ou transmis au constructeur ` QSerialPort `. Ce nom est abrégé, c'est-à-dire qu'il est extrait et converti à partir de l'emplacement de la variable système interne de l'appareil. L'algorithme de conversion dépend de la plateforme :
| Plateforme | Brève description |
|---|---|
| Windows | Supprime le préfixe « \\.\ » ou « //./ » de l'emplacement système et renvoie le reste de la chaîne. |
| Unix, BSD | Supprime le préfixe « /dev/ » de l'emplacement 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 (valeur 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émentation de : QIODevice::readData(char *data, qint64 maxSize).
[override virtual protected] qint64 QSerialPort::readLineData(char *data, qint64 maxSize)
Réimplémentation de : 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 changé. Le nouvel état (haut ou bas) du signal de ligne RTS est transmis via la propriété set.
Remarque : signalde notification pour la propriété requestToSend.
Voir également QSerialPort::requestToSend.
void QSerialPort::setPort(const QSerialPortInfo &serialPortInfo)
Définit le port enregistré dans l'instance d'informations sur le port série serialPortInfo.
Voir également portName() et QSerialPortInfo.
void QSerialPort::setPortName(const QString &name)
Définit l'name s du port série.
Le nom du port série peut être fourni sous forme de nom court ou, si nécessaire, d’emplacement système complet.
Remarque : cette fonction permet de configurer des ports qui ne figurent pas dans l’ list of available ports, ou pour lesquels la création d’une instance de ` QSerialPortInfo ` avec la chaîne de caractères du nom renvoie un objet ` null `. Si cela n’est pas une contrainte, utilisez plutôt ` setPort()` après avoir vérifié que le nom correspond à un objet ` QSerialPortInfo ` valide.
Voir également portName() et QSerialPortInfo.
void QSerialPort::setReadBufferSize(qint64 size)
Définit la taille du tampon de lecture interne de ` QSerialPort` à size octets.
Si la taille du tampon est limitée à une certaine valeur, QSerialPort ne mettra pas en 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 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 streaming en temps réel) ou si le port série doit être protégé contre la réception d’un volume trop important de données, ce qui pourrait finir par entraîner un épuisement de la mémoire de l’application.
Le passage d’une valeur négative désactive le tampon interne, bloquant ainsi toute lecture.
Voir également readBufferSize() et read().
[since 6.10] void QSerialPort::setWriteBufferSize(qint64 size)
Définit la taille du tampon d'écriture interne de la fonction ` QSerialPort` à size octets.
L'envoi de données via un port série est relativement lent ; par conséquent, dans la pratique, les données ne sont pas envoyées immédiatement lorsque la fonction write() est appelée. Elles sont d'abord stockées dans un tampon intermédiaire, puis écrites par blocs.
Ainsi, l'écriture d'un volume trop important de données, ou à un débit supérieur à celui que le port série sous-jacent peut gérer, peut entraîner une augmentation de la taille du tampon interne. Cela peut finir par provoquer un épuisement de la mémoire de l'application, en particulier sur un appareil disposant de faibles ressources mémoire.
Cette méthode permet de limiter la taille du tampon interne à une certaine valeur. Si la tentative d’écriture suivante dépasse la capacité du tampon, la méthode ` write()` renvoie le nombre d’octets qui ont effectivement été stockés dans le tampon. Il incombe à l’utilisateur de répéter la tentative d’écriture avec le reste des octets après réception du signal ` bytesWritten()`, ou après que la méthode ` waitForBytesWritten()` a renvoyé ` true`.
Le fait de passer 0 à cette méthode signifie que le tampon d’écriture n’est pas limité et que toutes les données transmises à write() sont mises en tampon. Il s’agit du comportement par défaut.
Le passage d’une valeur négative a le même effet que le passage de 0.
Cette fonction a été introduite dans Qt 6.10.
Voir également ` 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é.
Remarque : signalde notification pour la propriété settingsRestoredOnClose.
Cette fonction a été introduite dans Qt 6.9.
Voir également 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 d'une trame est transmis via la propriété stopBits.
Remarque : signalde notification pour la propriété stopBits.
Voir également QSerialPort::stopBits.
[override virtual] bool QSerialPort::waitForBytesWritten(int msecs = 30000)
Réimplémentation de : QIODevice::waitForBytesWritten(int msecs).
Cette fonction reste bloquée 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 expire après msecs millisecondes ; le délai d’expiration par défaut est de 30 000 millisecondes. Si msecs vaut -1, cette fonction n’expire 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 a expiré).
[override virtual] bool QSerialPort::waitForReadyRead(int msecs = 30000)
Réimplémentation de : QIODevice::waitForReadyRead(int msecs).
Cette fonction reste bloquée jusqu’à ce que de nouvelles données soient disponibles en lecture et que le signal readyRead() ait été émis. La fonction expire après msecs millisecondes ; le délai d’expiration par défaut est de 30000 millisecondes. Si msecs vaut -1, cette fonction n’expire 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 a expiré).
Voir également waitForBytesWritten().
[since 6.10] qint64 QSerialPort::writeBufferSize() const
Renvoie la taille du tampon d'écriture interne.
Une taille de tampon d'écriture de 0 (valeur par défaut) signifie que le tampon n'a pas de limite de taille.
Cette fonction a été introduite dans Qt 6.10.
Voir également setWriteBufferSize() et write().
[override virtual protected] qint64 QSerialPort::writeData(const char *data, qint64 maxSize)
Réimplémentation de : 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.