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.
Konstante | Wert | Beschreibung |
---|---|---|
QSerialPort::Baud1200 | 1200 | 1200 Baud. |
QSerialPort::Baud2400 | 2400 | 2400 Baud. |
QSerialPort::Baud4800 | 4800 | 4800 Baud. |
QSerialPort::Baud9600 | 9600 | 9600 Baud. |
QSerialPort::Baud19200 | 19200 | 19200 Baud. |
QSerialPort::Baud38400 | 38400 | 38400 Baud. |
QSerialPort::Baud57600 | 57600 | 57600 Baud. |
QSerialPort::Baud115200 | 115200 | 115200 Baud. |
Siehe auch QSerialPort::baudRate.
enum QSerialPort::DataBits
Diese Aufzählung beschreibt die Anzahl der verwendeten Datenbits.
Konstante | Wert | Beschreibung |
---|---|---|
QSerialPort::Data5 | 5 | Die 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::Data6 | 6 | Die Anzahl der Datenbits pro Zeichen ist 6. Sie wird selten verwendet. |
QSerialPort::Data7 | 7 | Die 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::Data8 | 8 | Die 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.
Konstante | Wert | Beschreibung |
---|---|---|
QSerialPort::Input | 1 | Eingangsrichtung. |
QSerialPort::Output | 2 | Ausgangsrichtung. |
QSerialPort::AllDirections | Input | Output | Simultan 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.
Konstante | Wert | Beschreibung |
---|---|---|
QSerialPort::NoFlowControl | 0 | Keine Flusskontrolle. |
QSerialPort::HardwareControl | 1 | Hardware-Flusskontrolle (RTS/CTS). |
QSerialPort::SoftwareControl | 2 | Software-Flusskontrolle (XON/XOFF). |
Siehe auch QSerialPort::flowControl.
enum QSerialPort::Parity
Diese Aufzählung beschreibt das verwendete Paritätsschema.
Konstante | Wert | Beschreibung |
---|---|---|
QSerialPort::NoParity | 0 | Es wird kein Paritätsbit gesendet. Dies ist die häufigste Paritätseinstellung. Die Fehlererkennung erfolgt durch das Kommunikationsprotokoll. |
QSerialPort::EvenParity | 2 | Die Anzahl der 1-Bits in jedem Zeichen, einschließlich des Paritätsbits, ist immer gerade. |
QSerialPort::OddParity | 3 | Die 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::SpaceParity | 4 | Leerzeichen-Parität. Das Paritätsbit wird im Zustand des Leerzeichensignals gesendet. Es liefert keine Informationen zur Fehlererkennung. |
QSerialPort::MarkParity | 5 | Mark-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.
Konstante | Wert | Beschreibung |
---|---|---|
QSerialPort::NoSignal | 0x00 | Keine Leitung aktiv |
QSerialPort::DataTerminalReadySignal | 0x04 | DTR (Data Terminal Ready). |
QSerialPort::DataCarrierDetectSignal | 0x08 | DCD (Data Carrier Detect). |
QSerialPort::DataSetReadySignal | 0x10 | DSR (Datensatz bereit). |
QSerialPort::RingIndicatorSignal | 0x20 | RNG (Ring Indicator). |
QSerialPort::RequestToSendSignal | 0x40 | RTS (Anforderung zum Senden). |
QSerialPort::ClearToSendSignal | 0x80 | CTS (Clear To Send). |
QSerialPort::SecondaryTransmittedDataSignal | 0x100 | STD (Sekundär gesendete Daten). |
QSerialPort::SecondaryReceivedDataSignal | 0x200 | SRD (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.
Konstante | Wert | Beschreibung |
---|---|---|
QSerialPort::NoError | 0 | Kein Fehler aufgetreten. |
QSerialPort::DeviceNotFoundError | 1 | Beim Versuch, ein nicht vorhandenes Gerät zu öffnen, ist ein Fehler aufgetreten. |
QSerialPort::PermissionError | 2 | Beim 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::OpenError | 3 | Bei dem Versuch, ein bereits geöffnetes Gerät in diesem Objekt zu öffnen, ist ein Fehler aufgetreten. |
QSerialPort::NotOpenError | 10 | Dieser 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::WriteError | 4 | Beim Schreiben der Daten ist ein E/A-Fehler aufgetreten. |
QSerialPort::ReadError | 5 | Beim Lesen der Daten ist ein E/A-Fehler aufgetreten. |
QSerialPort::ResourceError | 6 | Ein 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::UnsupportedOperationError | 7 | Die angeforderte Geräteoperation wird vom laufenden Betriebssystem nicht unterstützt oder ist verboten. |
QSerialPort::TimeoutError | 9 | Ein Timeout-Fehler ist aufgetreten. Dieser Wert wurde in QtSerialPort 5.2 eingeführt. |
QSerialPort::UnknownError | 8 | Ein nicht identifizierter Fehler ist aufgetreten. |
Siehe auch QSerialPort::error.
enum QSerialPort::StopBits
Dieses Enum beschreibt die Anzahl der verwendeten Stopbits.
Konstante | Wert | Beschreibung |
---|---|---|
QSerialPort::OneStop | 1 | 1 Stoppbit. |
QSerialPort::OneAndHalfStop | 3 | 1,5 Stoppbits. Dies gilt nur für die Windows-Plattform. |
QSerialPort::TwoStop | 2 | 2 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:
Plattform | Kurzbeschreibung |
---|---|
Windows | Entfernt das Präfix "\\.\" oder "//./" von der Systemadresse und gibt den Rest der Zeichenkette zurück. |
Unix, BSD | Entfernt 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.