Spec-Zone.ru › Qt 5.9

Класс 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 }

Свойства

  • baudRate : qint32
  • breakEnabled : bool
  • dataBits : DataBits
  • dataTerminalReady : bool
  • error : SerialPortError
  • flowControl : FlowControl
  • parity : Parity
  • requestToSend : bool
  • stopBits : StopBits
  • 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)
  • 6 сигналов, унаследованных от QIODevice
  • 2 сигнала, унаследованные от QObject

Переопределённые защищённые функции

virtual qint64 readData(char *data, qint64 maxSize)
virtual qint64 readLineData(char *data, qint64 maxSize)
virtual qint64 writeData(const char *data, qint64 maxSize)
  • 5 защищённых функций, унаследованных от QIODevice
  • 9 защищённых функций, унаследованных от QObject

Дополнительные унаследованные члены

  • 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API