QSerialPort Class

Bietet Funktionen für den Zugriff auf serielle Schnittstellen. Mehr...

Header: #include <QSerialPort>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialPort)
target_link_libraries(mytarget PRIVATE Qt6::SerialPort)
qmake: QT += serialport
Vererbt: QIODevice

Hinweis: Alle Funktionen in dieser Klasse sind reentrant.

Öffentliche Typen

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 }

Eigenschaften

Öffentliche Funktionen

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)
bool setStopBits(QSerialPort::StopBits stopBits)
QSerialPort::StopBits stopBits() const

Reimplementierte öffentliche Funktionen

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

Signale

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)
void stopBitsChanged(QSerialPort::StopBits stopBits)

Reimplementierte geschützte Funktionen

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

Detaillierte Beschreibung

Sie können Informationen über die verfügbaren seriellen Schnittstellen erhalten, indem Sie die Hilfsklasse QSerialPortInfo verwenden, die eine Aufzählung aller seriellen Schnittstellen im System ermöglicht. Dies ist nützlich, um den richtigen Namen der seriellen Schnittstelle zu erhalten, die Sie verwenden möchten. Sie können ein Objekt der Hilfsklasse als Argument an die Methoden setPort() oder setPortName() übergeben, um das gewünschte serielle Gerät zuzuweisen.

Nachdem Sie die Schnittstelle festgelegt haben, können Sie sie mit der Methode open() im Nur-Lese- (r/o), Nur-Schreib- (w/o) oder Lese-Schreib-Modus (r/w) öffnen.

Hinweis: Die serielle Schnittstelle wird immer mit exklusivem Zugriff geöffnet (d.h. kein anderer Prozess oder Thread kann auf eine bereits geöffnete serielle Schnittstelle zugreifen).

Verwenden Sie die Methode close(), um die Schnittstelle zu schließen und die E/A-Operationen abzubrechen.

Nach dem erfolgreichen Öffnen versucht QSerialPort, die aktuelle Konfiguration der Schnittstelle zu ermitteln und initialisiert sich selbst. Sie können die Schnittstelle mit den Methoden setBaudRate(), setDataBits(), setParity(), setStopBits() und setFlowControl() auf die gewünschte Einstellung umkonfigurieren.

Es gibt eine Reihe von Eigenschaften, um mit den Pinout-Signalen zu arbeiten, nämlich: QSerialPort::dataTerminalReady, QSerialPort::requestToSend. Es ist auch möglich, die Methode pinoutSignals() zu verwenden, um die aktuell eingestellten Pinout-Signale abzufragen.

Sobald Sie wissen, dass die Anschlüsse zum Lesen oder Schreiben bereit sind, können Sie die Methoden read() oder write() verwenden. Alternativ können auch die Komfortmethoden readLine() und readAll() aufgerufen werden. Wenn nicht alle Daten auf einmal gelesen werden, stehen die verbleibenden Daten für später zur Verfügung, wenn neue eingehende Daten an den internen Lesepuffer von QSerialPort angehängt werden. Sie können die Größe des Lesepuffers mit setReadBufferSize() begrenzen.

QSerialPort bietet eine Reihe von Funktionen, die den aufrufenden Thread suspendieren, bis bestimmte Signale ausgegeben werden. Diese Funktionen können verwendet werden, um blockierende serielle Schnittstellen zu implementieren:

  • waitForReadyRead() blockiert Aufrufe, bis neue Daten zum Lesen verfügbar sind.
  • waitForBytesWritten() blockiert Aufrufe, bis eine Nutzlast an Daten in die serielle Schnittstelle geschrieben wurde.

Siehe das folgende Beispiel:

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;
}

Wenn waitForReadyRead() false zurückgibt, wurde die Verbindung geschlossen oder es ist ein Fehler aufgetreten.

Wenn zu irgendeinem Zeitpunkt ein Fehler auftritt, gibt QSerialPort das Signal errorOccurred() aus. Sie können auch error() aufrufen, um den Typ des zuletzt aufgetretenen Fehlers zu ermitteln.

Die Programmierung mit einer blockierenden seriellen Schnittstelle unterscheidet sich grundlegend von der Programmierung mit einer nicht-blockierenden seriellen Schnittstelle. Eine blockierende serielle Schnittstelle erfordert keine Ereignisschleife und führt normalerweise zu einfacherem Code. In einer GUI-Anwendung sollte die blockierende serielle Schnittstelle jedoch nur in Nicht-GUI-Threads verwendet werden, um ein Einfrieren der Benutzeroberfläche zu vermeiden.

Weitere Details zu diesen Ansätzen finden Sie in den Beispielanwendungen.

Die Klasse QSerialPort kann auch mit den Stream-Operatoren (operator<<() und operator>>()) von QTextStream und QDataStream verwendet werden. Es gibt jedoch ein Problem, das zu beachten ist: Stellen Sie sicher, dass genügend Daten vorhanden sind, bevor Sie versuchen, mit dem überladenen Operator operator>>() zu lesen.

Siehe auch QSerialPortInfo.

Dokumentation der Mitgliedstypen

enum QSerialPort::BaudRate

Dieses Enum beschreibt die Baudrate, mit der das Kommunikationsgerät arbeitet.

Hinweis: In dieser Aufzählung sind nur die gängigsten Standard-Baudraten aufgeführt.

KonstanteWertBeschreibung
QSerialPort::Baud120012001200 Baud.
QSerialPort::Baud240024002400 Baud.
QSerialPort::Baud480048004800 Baud.
QSerialPort::Baud960096009600 Baud.
QSerialPort::Baud192001920019200 Baud.
QSerialPort::Baud384003840038400 Baud.
QSerialPort::Baud576005760057600 Baud.
QSerialPort::Baud115200115200115200 Baud.

Siehe auch QSerialPort::baudRate.

enum QSerialPort::DataBits

Diese Aufzählung beschreibt die Anzahl der verwendeten Datenbits.

KonstanteWertBeschreibung
QSerialPort::Data55Die Anzahl der Datenbits in jedem Zeichen ist 5. Sie wird für den Baudot-Code verwendet. Sie ist im Allgemeinen nur bei älteren Geräten wie Fernschreibern sinnvoll.
QSerialPort::Data66Die Anzahl der Datenbits pro Zeichen ist 6. Sie wird selten verwendet.
QSerialPort::Data77Die Anzahl der Datenbits in jedem Zeichen ist 7. Sie wird für echtes ASCII verwendet. Sie ist im Allgemeinen nur bei älteren Geräten wie Fernschreibern sinnvoll.
QSerialPort::Data88Die Anzahl der Datenbits pro Zeichen ist 8. Sie wird für die meisten Datenarten verwendet, da diese Größe der Größe eines Bytes entspricht. In neueren Anwendungen wird es fast durchgängig verwendet.

Siehe auch QSerialPort::dataBits.

enum QSerialPort::Direction
flags QSerialPort::Directions

Dieses Enum beschreibt die möglichen Richtungen der Datenübertragung.

Hinweis: Diese Aufzählung wird verwendet, um die Baudrate des Geräts auf einigen Betriebssystemen (z.B. POSIX-ähnlichen) für jede Richtung separat einzustellen.

KonstanteWertBeschreibung
QSerialPort::Input1Eingangsrichtung.
QSerialPort::Output2Ausgangsrichtung.
QSerialPort::AllDirectionsInput | OutputSimultan in zwei Richtungen.

Der Typ Directions ist ein Typedef für QFlags<Direction>. Er speichert eine ODER-Kombination von Direction-Werten.

enum QSerialPort::FlowControl

Diese Aufzählung beschreibt die verwendete Flusskontrolle.

KonstanteWertBeschreibung
QSerialPort::NoFlowControl0Keine Flusskontrolle.
QSerialPort::HardwareControl1Hardware-Flusskontrolle (RTS/CTS).
QSerialPort::SoftwareControl2Software-Flusskontrolle (XON/XOFF).

Siehe auch QSerialPort::flowControl.

enum QSerialPort::Parity

Diese Aufzählung beschreibt das verwendete Paritätsschema.

KonstanteWertBeschreibung
QSerialPort::NoParity0Es wird kein Paritätsbit gesendet. Dies ist die häufigste Paritätseinstellung. Die Fehlererkennung erfolgt durch das Kommunikationsprotokoll.
QSerialPort::EvenParity2Die Anzahl der 1-Bits in jedem Zeichen, einschließlich des Paritätsbits, ist immer gerade.
QSerialPort::OddParity3Die Anzahl der 1-Bits in jedem Zeichen, einschließlich des Paritätsbits, ist immer ungerade. Damit wird sichergestellt, dass in jedem Zeichen mindestens ein Zustandsübergang stattfindet.
QSerialPort::SpaceParity4Leerzeichen-Parität. Das Paritätsbit wird im Zustand des Leerzeichensignals gesendet. Es liefert keine Informationen zur Fehlererkennung.
QSerialPort::MarkParity5Mark-Parität. Das Paritätsbit wird immer auf den Zustand des Markierungssignals (logisch 1) gesetzt. Es liefert keine Informationen zur Fehlererkennung.

Siehe auch QSerialPort::parity.

enum QSerialPort::PinoutSignal
flags QSerialPort::PinoutSignals

Diese Aufzählung beschreibt die möglichen RS-232 Pinout-Signale.

KonstanteWertBeschreibung
QSerialPort::NoSignal0x00Keine Leitung aktiv
QSerialPort::DataTerminalReadySignal0x04DTR (Data Terminal Ready).
QSerialPort::DataCarrierDetectSignal0x08DCD (Data Carrier Detect).
QSerialPort::DataSetReadySignal0x10DSR (Datensatz bereit).
QSerialPort::RingIndicatorSignal0x20RNG (Ring Indicator).
QSerialPort::RequestToSendSignal0x40RTS (Anforderung zum Senden).
QSerialPort::ClearToSendSignal0x80CTS (Clear To Send).
QSerialPort::SecondaryTransmittedDataSignal0x100STD (Sekundär gesendete Daten).
QSerialPort::SecondaryReceivedDataSignal0x200SRD (sekundär empfangene Daten).

Der Typ PinoutSignals ist ein Typedef für QFlags<PinoutSignal>. Er speichert eine ODER-Kombination von PinoutSignal-Werten.

Siehe auch pinoutSignals(), QSerialPort::dataTerminalReady, und QSerialPort::requestToSend.

enum QSerialPort::SerialPortError

Diese Aufzählung beschreibt die Fehler, die in der Eigenschaft QSerialPort::error enthalten sein können.

KonstanteWertBeschreibung
QSerialPort::NoError0Kein Fehler aufgetreten.
QSerialPort::DeviceNotFoundError1Beim Versuch, ein nicht vorhandenes Gerät zu öffnen, ist ein Fehler aufgetreten.
QSerialPort::PermissionError2Beim Versuch, ein bereits geöffnetes Gerät durch einen anderen Prozess oder einen Benutzer zu öffnen, der nicht über ausreichende Berechtigungen und Anmeldeinformationen zum Öffnen verfügt, ist ein Fehler aufgetreten.
QSerialPort::OpenError3Bei dem Versuch, ein bereits geöffnetes Gerät in diesem Objekt zu öffnen, ist ein Fehler aufgetreten.
QSerialPort::NotOpenError10Dieser Fehler tritt auf, wenn ein Vorgang ausgeführt wird, der nur erfolgreich durchgeführt werden kann, wenn das Gerät geöffnet ist. Dieser Wert wurde in QtSerialPort 5.2 eingeführt.
QSerialPort::WriteError4Beim Schreiben der Daten ist ein E/A-Fehler aufgetreten.
QSerialPort::ReadError5Beim Lesen der Daten ist ein E/A-Fehler aufgetreten.
QSerialPort::ResourceError6Ein E/A-Fehler ist aufgetreten, wenn eine Ressource nicht mehr verfügbar ist, z. B. wenn das Gerät unerwartet aus dem System entfernt wird.
QSerialPort::UnsupportedOperationError7Die angeforderte Geräteoperation wird vom laufenden Betriebssystem nicht unterstützt oder ist verboten.
QSerialPort::TimeoutError9Ein Timeout-Fehler ist aufgetreten. Dieser Wert wurde in QtSerialPort 5.2 eingeführt.
QSerialPort::UnknownError8Ein nicht identifizierter Fehler ist aufgetreten.

Siehe auch QSerialPort::error.

enum QSerialPort::StopBits

Dieses Enum beschreibt die Anzahl der verwendeten Stopbits.

KonstanteWertBeschreibung
QSerialPort::OneStop11 Stoppbit.
QSerialPort::OneAndHalfStop31,5 Stoppbits. Dies gilt nur für die Windows-Plattform.
QSerialPort::TwoStop22 Stoppbits.

Siehe auch QSerialPort::stopBits.

Eigenschaft Dokumentation

baudRate : qint32

Diese Eigenschaft enthält die Datenbaudrate für die gewünschte Richtung

Wenn die Einstellung erfolgreich ist oder vor dem Öffnen des Anschlusses gesetzt wurde, wird true zurückgegeben; andernfalls wird false zurückgegeben und ein Fehlercode gesetzt, der durch Zugriff auf den Wert der Eigenschaft QSerialPort::error ermittelt werden kann. Um die Baudrate einzustellen, verwenden Sie die Aufzählung QSerialPort::BaudRate oder einen beliebigen positiven qint32-Wert.

Hinweis: Wenn die Einstellung vor dem Öffnen des Anschlusses erfolgt, wird die tatsächliche Einstellung des seriellen Anschlusses automatisch in der Methode QSerialPort::open() vorgenommen, gleich nachdem das Öffnen des Anschlusses erfolgreich war.

Achtung! Das Setzen des Flags AllDirections wird auf allen Plattformen unterstützt. Windows unterstützt nur diesen Modus.

Warnung: Gibt unter Windows die gleiche Baudrate in jeder Richtung zurück.

Der Standardwert ist Baud9600, d. h. 9600 Bits pro Sekunde.

Zugriffsfunktionen:

qint32 baudRate(QSerialPort::Directions directions = AllDirections) const
bool setBaudRate(qint32 baudRate, QSerialPort::Directions directions = AllDirections)

Melder-Signal:

void baudRateChanged(qint32 baudRate, QSerialPort::Directions directions)

[bindable] breakEnabled : bool

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält den Zustand der Übertragungsleitung in Pause

Bei Erfolg wird true zurückgegeben, andernfalls false. Wenn das Flag true lautet, befindet sich die Übertragungsleitung im Unterbrechungszustand; andernfalls ist sie im Nicht-Unterbrechungszustand.

Hinweis: Die serielle Schnittstelle muss geöffnet sein, bevor Sie versuchen, diese Eigenschaft zu setzen oder abzurufen; andernfalls wird false zurückgegeben und der Fehlercode NotOpenError gesetzt. Dies ist ein wenig ungewöhnlich im Gegensatz zu den normalen Qt-Eigenschaftseinstellungen einer Klasse. Dies ist jedoch ein spezieller Anwendungsfall, da die Eigenschaft durch die Interaktion mit dem Kernel und der Hardware gesetzt wird. Daher können die beiden Szenarien nicht vollständig miteinander verglichen werden.

[bindable] dataBits : DataBits

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält die Datenbits in einem Frame

Wenn die Einstellung erfolgreich ist oder vor dem Öffnen des Anschlusses gesetzt wurde, wird true zurückgegeben; andernfalls wird false zurückgegeben und ein Fehlercode gesetzt, der durch Zugriff auf den Wert der Eigenschaft QSerialPort::error ermittelt werden kann.

Hinweis: Wenn die Einstellung vor dem Öffnen des Anschlusses vorgenommen wird, erfolgt die eigentliche Einstellung des seriellen Anschlusses automatisch in der Methode QSerialPort::open(), gleich nachdem das Öffnen des Anschlusses erfolgreich war.

Der Standardwert ist Data8, d.h. 8 Datenbits.

dataTerminalReady : bool

Diese Eigenschaft enthält den Zustand (high oder low) des Leitungssignals DTR

Gibt bei Erfolg true zurück, andernfalls false. Wenn das Flag true lautet, wird das DTR-Signal auf high gesetzt, andernfalls auf low.

Hinweis: Die serielle Schnittstelle muss geöffnet sein, bevor versucht wird, diese Eigenschaft zu setzen oder abzurufen; andernfalls wird false zurückgegeben und der Fehlercode auf NotOpenError gesetzt.

Zugriffsfunktionen:

bool isDataTerminalReady()
bool setDataTerminalReady(bool set)

Benachrichtigungssignal:

void dataTerminalReadyChanged(bool set)

Siehe auch pinoutSignals().

[bindable read-only] error : SerialPortError

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält den Fehlerstatus der seriellen Schnittstelle

Der E/A-Gerätestatus gibt einen Fehlercode zurück. Wenn z. B. open() false zurückgibt oder eine Lese-/Schreiboperation -1 zurückgibt, kann diese Eigenschaft verwendet werden, um den Grund für das Scheitern der Operation herauszufinden.

Der Fehlercode wird nach einem Aufruf von clearError() auf den Standardwert QSerialPort::NoError gesetzt.

[bindable] flowControl : FlowControl

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält den gewünschten Flusskontrollmodus

Wenn die Einstellung erfolgreich ist oder vor dem Öffnen des Anschlusses gesetzt wurde, wird true zurückgegeben; andernfalls wird false zurückgegeben und ein Fehlercode gesetzt, der durch Zugriff auf den Wert der Eigenschaft QSerialPort::error ermittelt werden kann.

Hinweis: Wenn die Einstellung vor dem Öffnen des Anschlusses vorgenommen wird, erfolgt die eigentliche Einstellung des seriellen Anschlusses automatisch in der Methode QSerialPort::open(), gleich nachdem das Öffnen des Anschlusses erfolgreich war.

Der Standardwert ist NoFlowControl, d.h. keine Flusskontrolle.

[bindable] parity : Parity

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält den Paritätsprüfungsmodus

Wenn die Einstellung erfolgreich ist oder vor dem Öffnen des Anschlusses gesetzt wurde, wird true zurückgegeben; andernfalls wird false zurückgegeben und ein Fehlercode gesetzt, der durch Zugriff auf den Wert der Eigenschaft QSerialPort::error ermittelt werden kann.

Hinweis: Wenn die Einstellung vor dem Öffnen des Anschlusses gesetzt wird, erfolgt die eigentliche Einstellung des seriellen Anschlusses automatisch in der Methode QSerialPort::open(), gleich nachdem das Öffnen des Anschlusses erfolgreich war.

Der Standardwert ist NoParity, d.h. keine Parität.

requestToSend : bool

Diese Eigenschaft enthält den Zustand (high oder low) des Leitungssignals RTS

Gibt bei Erfolg true zurück, andernfalls false. Wenn das Flag true lautet, wird das RTS-Signal auf high gesetzt, andernfalls auf low.

Hinweis: Die serielle Schnittstelle muss geöffnet sein, bevor versucht wird, diese Eigenschaft zu setzen oder abzurufen; andernfalls wird false zurückgegeben und der Fehlercode auf NotOpenError gesetzt.

Hinweis: Der Versuch, das RTS-Signal im Modus HardwareControl zu steuern, schlägt fehl, und der Fehlercode wird auf UnsupportedOperationError gesetzt, da das Signal automatisch vom Treiber gesteuert wird.

Zugriffsfunktionen:

bool isRequestToSend()
bool setRequestToSend(bool set)

Melder-Signal:

void requestToSendChanged(bool set)

Siehe auch pinoutSignals().

[bindable] stopBits : StopBits

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält die Anzahl der Stoppbits in einem Frame

Wenn die Einstellung erfolgreich ist oder vor dem Öffnen des Anschlusses gesetzt wurde, wird true zurückgegeben; andernfalls wird false zurückgegeben und ein Fehlercode gesetzt, der durch Zugriff auf den Wert der Eigenschaft QSerialPort::error ermittelt werden kann.

Hinweis: Wenn die Einstellung vor dem Öffnen des Anschlusses vorgenommen wird, erfolgt die eigentliche Einstellung des seriellen Anschlusses automatisch in der Methode QSerialPort::open(), gleich nachdem das Öffnen des Anschlusses erfolgreich war.

Der Standardwert ist OneStop, d.h. 1 Stoppbit.

Dokumentation der Mitgliedsfunktionen

[explicit] QSerialPort::QSerialPort(QObject *parent = nullptr)

Konstruiert ein neues Objekt für eine serielle Schnittstelle mit der angegebenen parent.

[explicit] QSerialPort::QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr)

Konstruiert ein neues Objekt für die serielle Schnittstelle mit der angegebenen parent, um die serielle Schnittstelle mit der angegebenen Hilfsklasse serialPortInfo zu repräsentieren.

[explicit] QSerialPort::QSerialPort(const QString &name, QObject *parent = nullptr)

Konstruiert ein neues Objekt für eine serielle Schnittstelle mit dem angegebenen parent, um die serielle Schnittstelle mit dem angegebenen name zu repräsentieren.

Der Name sollte ein bestimmtes Format haben; siehe die Methode setPort().

[virtual noexcept] QSerialPort::~QSerialPort()

Schließt die serielle Schnittstelle, falls erforderlich, und zerstört dann das Objekt.

[signal] void QSerialPort::baudRateChanged(qint32 baudRate, QSerialPort::Directions directions)

Dieses Signal wird ausgegeben, nachdem die Baudrate geändert worden ist. Die neue Baudrate wird als baudRate und die Richtung als directions übergeben.

Hinweis: Meldesignal für die Eigenschaft baudRate.

Siehe auch QSerialPort::baudRate.

[override virtual] qint64 QSerialPort::bytesAvailable() const

Reimplements: QIODevice::bytesAvailable() const.

Gibt die Anzahl der eingehenden Bytes zurück, die darauf warten, gelesen zu werden.

Siehe auch bytesToWrite() und read().

[override virtual] qint64 QSerialPort::bytesToWrite() const

Reimplements: QIODevice::bytesToWrite() const.

Gibt die Anzahl der Bytes zurück, die darauf warten, geschrieben zu werden. Die Bytes werden geschrieben, wenn die Kontrolle an die Ereignisschleife zurückgeht oder wenn flush() aufgerufen wird.

Siehe auch bytesAvailable() und flush().

[override virtual] bool QSerialPort::canReadLine() const

Reimplements: QIODevice::canReadLine() const.

Gibt true zurück, wenn eine Datenzeile von der seriellen Schnittstelle gelesen werden kann; andernfalls wird false zurückgegeben.

Siehe auch readLine().

bool QSerialPort::clear(QSerialPort::Directions directions = AllDirections)

Verwirft alle Zeichen aus dem Ausgangs- oder Eingangspuffer, je nach gegebener Richtung directions. Dazu gehört auch das Löschen der internen Klassenpuffer und der UART-Puffer (Treiber). Beendet auch anstehende Lese- oder Schreiboperationen. Bei Erfolg wird true zurückgegeben, andernfalls false.

Hinweis: Die serielle Schnittstelle muss geöffnet sein, bevor versucht wird, gepufferte Daten zu löschen; andernfalls wird false zurückgegeben und der Fehlercode NotOpenError gesetzt.

[override virtual] void QSerialPort::close()

Reimplements: QIODevice::close().

Hinweis: Die serielle Schnittstelle muss geöffnet sein, bevor versucht wird, sie zu schließen; andernfalls wird der Fehlercode NotOpenError gesetzt.

Siehe auch QIODevice::close().

[signal] void QSerialPort::dataBitsChanged(QSerialPort::DataBits dataBits)

Dieses Signal wird ausgegeben, nachdem die Datenbits in einem Rahmen geändert wurden. Die neuen Datenbits in einem Rahmen werden als dataBits übergeben.

Hinweis: Benachrichtigungssignal für die Eigenschaft dataBits.

Siehe auch QSerialPort::dataBits.

[signal] void QSerialPort::dataTerminalReadyChanged(bool set)

Dieses Signal wird ausgegeben, nachdem sich der Zustand (high oder low) des Leitungssignals DTR geändert hat. Der neue Zustand (high oder low) des Leitungssignals DTR wird als set übergeben.

Hinweis: Meldesignal für die Eigenschaft dataTerminalReady.

Siehe auch QSerialPort::dataTerminalReady.

[signal] void QSerialPort::errorOccurred(QSerialPort::SerialPortError error)

Dieses Signal wird ausgegeben, wenn ein Fehler an der seriellen Schnittstelle auftritt. Die angegebene error beschreibt die Art des aufgetretenen Fehlers.

Hinweis: Benachrichtigungssignal für die Eigenschaft error.

Siehe auch QSerialPort::error.

[signal] void QSerialPort::flowControlChanged(QSerialPort::FlowControl flow)

Dieses Signal wird ausgegeben, nachdem der Flusskontrollmodus geändert wurde. Der neue Flusskontrollmodus wird als flow übergeben.

Hinweis: Meldesignal für die Eigenschaft flowControl.

Siehe auch QSerialPort::flowControl.

bool QSerialPort::flush()

Diese Funktion schreibt so viel wie möglich aus dem internen Schreibpuffer auf die darunterliegende serielle Schnittstelle, ohne zu blockieren. Wenn Daten geschrieben wurden, gibt diese Funktion true zurück; andernfalls false.

Rufen Sie diese Funktion auf, um die gepufferten Daten sofort an die serielle Schnittstelle zu senden. Die Anzahl der erfolgreich geschriebenen Bytes hängt vom Betriebssystem ab. In den meisten Fällen muss diese Funktion nicht aufgerufen werden, da die Klasse QSerialPort automatisch mit dem Senden der Daten beginnt, sobald die Kontrolle an die Ereignisschleife zurückgegeben wird. Falls keine Ereignisschleife vorhanden ist, rufen Sie stattdessen waitForBytesWritten() auf.

Hinweis: Die serielle Schnittstelle muss geöffnet sein, bevor versucht wird, die gepufferten Daten zu löschen; andernfalls wird false zurückgegeben und der Fehlercode NotOpenError gesetzt.

Siehe auch write() und waitForBytesWritten().

QSerialPort::Handle QSerialPort::handle() const

Wenn die Plattform unterstützt wird und die serielle Schnittstelle offen ist, wird das native Handle der seriellen Schnittstelle zurückgegeben; andernfalls wird -1 zurückgegeben.

Warnung: Diese Funktion ist nur für Experten gedacht; ihre Verwendung erfolgt auf eigene Gefahr. Außerdem gibt diese Funktion kein Kompatibilitätsversprechen zwischen kleineren Qt-Versionen.

[override virtual] bool QSerialPort::isSequential() const

Reimplements: QIODevice::isSequential() const.

Gibt immer true zurück. Die serielle Schnittstelle ist ein sequentielles Gerät.

[override virtual] bool QSerialPort::open(QIODeviceBase::OpenMode mode)

Reimplements: QIODevice::open(QIODeviceBase::OpenMode mode).

Öffnet die serielle Schnittstelle im OpenMode mode und gibt bei Erfolg true zurück; andernfalls gibt sie false zurück und setzt einen Fehlercode, der durch Aufruf der Methode error() ermittelt werden kann.

Die Methode gibt false zurück, wenn das Öffnen des Anschlusses erfolgreich war, aber keine der Anschlusseinstellungen erfolgreich gesetzt werden konnte. In diesem Fall wird der Anschluss automatisch geschlossen, um den Anschluss nicht mit falschen Einstellungen zu belassen.

Achtung! mode muss QIODeviceBase::ReadOnly, QIODeviceBase::WriteOnly, oder QIODeviceBase::ReadWrite sein. Andere Modi werden nicht unterstützt.

Hinweis: Aus historischen Gründen wird nach einem erfolgreichen Öffnen das Signal errorOccurred() mit dem Fehlercode NoError ausgegeben. Dieses Verhalten wird beibehalten, um die Abwärtskompatibilität zu wahren.

Siehe auch QIODeviceBase::OpenMode und setPort().

[signal] void QSerialPort::parityChanged(QSerialPort::Parity parity)

Dieses Signal wird ausgegeben, nachdem der Paritätsprüfungsmodus geändert wurde. Der neue Paritätsprüfungsmodus wird als parity übergeben.

Hinweis: Meldesignal für die Eigenschaft parity.

Siehe auch QSerialPort::parity.

QSerialPort::PinoutSignals QSerialPort::pinoutSignals()

Gibt den Zustand der Leitungssignale in einem Bitmap-Format zurück.

Aus diesem Ergebnis lässt sich der Zustand des gewünschten Signals durch Anwendung einer Maske "AND" zuordnen, wobei die Maske der gewünschte Aufzählungswert aus QSerialPort::PinoutSignals ist.

Hinweis: Diese Methode führt einen Systemaufruf durch und stellt damit sicher, dass die Zustände der Leitungssignale korrekt zurückgegeben werden. Dies ist notwendig, wenn die zugrundeliegenden Betriebssysteme keine ordnungsgemäßen Benachrichtigungen über die Änderungen liefern können.

Hinweis: Die serielle Schnittstelle muss geöffnet sein, bevor versucht wird, die Pinout-Signale zu erhalten; andernfalls wird NoSignal zurückgegeben und der Fehlercode NotOpenError gesetzt.

Siehe auch QSerialPort::dataTerminalReady und QSerialPort::requestToSend.

QString QSerialPort::portName() const

Gibt den Namen zurück, der durch setPort() gesetzt oder an den QSerialPort -Konstruktor übergeben wurde. Dieser Name ist kurz, d.h. er wird aus der internen Variablen des Gerätes extrahiert und konvertiert. Der Konvertierungsalgorithmus ist plattformspezifisch:

PlattformKurzbeschreibung
WindowsEntfernt das Präfix "\\.\" oder "//./" von der Systemadresse und gibt den Rest der Zeichenkette zurück.
Unix, BSDEntfernt das Präfix "/dev/" von der Systemadresse und gibt den Rest der Zeichenkette zurück.

Siehe auch setPortName(), setPort(), und QSerialPortInfo::portName().

qint64 QSerialPort::readBufferSize() const

Gibt die Größe des internen Lesepuffers zurück. Dadurch wird die Datenmenge begrenzt, die der Client empfangen kann, bevor er die Methoden read() oder readAll() aufruft.

Eine Lesepuffergröße von 0 (Standardwert) bedeutet, dass der Puffer keine Größenbeschränkung hat, wodurch sichergestellt wird, dass keine Daten verloren gehen.

Siehe auch setReadBufferSize() und read().

[override virtual protected] qint64 QSerialPort::readData(char *data, qint64 maxSize)

Reimplements: QIODevice::readData(char *data, qint64 maxSize).

[override virtual protected] qint64 QSerialPort::readLineData(char *data, qint64 maxSize)

Reimplements: QIODevice::readLineData(char *data, qint64 maxSize).

[signal] void QSerialPort::requestToSendChanged(bool set)

Dieses Signal wird ausgegeben, nachdem sich der Zustand (high oder low) des Leitungssignals RTS geändert hat. Der neue Zustand (high oder low) des Leitungssignals RTS wird als set übergeben.

Hinweis: Meldesignal für die Eigenschaft requestToSend.

Siehe auch QSerialPort::requestToSend.

void QSerialPort::setPort(const QSerialPortInfo &serialPortInfo)

Setzt den Anschluss, der in der Instanz für serielle Anschlussinformationen serialPortInfo gespeichert ist.

Siehe auch portName() und QSerialPortInfo.

void QSerialPort::setPortName(const QString &name)

Setzt die name der seriellen Schnittstelle.

Der Name der seriellen Schnittstelle kann entweder als Kurzname oder, falls erforderlich, als langer Systemort übergeben werden.

Siehe auch portName() und QSerialPortInfo.

void QSerialPort::setReadBufferSize(qint64 size)

Setzt die Größe des internen Lesepuffers von QSerialPort auf size Bytes.

Wenn die Puffergröße auf eine bestimmte Größe begrenzt ist, puffert QSerialPort nicht mehr als diese Datenmenge. Der Sonderfall einer Puffergröße von 0 bedeutet, dass der Lesepuffer unbegrenzt ist und alle eingehenden Daten gepuffert werden. Dies ist die Standardeinstellung.

Diese Option ist nützlich, wenn die Daten nur zu bestimmten Zeitpunkten gelesen werden (z. B. in einer Echtzeit-Streaming-Anwendung) oder wenn die serielle Schnittstelle davor geschützt werden soll, zu viele Daten zu empfangen, was dazu führen könnte, dass der Anwendung der Speicher ausgeht.

Siehe auch readBufferSize() und read().

[signal] void QSerialPort::stopBitsChanged(QSerialPort::StopBits stopBits)

Dieses Signal wird ausgegeben, nachdem die Anzahl der Stoppbits in einem Frame geändert wurde. Die neue Anzahl der Stopbits in einem Frame wird als stopBits übergeben.

Hinweis: Benachrichtigungssignal für die Eigenschaft stopBits.

Siehe auch QSerialPort::stopBits.

[override virtual] bool QSerialPort::waitForBytesWritten(int msecs = 30000)

Reimplements: QIODevice::waitForBytesWritten(int msecs).

Diese Funktion blockiert, bis mindestens ein Byte an die serielle Schnittstelle geschrieben wurde und das Signal bytesWritten() ausgegeben wurde. Die Funktion nimmt nach msecs Millisekunden eine Zeitüberschreitung vor; die Standardzeitüberschreitung beträgt 30000 Millisekunden. Wenn msecs -1 ist, wird diese Funktion nicht beendet.

Die Funktion gibt true zurück, wenn das Signal bytesWritten() ausgegeben wurde; andernfalls gibt sie false zurück (wenn ein Fehler aufgetreten ist oder der Vorgang eine Zeitüberschreitung hatte).

[override virtual] bool QSerialPort::waitForReadyRead(int msecs = 30000)

Reimplements: QIODevice::waitForReadyRead(int msecs).

Diese Funktion blockiert, bis neue Daten zum Lesen verfügbar sind und das Signal readyRead() ausgegeben wurde. Die Funktion nimmt nach msecs Millisekunden eine Zeitüberschreitung vor; die Standardzeitüberschreitung beträgt 30000 Millisekunden. Wenn msecs -1 ist, wird diese Funktion nicht beendet.

Die Funktion gibt true zurück, wenn das Signal readyRead() ausgegeben wird und neue Daten zum Lesen verfügbar sind; andernfalls gibt sie false zurück (wenn ein Fehler aufgetreten ist oder der Vorgang eine Zeitüberschreitung hatte).

Siehe auch waitForBytesWritten().

[override virtual protected] qint64 QSerialPort::writeData(const char *data, qint64 maxSize)

Reimplements: QIODevice::writeData(const char *data, qint64 maxSize).

© 2025 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.