Класс QSerialPort
Предоставляет функции для доступа к последовательным портам. Подробнее...
| Заголовок: | #include <QSerialPort> |
| qmake: | QT += serialport |
| С момента: | Qt 5.1 |
| Наследуется от: | QIODevice |
Примечание: Все функции в этом классе являются перевключёнными.
Общедоступные типы
| Перечисление | BaudRate { Baud1200, Baud2400, Baud4800, Baud9600, ..., UnknownBaud } |
| Перечисление | DataBits { Data5, Data6, Data7, Data8, UnknownDataBits } |
| Перечисление | Direction { Input, Output, AllDirections } |
| Флаги | Directions |
| Перечисление | FlowControl { NoFlowControl, HardwareControl, SoftwareControl, UnknownFlowControl } |
| Перечисление | Parity { NoParity, EvenParity, OddParity, SpaceParity, MarkParity, UnknownParity } |
| Перечисление | PinoutSignal { NoSignal, TransmittedDataSignal, ReceivedDataSignal, DataTerminalReadySignal, ..., SecondaryReceivedDataSignal } |
| Флаги | PinoutSignals |
| Перечисление | SerialPortError { NoError, DeviceNotFoundError, PermissionError, OpenError, ..., UnknownError } |
| Перечисление | StopBits { OneStop, OneAndHalfStop, TwoStop, UnknownStopBits } |
Свойства
|
|
- 1 свойство унаследовано от QObject
Общедоступные функции
| QSerialPort(QObject *parent = nullptr) | |
| QSerialPort(const QString &name, QObject *parent = nullptr) | |
| QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr) | |
| virtual | ~QSerialPort() |
| qint32 | baudRate(Directions directions = AllDirections) const |
| bool | clear(Directions directions = AllDirections) |
| void | clearError() |
| DataBits | dataBits() const |
| SerialPortError | error() const |
| FlowControl | flowControl() const |
| bool | flush() |
| Handle | handle() const |
| bool | isBreakEnabled() const |
| bool | isDataTerminalReady() |
| bool | isRequestToSend() |
| Parity | parity() const |
| PinoutSignals | pinoutSignals() |
| QString | portName() const |
| qint64 | readBufferSize() const |
(deprecated) bool |
sendBreak(int duration = 0) |
| bool | setBaudRate(qint32 baudRate, Directions directions = AllDirections) |
| bool | setBreakEnabled(bool set = true) |
| bool | setDataBits(DataBits dataBits) |
| bool | setDataTerminalReady(bool set) |
| bool | setFlowControl(FlowControl flowControl) |
| bool | setParity(Parity parity) |
| void | setPort(const QSerialPortInfo &serialPortInfo) |
| void | setPortName(const QString &name) |
| void | setReadBufferSize(qint64 size) |
| bool | setRequestToSend(bool set) |
| bool | setStopBits(StopBits stopBits) |
| StopBits | stopBits() const |
Переопределённые общедоступные функции
| virtual bool | atEnd() const |
| virtual qint64 | bytesAvailable() const |
| virtual qint64 | bytesToWrite() const |
| virtual bool | canReadLine() const |
| virtual void | close() |
| virtual bool | isSequential() const |
| virtual bool | open(OpenMode mode) |
| virtual bool | waitForBytesWritten(int msecs = 30000) |
| virtual bool | waitForReadyRead(int msecs = 30000) |
- 43 Общедоступные функции, унаследованные от QIODevice
- 32 Общедоступные функции, унаследованные от QObject
Сигналы
| 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) |
Переопределённые защищённые функции
| virtual qint64 | readData(char *data, qint64 maxSize) |
| virtual qint64 | readLineData(char *data, qint64 maxSize) |
| virtual qint64 | writeData(const char *data, qint64 maxSize) |
Дополнительные унаследованные члены
- 1 общедоступный слот, унаследованный от QObject
- 11 статические общедоступные члены, унаследованные от QObject
- 5 защищённых функций, унаследованных от QIODevice
- 9 защищённых функций, унаследованных от QObject
Подробное описание
Предоставляет функции для доступа к последовательным портам.
Вы можете получить информацию о доступных последовательных портах, используя вспомогательный класс QSerialPortInfo, который позволяет перечислить все последовательные порты в системе. Это полезно для получения правильного имени последовательного порта, который вы хотите использовать. Вы можете передать объект вспомогательного класса в качестве аргумента методам setPort() или setPortName() для назначения желаемого устройства последовательного порта.
После настройки порта вы можете открыть его в режиме только для чтения (чтение), только для записи (запись) или чтения-записи (чтение-запись) с помощью метода open().
Примечание: Последовательный порт всегда открывается с эксклюзивным доступом (то есть ни один другой процесс или поток не может получить доступ к уже открытому последовательному порту).
Используйте метод close() для закрытия порта и отмены операций ввода-вывода.
После успешного открытия QSerialPort пытается определить текущую конфигурацию порта и инициализирует себя. Вы можете переконфигурировать порт до желаемых настроек, используя методы setBaudRate(), setDataBits(), setParity(), setStopBits() и setFlowControl().
Существует несколько свойств для работы с сигналами на выводах, а именно: QSerialPort::dataTerminalReady, QSerialPort::requestToSend. Также можно использовать метод pinoutSignals() для запроса текущих сигналов на выводах.
После того, как вы знаете, что порты готовы к чтению или записи, вы можете использовать методы read() или write(). Кроме того, можно вызвать удобные методы readLine() и readAll(). Если не все данные считываются сразу, оставшиеся данные будут доступны позже, так как новые входящие данные добавляются в внутренний буфер чтения QSerialPort. Вы можете ограничить размер буфера чтения с помощью setReadBufferSize().
QSerialPort предоставляет набор функций, которые приостанавливают вызывающий поток до момента генерации определённых сигналов. Эти функции можно использовать для реализации блокирующих последовательных портов:
- waitForReadyRead() блокирует вызовы до тех пор, пока новые данные не станут доступны для чтения.
- waitForBytesWritten() блокирует вызовы до тех пор, пока один пакет данных не будет записан в последовательный порт.
См. следующий пример:
int numRead = 0, numReadTotal = 0;
char buffer[50];
for (;;) {
numRead = serial.read(buffer, 50);
// Do whatever with the array
numReadTotal += numRead;
if (numRead == 0 && !serial.waitForReadyRead())
break;
} Если waitForReadyRead() возвращает false, соединение было закрыто или произошла ошибка.
Если ошибка возникнет в любой момент, QSerialPort сгенерирует сигнал errorOccurred(). Вы также можете вызвать error() для определения типа произошедшей ошибки.
Программирование с помощью блокирующего последовательного порта радикально отличается от программирования с неблокирующим последовательным портом. Блокирующий последовательный порт не требует цикла событий и, как правило, приводит к более простому коду. Однако в приложении GUI блокирующий последовательный порт следует использовать только в потоках, не относящихся к графическому интерфейсу пользователя, чтобы избежать зависания пользовательского интерфейса.
Для получения дополнительной информации об этих подходах обратитесь к приложениям примеры.
Класс QSerialPort также может использоваться с QTextStream и QDataStream операторами потоков (operator<<() и operator>>()). Однако, следует учитывать одну проблему: убедитесь, что достаточно данных доступно перед попыткой чтения с помощью перегруженного оператора operator>>().
См. также QSerialPortInfo.
Документация по типам членов
перечисление QSerialPort::BaudRate
Это перечисление описывает скорость передачи, с которой работает устройство связи.
Примечание: В этом перечислении указаны только наиболее распространённые стандартные скорости передачи.
| Постоянная | Значение | Описание |
|---|---|---|
QSerialPort::Baud1200 |
1200 |
1200 бод. |
QSerialPort::Baud2400 |
2400 |
2400 бод. |
QSerialPort::Baud4800 |
4800 |
4800 бод. |
QSerialPort::Baud9600 |
9600 |
9600 бод. |
QSerialPort::Baud19200 |
19200 |
19200 бод. |
QSerialPort::Baud38400 |
38400 |
38400 бод. |
QSerialPort::Baud57600 |
57600 |
57600 бод. |
QSerialPort::Baud115200 |
115200 |
115200 бод. |
QSerialPort::UnknownBaud |
-1 |
Неизвестное значение бод. Это устаревшее значение. Оно сохранено для совместимости со старым кодом. Не рекомендуется использовать в новом коде. |
См. также QSerialPort::baudRate.
enum QSerialPort::DataBits
Этот перечисление описывает количество битов данных, используемых.
| Постоянная | Значение | Описание |
|---|---|---|
QSerialPort::Data5 |
5 |
Количество битов данных в каждом символе равно 5. Используется для кода Baudot. Как правило, используется только со старым оборудованием, таким как телепринтеры. |
QSerialPort::Data6 |
6 |
Количество битов данных в каждом символе равно 6. Редко используется. |
QSerialPort::Data7 |
7 |
Количество битов данных в каждом символе равно 7. Используется для истинного ASCII. Как правило, используется только со старым оборудованием, таким как телепринтеры. |
QSerialPort::Data8 |
8 |
Количество битов данных в каждом символе равно 8. Используется для большинства типов данных, так как этот размер соответствует размеру байта. Почти повсеместно используется в новых приложениях. |
QSerialPort::UnknownDataBits |
-1 |
Неизвестное количество битов. Это устаревшее значение. Оно сохранено для совместимости со старым кодом. Не рекомендуется использовать в новом коде. |
См. также QSerialPort::dataBits.
enum QSerialPort::Directionflags QSerialPort::Directions
Это перечисление описывает возможные направления передачи данных.
Примечание: Это перечисление используется для настройки скорости передачи устройства отдельно для каждого направления на некоторых операционных системах (например, похожих на POSIX).
| Постоянная | Значение | Описание |
|---|---|---|
QSerialPort::Input |
1 |
Направление ввода. |
QSerialPort::Output |
2 |
Направление вывода. |
QSerialPort::AllDirections |
Input | Output |
Одновременное передача в двух направлениях. |
Тип Directions является псевдонимом для QFlags<Direction>. Он хранит комбинацию значений Direction, объединённых операцией ИЛИ.
enum QSerialPort::FlowControl
Это перечисление описывает используемый контроль потока.
| Постоянная | Значение | Описание |
|---|---|---|
QSerialPort::NoFlowControl |
0 |
Без контроля потока. |
QSerialPort::HardwareControl |
1 |
Аппаратный контроль потока (RTS/CTS). |
QSerialPort::SoftwareControl |
2 |
Программный контроль потока (XON/XOFF). |
QSerialPort::UnknownFlowControl |
-1 |
Неизвестный контроль потока. Это устаревшее значение. Оно сохранено для совместимости со старым кодом. Не рекомендуется использовать в новом коде. |
См. также QSerialPort::flowControl.
enum QSerialPort::Parity
Это перечисление описывает используемый режим чётности.
| Постоянная | Значение | Описание |
|---|---|---|
QSerialPort::NoParity |
0 |
Нет бита чётности. Это наиболее распространённая настройка чётности. Обнаружение ошибок выполняется протоколом связи. |
QSerialPort::EvenParity |
2 |
Количество единичных битов в каждом символе, включая бит чётности, всегда чётное. |
QSerialPort::OddParity |
3 |
Количество единичных битов в каждом символе, включая бит чётности, всегда нечётное. Это гарантирует, что в каждом символе происходит хотя бы одно изменение состояния. |
QSerialPort::SpaceParity |
4 |
Пробельная чётность. Бит чётности отправляется в состоянии сигнала пробела. Он не предоставляет информацию об обнаружении ошибок. |
QSerialPort::MarkParity |
5 |
Маркерная чётность. Бит чётности всегда устанавливается в состояние сигнала маркера (логическая 1). Он не предоставляет информацию об обнаружении ошибок. |
QSerialPort::UnknownParity |
-1 |
Неизвестная чётность. Это устаревшее значение. Оно сохранено для совместимости со старым кодом. Не рекомендуется использовать в новом коде. |
См. также QSerialPort::parity.
enum QSerialPort::PinoutSignalflags QSerialPort::PinoutSignals
Это перечисление описывает возможные сигналы схемы подключения RS-232.
| Постоянная | Значение | Описание |
|---|---|---|
QSerialPort::NoSignal |
0x00 |
Отсутствие активной линии |
QSerialPort::TransmittedDataSignal |
0x01 |
TxD (Передаваемые данные). Это устаревшее значение. Оно сохранено для совместимости со старым кодом. Не рекомендуется использовать в новом коде. |
QSerialPort::ReceivedDataSignal |
0x02 |
RxD (Полученные данные). Это устаревшее значение. Оно сохранено для совместимости со старым кодом. Не рекомендуется использовать в новом коде. |
QSerialPort::DataTerminalReadySignal |
0x04 |
DTR (Готовность терминала данных). |
QSerialPort::DataCarrierDetectSignal |
0x08 |
DCD (Обнаружение несущей данных). |
QSerialPort::DataSetReadySignal |
0x10 |
DSR (Готовность устройства данных). |
QSerialPort::RingIndicatorSignal |
0x20 |
RNG (Указатель кольца). |
QSerialPort::RequestToSendSignal |
0x40 |
RTS (Запрос на передачу). |
QSerialPort::ClearToSendSignal |
0x80 |
CTS (Разрешение на передачу). |
QSerialPort::SecondaryTransmittedDataSignal |
0x100 |
STD (Вторичные переданные данные). |
QSerialPort::SecondaryReceivedDataSignal |
0x200 |
SRD (Вторичные полученные данные). |
Тип PinoutSignals является псевдонимом для QFlags<PinoutSignal>. Он хранит комбинацию значений PinoutSignal, объединённых операцией ИЛИ.
См. также pinoutSignals(), QSerialPort::dataTerminalReady, и QSerialPort::requestToSend.
enum QSerialPort::SerialPortError
Это перечисление описывает ошибки, которые могут содержаться в свойстве QSerialPort::error.
END_OF_DOCUMENT_MARKER| Постоянная | Значение | Описание |
|---|---|---|
QSerialPort::NoError |
0 |
Ошибка не произошла. |
QSerialPort::DeviceNotFoundError |
1 |
Произошла ошибка при попытке открыть несуществующее устройство. |
QSerialPort::PermissionError |
2 |
Произошла ошибка при попытке открыть устройство, которое уже открыто другим процессом или пользователем, не имеющим достаточных прав и учетных данных для открытия. |
QSerialPort::OpenError |
3 |
Произошла ошибка при попытке открыть уже открытое устройство в этом объекте. |
QSerialPort::NotOpenError |
13 |
Эта ошибка возникает, когда операция выполняется, которая может быть успешно выполнена только в том случае, если устройство открыто. Это значение было введено в QtSerialPort 5.2. |
QSerialPort::ParityError |
4 |
При чтении данных обнаружена ошибка чётности аппаратным обеспечением. Это значение устарело. Мы настоятельно рекомендуем не использовать его в новом коде. |
QSerialPort::FramingError |
5 |
При чтении данных обнаружена ошибка кадрирования аппаратным обеспечением. Это значение устарело. Мы настоятельно рекомендуем не использовать его в новом коде. |
QSerialPort::BreakConditionError |
6 |
На входной линии аппаратным обеспечением обнаружено состояние разрыва. Это значение устарело. Мы настоятельно рекомендуем не использовать его в новом коде. |
QSerialPort::WriteError |
7 |
Произошла ошибка ввода-вывода при записи данных. |
QSerialPort::ReadError |
8 |
Произошла ошибка ввода-вывода при чтении данных. |
QSerialPort::ResourceError |
9 |
Произошла ошибка ввода-вывода, когда ресурс стал недоступным, например, когда устройство неожиданно было удалено из системы. |
QSerialPort::UnsupportedOperationError |
10 |
Запрошенная операция с устройством не поддерживается или запрещена активной операционной системой. |
QSerialPort::TimeoutError |
12 |
Произошла ошибка таймаута. Это значение было введено в QtSerialPort 5.2. |
QSerialPort::UnknownError |
11 |
Произошла неизвестная ошибка. |
См. также QSerialPort::error.
enum QSerialPort::StopBits
Этот перечисление описывает количество стоп-битов, используемых.
| Постоянная | Значение | Описание |
|---|---|---|
QSerialPort::OneStop |
1 |
1 стоп-бит. |
QSerialPort::OneAndHalfStop |
3 |
1,5 стоп-бита. Это только для платформы Windows. |
QSerialPort::TwoStop |
2 |
2 стоп-бита. |
QSerialPort::UnknownStopBits |
-1 |
Неизвестное количество стоп-битов. Это значение устарело. Оно предоставляется для сохранения работы старого исходного кода. Мы настоятельно рекомендуем не использовать его в новом коде. |
См. также QSerialPort::stopBits.
Документация по свойствам
baudRate : qint32
Это свойство хранит скорость передачи данных для желаемого направления
Если установка прошла успешно или была установлена до открытия порта, возвращает true; в противном случае возвращает false и устанавливает код ошибки, который можно получить, обратившись к значению свойства QSerialPort::error. Чтобы установить скорость передачи данных, используйте перечисление QSerialPort::BaudRate или любое положительное значение qint32.
Примечание: Если установка выполняется до открытия порта, фактическая настройка последовательного порта выполняется автоматически в методе QSerialPort::open() сразу после успешного открытия порта.
Предупреждение: Установка флага AllDirections поддерживается на всех платформах. Windows поддерживает только этот режим.
Предупреждение: Возвращает одинаковую скорость передачи данных в любом направлении в Windows.
Значение по умолчанию — Baud9600, т. е. 9600 бит в секунду.
Функции доступа:
| qint32 | baudRate(Directions directions = AllDirections) const |
| bool | setBaudRate(qint32 baudRate, Directions directions = AllDirections) |
Сигнал уведомления:
| void | baudRateChanged(qint32 baudRate, QSerialPort::Directions directions) |
breakEnabled : bool
Это свойство хранит состояние линии передачи в режиме break
Возвращает true при успехе, false в противном случае. Если флаг true, то линия передачи находится в режиме break; в противном случае — в не-break состоянии.
Примечание: Последовательный порт должен быть открыт перед попыткой установить или получить это свойство; в противном случае возвращает false и устанавливает код ошибки NotOpenError. Это немного необычно по сравнению с обычными настройками свойств Qt класса. Однако это особый случай, поскольку свойство устанавливается через взаимодействие с ядром и оборудованием. Следовательно, два сценария не могут быть полностью сравнены друг с другом.
Это свойство было введено в Qt 5.5.
Функции доступа:
| bool | isBreakEnabled() const |
| bool | setBreakEnabled(bool set = true) |
Сигнал уведомления:
| void | breakEnabledChanged(bool set) |
dataBits : DataBits
Это свойство хранит количество битов данных в кадре
Если установка прошла успешно или была установлена до открытия порта, возвращает true; в противном случае возвращает false и устанавливает код ошибки, который можно получить, обратившись к значению свойства QSerialPort::error.
Примечание: Если установка выполняется до открытия порта, фактическая настройка последовательного порта выполняется автоматически в методе QSerialPort::open() сразу после успешного открытия порта.
Значение по умолчанию — Data8, т. е. 8 битов данных.
Функции доступа:
| DataBits | dataBits() const |
| bool | setDataBits(DataBits dataBits) |
Сигнал уведомления:
| void | dataBitsChanged(QSerialPort::DataBits dataBits) |
dataTerminalReady : bool
Это свойство хранит состояние (высокое или низкое) сигнальной линии DTR
Возвращает true при успехе, false в противном случае. Если флаг true, то сигнал DTR устанавливается в высокий уровень; в противном случае — низкий.
Примечание: Последовательный порт должен быть открыт перед попыткой установить или получить это свойство; в противном случае возвращается false и код ошибки устанавливается в NotOpenError.
Функции доступа:
| bool | isDataTerminalReady() |
| bool | setDataTerminalReady(bool set) |
Сигнал уведомления:
| void | dataTerminalReadyChanged(bool set) |
См. также pinoutSignals().
error : SerialPortError
Это свойство хранит статус ошибки последовательного порта
Состояние I/O устройства возвращает код ошибки. Например, если open() возвращает false, или операция чтения/записи возвращает -1, это свойство можно использовать, чтобы выяснить причину сбоя операции.
Код ошибки устанавливается в значение по умолчанию QSerialPort::NoError после вызова clearError()
Функции доступа:
| SerialPortError | error() const |
| void | clearError() |
flowControl : FlowControl
Это свойство хранит желаемый режим управления потоком
Если установка прошла успешно или была установлена до открытия порта, возвращает true; в противном случае возвращает false и устанавливает код ошибки, который можно получить, обратившись к значению свойства QSerialPort::error.
Примечание: Если установка выполняется до открытия порта, фактическая настройка последовательного порта выполняется автоматически в методе QSerialPort::open() сразу после успешного открытия порта.
Значение по умолчанию — NoFlowControl, т. е. без управления потоком.
Функции доступа:
| FlowControl | flowControl() const |
| bool | setFlowControl(FlowControl flowControl) |
Сигнал уведомления:
| void | flowControlChanged(QSerialPort::FlowControl flow) |
parity : Parity
Это свойство хранит режим проверки четности
Если установка прошла успешно или была установлена до открытия порта, возвращает true; в противном случае возвращает false и устанавливает код ошибки, который можно получить, обратившись к значению свойства QSerialPort::error.
Примечание: Если установка выполняется до открытия порта, фактическая настройка последовательного порта выполняется автоматически в методе QSerialPort::open() сразу после успешного открытия порта.
Значение по умолчанию — NoParity, т. е. без проверки четности.
Функции доступа:
| Parity | parity() const |
| bool | setParity(Parity parity) |
Сигнал уведомления:
| void | parityChanged(QSerialPort::Parity parity) |
requestToSend : bool
Это свойство хранит состояние (высокое или низкое) сигнальной линии RTS
Возвращает true при успехе, false в противном случае. Если флаг true, то сигнал RTS устанавливается в высокий уровень; в противном случае — низкий.
Примечание: Последовательный порт должен быть открыт перед попыткой установить или получить это свойство; в противном случае возвращается false и код ошибки устанавливается в NotOpenError.
Примечание: Попытка управлять сигналом RTS в режиме HardwareControl завершится ошибкой с кодом ошибки UnsupportedOperationError, поскольку сигнал автоматически управляется драйвером.
Функции доступа:
| bool | isRequestToSend() |
| bool | setRequestToSend(bool set) |
Сигнал уведомления:
| void | requestToSendChanged(bool set) |
См. также pinoutSignals().
stopBits : StopBits
Это свойство содержит количество стоповых битов в кадре
Если установка прошла успешно или была установлена до открытия порта, возвращает true; в противном случае возвращает false и устанавливает код ошибки, который можно получить, обратившись к значению свойства QSerialPort::error.
Примечание: Если установка была произведена до открытия порта, фактическая настройка последовательного порта выполняется автоматически в методе QSerialPort::open() сразу после успешного открытия порта.
Значение по умолчанию — OneStop, т.е. 1 стоповый бит.
Функции доступа:
| StopBits | stopBits() const |
| bool | setStopBits(StopBits stopBits) |
Сигнал уведомления:
| void | stopBitsChanged(QSerialPort::StopBits stopBits) |
Документация по членам-функциям
QSerialPort::QSerialPort(QObject *parent = nullptr)
Создает новый объект последовательного порта с заданным parent.
QSerialPort::QSerialPort(const QString &name, QObject *parent = nullptr)
Создаёт новый объект последовательного порта с заданным parent для представления последовательного порта с указанным именем name.
Имя должно иметь определённый формат; см. метод setPort().
QSerialPort::QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr)
Создаёт новый объект последовательного порта с заданным parent для представления последовательного порта с помощью указанного вспомогательного класса serialPortInfo.
[virtual] QSerialPort::~QSerialPort()
Закрывает последовательный порт, если необходимо, а затем уничтожает объект.
[virtual] bool QSerialPort::atEnd() const
Переопределено из QIODevice::atEnd().
Возвращает true если больше нет доступных данных для чтения; в противном случае возвращает false.
Эта функция чаще всего используется при чтении данных из последовательного порта в цикле. Например:
// This slot is connected to QSerialPort::readyRead()
void QSerialPortClass::readyReadSlot()
{
while (!port.atEnd()) {
QByteArray data = port.read(100);
....
}
} См. также bytesAvailable() и readyRead().
[signal] void QSerialPort::baudRateChanged(qint32 baudRate, QSerialPort::Directions directions)
Этот сигнал генерируется после изменения скорости передачи данных. Новая скорость передачи данных передаётся как baudRate, а направления как directions.
Примечание: Сигнал уведомления для свойства baudRate.
См. также QSerialPort::baudRate.
[virtual] qint64 QSerialPort::bytesAvailable() const
Переопределено из QIODevice::bytesAvailable().
Возвращает количество ожидающих чтения входящих байтов.
См. также bytesToWrite() и read().
[virtual] qint64 QSerialPort::bytesToWrite() const
Переопределено из QIODevice::bytesToWrite().
Возвращает количество ожидающих записи байтов. Байты записываются, когда управление возвращается в цикл событий или когда вызывается flush().
См. также bytesAvailable() и flush().
[virtual] bool QSerialPort::canReadLine() const
Переопределено из QIODevice::canReadLine().
Возвращает true если из последовательного порта можно прочитать строку данных; в противном случае возвращает false.
См. также readLine().
bool QSerialPort::clear(Directions directions = AllDirections)
Отбрасывает все символы из буфера вывода или ввода в зависимости от заданных направлений directions. Это включает очистку внутренних буферов класса и буферов UART (драйвера). Также прерывает ожидающие операции чтения или записи. Если успешно, возвращает true; в противном случае возвращает false.
Примечание: Последовательный порт должен быть открыт перед попыткой очистить буферизованные данные; в противном случае возвращает false и устанавливает код ошибки NotOpenError.
[virtual] void QSerialPort::close()
Переопределено из QIODevice::close().
Примечание: Последовательный порт должен быть открыт перед его закрытием; в противном случае устанавливается код ошибки NotOpenError.
См. также QIODevice::close().
[signal] void QSerialPort::dataBitsChanged(QSerialPort::DataBits dataBits)
Этот сигнал генерируется после изменения количества данных в кадре. Новое количество данных в кадре передаётся как dataBits.
Примечание: Сигнал уведомления для свойства dataBits.
См. также QSerialPort::dataBits.
[signal] void QSerialPort::dataTerminalReadyChanged(bool set)
Этот сигнал генерируется после изменения состояния сигнала линии DTR (высокий или низкий). Новое состояние сигнала линии DTR передается как set.
Примечание: Сигнал уведомления для свойства dataTerminalReady.
См. также QSerialPort::dataTerminalReady.
[signal] void QSerialPort::errorOccurred(QSerialPort::SerialPortError error)
Этот сигнал генерируется при возникновении ошибки в последовательном порте. Указанная error описывает тип возникшей ошибки.
Данная функция была добавлена в Qt 5.8.
См. также QSerialPort::error.
[signal] void QSerialPort::flowControlChanged(QSerialPort::FlowControl flow)
Этот сигнал генерируется после изменения режима управления потоком. Новый режим управления потоком передаётся как flow.
Примечание: Сигнал уведомления для свойства flowControl.
См. также QSerialPort::flowControl.
bool QSerialPort::flush()
Данная функция записывает как можно больше данных из внутреннего буфера записи в подлежащий последовательный порт без блокировки. Если данные были записаны, эта функция возвращает true; в противном случае возвращает false.
Вызовите эту функцию для немедленной отправки буферизованных данных в последовательный порт. Количество успешно записанных байтов зависит от операционной системы. В большинстве случаев вызывать эту функцию не нужно, так как класс QSerialPort начнёт отправлять данные автоматически после возврата управления в цикл событий. В отсутствии цикла событий, используйте waitForBytesWritten() вместо этого.
Примечание: Последовательный порт должен быть открыт перед попыткой сбросить буферизованные данные; в противном случае возвращает false и устанавливает код ошибки NotOpenError.
См. также write() и waitForBytesWritten().
Handle QSerialPort::handle() const
Если платформа поддерживается и последовательный порт открыт, возвращает системную дескриптор последовательного порта; в противном случае возвращает -1.
Предупреждение: Эта функция предназначена только для опытных пользователей; используйте её на свой страх и риск. Кроме того, эта функция не несёт гарантии совместимости между версиями Qt.
Эта функция была добавлена в Qt 5.2.
[virtual] bool QSerialPort::isSequential() const
Переопределено из QIODevice::isSequential().
Всегда возвращает true. Порт COM является последовательным устройством.
[virtual] bool QSerialPort::open(OpenMode mode)
Переопределено из QIODevice::open().
Открывает порт COM с использованием флага OpenMode mode и возвращает true в случае успеха; в противном случае возвращает false и устанавливает код ошибки, который можно получить, вызвав метод error().
Примечание: Метод возвращает false при успешном открытии порта, но не удалось установить параметры порта. В этом случае порт автоматически закрывается, чтобы не оставлять порт с неправильными настройками.
Предупреждение: Значение mode должно быть QIODevice::ReadOnly, QIODevice::WriteOnly или QIODevice::ReadWrite. Другие режимы не поддерживаются.
См. также QIODevice::OpenMode и setPort().
[signal] void QSerialPort::parityChanged(QSerialPort::Parity parity)
Этот сигнал излучается после изменения режима проверки чётности. Новый режим проверки чётности передаётся как parity.
Примечание: Сигнал-уведомление для свойства parity.
См. также QSerialPort::parity.
PinoutSignals QSerialPort::pinoutSignals()
Возвращает состояние сигналов линии в формате битовой карты.
По этому результату можно получить состояние нужного сигнала, применив маску «И», где маска — желаемое значение перечисления из QSerialPort::PinoutSignals.
Примечание: Этот метод выполняет системный вызов, гарантируя правильное возвращение состояния сигналов линии. Это необходимо, когда базовая операционная система не может обеспечить правильные уведомления об изменениях.
Примечание: Порт COM должен быть открыт перед попыткой получить сигналы pinout; в противном случае возвращает NoSignal и устанавливает код ошибки NotOpenError.
См. также QSerialPort::dataTerminalReady и QSerialPort::requestToSend.
QString QSerialPort::portName() const
Возвращает имя, установленное методом setPort() или переданное конструктору QSerialPort. Это имя короткое, т.е. оно извлечено и преобразовано из системного расположения устройства. Алгоритм преобразования зависит от платформы:
| Платформа | Краткое описание |
|---|---|
| Windows | Удаляет префикс "\\.\" или "//./" из системного расположения и возвращает оставшуюся часть строки. |
| Unix, BSD | Удаляет префикс "/dev/" из системного расположения и возвращает оставшуюся часть строки. |
См. также setPortName(), setPort() и QSerialPortInfo::portName().
qint64 QSerialPort::readBufferSize() const
Возвращает размер внутреннего буфера чтения. Это ограничивает количество данных, которые клиент может получить, прежде чем вызвать методы read() или readAll().
Размер буфера чтения 0 (по умолчанию) означает, что буфер не имеет ограничения по размеру, гарантируя, что данные не будут потеряны.
См. также setReadBufferSize() и read().
[virtual protected] qint64 QSerialPort::readData(char *data, qint64 maxSize)
Переопределено из QIODevice::readData().
[virtual protected] qint64 QSerialPort::readLineData(char *data, qint64 maxSize)
Переопределено из QIODevice::readLineData().
[signal] void QSerialPort::requestToSendChanged(bool set)
Этот сигнал излучается после изменения состояния (высокого или низкого) сигнала линии RTS. Новое состояние (высокое или низкое) сигнала линии RTS передаётся как set.
Примечание: Сигнал-уведомление для свойства requestToSend.
См. также QSerialPort::requestToSend.
bool QSerialPort::sendBreak(int duration = 0)
Этот метод устарел.
Отправляет непрерывный поток нулевых бит в течение заданного периода времени duration в мс, если терминал использует асинхронные данные последовательного порта. В случае успеха возвращает true; в противном случае возвращает false.
Если duration равно нулю, то нулевые биты передаются в течение не менее 0.25 секунд, но не более 0.5 секунд.
Если duration отлично от нуля, то нулевые биты передаются в течение определённого периода времени, зависящего от реализации.
Примечание: Порт COM должен быть открыт перед попыткой отправить паузу; в противном случае возвращает false и устанавливает код ошибки NotOpenError.
См. также setBreakEnabled().
void QSerialPort::setPort(const QSerialPortInfo &serialPortInfo)
Устанавливает порт, хранящийся в экземпляре QSerialPortInfo serialPortInfo.
См. также portName() и QSerialPortInfo.
void QSerialPort::setPortName(const QString &name)
Устанавливает имя name порта COM.
Имя порта COM может быть передано как короткое имя или полное системное расположение, если необходимо.
См. также portName() и QSerialPortInfo.
void QSerialPort::setReadBufferSize(qint64 size)
Устанавливает размер внутреннего буфера чтения QSerialPort на size байт.
Если размер буфера ограничен, QSerialPort не будет буферизировать больше данных, чем этот размер. Специальный случай размера буфера 0 означает, что буфер чтения не ограничен, и все входящие данные буферизуются. Это значение по умолчанию.
Эта опция полезна, если данные считываются только в определённые моменты времени (например, в приложении реального времени потоковой передачи) или если нужно защитить порт COM от получения слишком большого объёма данных, что может привести к недостатку памяти в приложении.
См. также readBufferSize() и read().
[signal] void QSerialPort::stopBitsChanged(QSerialPort::StopBits stopBits)
Этот сигнал излучается после изменения числа стоповых битов в кадре. Новое число стоповых битов в кадре передаётся как stopBits.
Примечание: Сигнал-уведомление для свойства stopBits.
См. также QSerialPort::stopBits.
[virtual] bool QSerialPort::waitForBytesWritten(int msecs = 30000)
Переопределено из QIODevice::waitForBytesWritten().
Этот метод блокируется до тех пор, пока не будет записан по крайней мере один байт в порт COM и не будет испущен сигнал bytesWritten(). Метод будет ожидать истечения времени после msecs миллисекунд; значение по умолчанию — 30000 миллисекунд. Если msecs равно -1, этот метод не будет ожидать истечения времени.
Метод возвращает true если сигнал bytesWritten() излучается; в противном случае он возвращает false (если произошла ошибка или операция истекла).
[virtual] bool QSerialPort::waitForReadyRead(int msecs = 30000)
Переопределено из QIODevice::waitForReadyRead().
Этот метод блокируется до тех пор, пока новые данные не будут доступны для чтения и не будет испущен сигнал readyRead(). Метод будет ожидать истечения времени после msecs миллисекунд; значение по умолчанию — 30000 миллисекунд. Если msecs равно -1, этот метод не будет ожидать истечения времени.
Метод возвращает true если сигнал readyRead() излучается и доступны новые данные для чтения; в противном случае он возвращает false (если произошла ошибка или операция истекла).
См. также waitForBytesWritten().
[virtual protected] qint64 QSerialPort::writeData(const char *data, qint64 maxSize)
Переопределено из QIODevice::writeData().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qserialport.html