Класс 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 = Q_NULLPTR) | |
| QSerialPort(const QString &name, QObject *parent = Q_NULLPTR) | |
| QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = Q_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 |
Переопределенные публичные функции
| виртуальный bool | atEnd() const |
| виртуальный qint64 | bytesAvailable() const |
| виртуальный qint64 | bytesToWrite() const |
| виртуальный bool | canReadLine() const |
| виртуальный void | close() |
| виртуальный bool | isSequential() const |
| виртуальный bool | open(OpenMode mode) |
| виртуальный bool | waitForBytesWritten(int msecs) |
| виртуальный bool | waitForReadyRead(int msecs) |
Сигналы
| void | baudRateChanged(qint32 baudRate, QSerialPort::Directions directions) |
| void | breakEnabledChanged(bool set) |
| void | dataBitsChanged(QSerialPort::DataBits dataBits) |
| void | dataTerminalReadyChanged(bool set) |
| void | error(QSerialPort::SerialPortError error) |
| void | flowControlChanged(QSerialPort::FlowControl flow) |
| void | parityChanged(QSerialPort::Parity parity) |
| void | requestToSendChanged(bool set) |
| void | stopBitsChanged(QSerialPort::StopBits stopBits) |
Переопределённые защищённые функции
| виртуальный qint64 | readData(char *data, qint64 maxSize) |
| виртуальный qint64 | readLineData(char *data, qint64 maxSize) |
| виртуальный 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];
forever {
numRead = serial.read(buffer, 50);
// Do whatever with the array
numReadTotal += numRead;
if (numRead == 0 && !serial.waitForReadyRead())
break;
} Если waitForReadyRead() возвращает false, соединение было закрыто или произошла ошибка.
Программирование с блокирующим последовательным портом радикально отличается от программирования с неблокирующим последовательным портом. Блокирующий последовательный порт не требует цикла событий и, как правило, приводит к более простому коду. Однако в приложении GUI блокирующий последовательный порт следует использовать только в потоках, не связанных с 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.
перечисление 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, объединённую по оператору OR.
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, объединённую по оператору OR.
См. также pinoutSignals(), QSerialPort::dataTerminalReady и QSerialPort::requestToSend.
enum QSerialPort::SerialPortError
Это перечисление описывает ошибки, которые могут содержаться в свойстве QSerialPort::error.
| Постоянная | Значение | Описание |
|---|---|---|
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 CE поддерживают только этот режим.
Предупреждение: Возвращает одинаковую скорость передачи данных в любом направлении на Windows, Windows CE.
Значение по умолчанию — Baud9600, т. е. 9600 бит в секунду.
Функции доступа:
| qint32 | baudRate(Directions directions = AllDirections) const |
| bool | setBaudRate(qint32 baudRate, Directions directions = AllDirections) |
Сигнал уведомления:
| void | baudRateChanged(qint32 baudRate, QSerialPort::Directions directions) |
breakEnabled : bool
Это свойство содержит состояние линии передачи в режиме разрыва.
Возвращает true при успехе, false в противном случае. Если флаг равен true, линия передачи находится в режиме разрыва; в противном случае — в обычном режиме.
Примечание: Последовательный порт должен быть открыт перед попыткой установить или получить это свойство; в противном случае возвращает 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
Это свойство содержит состояние ошибки последовательного порта.
Устройство ввода-вывода возвращает код ошибки. Например, если open() возвращает false, или операция чтения/записи возвращает -1, это свойство можно использовать для определения причины, по которой операция завершилась неудачно.
Код ошибки устанавливается в значение по умолчанию QSerialPort::NoError после вызова clearError().
Функции доступа:
| SerialPortError | error() const |
| void | error(QSerialPort::SerialPortError error) |
| 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.
Функции доступа:
| 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 = Q_NULLPTR)
Создает новый объект последовательного порта с заданным parent.
QSerialPort::QSerialPort(const QString &name, QObject *parent = Q_NULLPTR)
Создает новый объект последовательного порта с заданным parent для представления последовательного порта с указанным именем name.
Имя должно иметь определенный формат; см. метод setPort().
QSerialPort::QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = Q_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::error(QSerialPort::SerialPortError error)
Этот сигнал испускается после изменения ошибки. Новая ошибка передается как error.
Примечание: Сигнал error перегружен в этом классе. Для подключения к этому сигналу с использованием синтаксиса указателя функции необходимо указать тип сигнала в static_cast, как показано в этом примере:
connect(serialPort, static_cast<void(QSerialPort::*)(QSerialPort::SerialPortError)>(&QSerialPort::error),
[=](QSerialPort::SerialPortError error){ /* ... */ }); Примечание: Функция-получатель для свойства error.
См. также 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. Последовательный порт является последовательным устройством.
[virtual] bool QSerialPort::open(OpenMode mode)
Переопределено из QIODevice::open().
Открывает последовательный порт, используя OpenMode mode, и возвращает true при успехе; в противном случае возвращает false и устанавливает код ошибки, который можно получить, вызвав метод error().
Примечание: Метод возвращает false, если открытие порта прошло успешно, но не удалось установить какие-либо настройки порта. В этом случае порт автоматически закрывается, чтобы не оставить его с неправильными настройками.
Предупреждение: режим должен быть 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.
Примечание: Этот метод выполняет системный вызов, гарантируя, что состояния сигналов линии возвращаются корректно. Это необходимо, когда базовая операционная система не может обеспечить надлежащие уведомления о изменениях.
Примечание: Порт должен быть открыт перед попыткой получения сигналов состояния выводов; в противном случае возвращается NoSignal и устанавливается код ошибки NotOpenError.
См. также QSerialPort::dataTerminalReady и QSerialPort::requestToSend.
QString QSerialPort::portName() const
Возвращает имя, заданное методом setPort() или переданное конструктору QSerialPort. Это имя короткое, т.е. оно извлечено и преобразовано из системного расположения устройства в памяти. Алгоритм преобразования зависит от платформы:
| Платформа | Краткое описание |
|---|---|
| Windows | Удаляет префикс "\\.\" или "//./" из системного расположения и возвращает оставшуюся часть строки. |
| Windows CE | Удаляет суффикс ":" из системного расположения и возвращает оставшуюся часть строки. |
| 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 не равно нулю, то нулевые биты передаются в течение определенного периода времени в зависимости от реализации.
Примечание: Порт должен быть открыт перед отправкой паузы; в противном случае возвращается false и устанавливается код ошибки NotOpenError.
См. также setBreakEnabled().
void QSerialPort::setPort(const QSerialPortInfo &serialPortInfo)
Устанавливает порт, хранящийся в экземпляре информации о последовательном порте serialPortInfo.
См. также portName() и QSerialPortInfo.
void QSerialPort::setPortName(const QString &name)
Устанавливает имя name последовательного порта.
Имя последовательного порта может быть передано как короткое имя или полное системное расположение, если необходимо.
См. также portName() и QSerialPortInfo.
void QSerialPort::setReadBufferSize(qint64 size)
Устанавливает размер внутреннего буфера чтения QSerialPort на size байтов.
Если размер буфера ограничен, QSerialPort не будет буферизовать более этого размера данных. Специальный случай размера буфера 0 означает, что буфер чтения не ограничен, и все входящие данные буферизуются. Это значение по умолчанию.
Этот параметр полезен, если данные считываются только в определённые моменты времени (например, в приложении потоковой передачи в реальном времени) или если необходимо защитить последовательный порт от получения слишком большого объёма данных, что может привести к недостатку памяти в приложении.
См. также readBufferSize() и read().
[signal] void QSerialPort::stopBitsChanged(QSerialPort::StopBits stopBits)
Этот сигнал излучается после изменения количества стоповых битов в кадре. Новое количество стоповых битов в кадре передаётся как stopBits.
Примечание: Сигнал-уведомление для свойства stopBits.
См. также QSerialPort::stopBits.
[virtual] bool QSerialPort::waitForBytesWritten(int msecs)
Переопределено из QIODevice::waitForBytesWritten().
[virtual] bool QSerialPort::waitForReadyRead(int msecs)
Переопределено из QIODevice::waitForReadyRead().
Эта функция блокирует выполнение, пока новые данные не станут доступны для чтения и не будет выпущен сигнал readyRead(). Функция будет ожидать в течение msecs миллисекунд.
Функция возвращает 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/archives/qt-5.6/qserialport.html