QSerialPort 类

提供访问串口的功能。 更多...

头文件 #include <QSerialPort>
CMakefind_package(Qt6 REQUIRED COMPONENTS SerialPort)
target_link_libraries(mytarget PRIVATE Qt6::SerialPort)
qmakeQT += serialport
继承 QIODevice

注意: 此类中的所有函数都是 重入的

公共类型

枚举BaudRate { Baud1200, Baud2400, Baud4800, Baud9600, Baud19200, ……, Baud115200 }
枚举DataBits { Data5, Data6, Data7, Data8 }
枚举Direction { Input, Output, AllDirections }
标志Directions
枚举FlowControl { NoFlowControl, HardwareControl, SoftwareControl }
枚举Parity { NoParity, EvenParity, OddParity, SpaceParity, MarkParity }
枚举PinoutSignal { NoSignal, DataTerminalReadySignal, DataCarrierDetectSignal, DataSetReadySignal, RingIndicatorSignal, ……, SecondaryReceivedDataSignal }
标志PinoutSignals
枚举SerialPortError { NoError, DeviceNotFoundError, PermissionError, OpenError, NotOpenError, ……, UnknownError }
枚举StopBits { OneStop, OneAndHalfStop, TwoStop }

属性

公共函数

QSerialPort(QObject *parent = nullptr)
QSerialPort(const QString &name, QObject *parent = nullptr)
QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr)
virtual~QSerialPort()
qint32baudRate(QSerialPort::Directions directions = AllDirections) const
QBindable<QSerialPort::DataBits>bindableDataBits()
QBindable<QSerialPort::SerialPortError>bindableError() const
QBindable<QSerialPort::FlowControl>bindableFlowControl()
QBindable<bool>bindableIsBreakEnabled()
QBindable<QSerialPort::Parity>bindableParity()
QBindable<QSerialPort::StopBits>bindableStopBits()
布尔型clear(QSerialPort::Directions directions = AllDirections)
voidclearError()
QSerialPort::DataBitsdataBits() const
QSerialPort::SerialPortErrorerror() const
QSerialPort::FlowControlflowControl() const
布尔型flush()
QSerialPort::Handlehandle() const
布尔型isBreakEnabled() const
布尔型isDataTerminalReady()
布尔型isRequestToSend()
QSerialPort::Parityparity() const
QSerialPort::PinoutSignalspinoutSignals()
QStringportName() const
qint64readBufferSize() const
布尔型setBaudRate(qint32 baudRate, QSerialPort::Directions directions = AllDirections)
布尔型setBreakEnabled(bool set = true)
布尔型setDataBits(QSerialPort::DataBits dataBits)
布尔型setDataTerminalReady(bool set)
布尔型setFlowControl(QSerialPort::FlowControl flowControl)
布尔型setParity(QSerialPort::Parity parity)
voidsetPort(const QSerialPortInfo &serialPortInfo)
voidsetPortName(const QString &name)
voidsetReadBufferSize(qint64 size)
布尔型setRequestToSend(bool set)
布尔型setStopBits(QSerialPort::StopBits stopBits)
QSerialPort::StopBitsstopBits() const

重写的公共函数

虚拟[qint64bytesAvailable() const override
虚拟[qint64bytesToWrite() const override
虚拟[boolcanReadLine() const override
虚拟[voidclose() override
虚拟[boolisSequential() const override
虚拟[boolopen(QIODeviceBase::OpenMode mode) override
虚拟[boolwaitForBytesWritten(int msecs = 30000) override
虚拟[boolwaitForReadyRead(int msecs = 30000) override

信号

voidbaudRateChanged(qint32 baudRate, QSerialPort::Directions directions)
voidbreakEnabledChanged(bool set)
voiddataBitsChanged(QSerialPort::DataBits dataBits)
voiddataTerminalReadyChanged(bool set)
voiderrorOccurred(QSerialPort::SerialPortError error)
voidflowControlChanged(QSerialPort::FlowControl flow)
voidparityChanged(QSerialPort::Parity parity)
voidrequestToSendChanged(bool set)
voidstopBitsChanged(QSerialPort::StopBits stopBits)

重写的受保护函数

虚拟[qint64readData(char *data, qint64 maxSize) override
虚拟[qint64readLineData(char *data, qint64 maxSize) override
虚拟[qint64writeData(const char *data, qint64 maxSize) override

详细描述

您可以使用QSerialPortInfo辅助类来获取可用串行端口的详细信息,该类允许遍历系统中的所有串行端口。这有助于获取想要使用的串行端口的正确名称。您可以将辅助类对象作为参数传递给setPort()或setPortName()方法来指定所需的串行设备。

设置端口号后,您可以使用open()方法将其以只读(r/o)、只写(w/o)或读写(r/w)模式打开。

注意:串行端口始终以独占访问方式打开(即,其他进程或线程无法访问已打开的串行端口)。

使用close()方法关闭端口并取消I/O操作。

成功打开后,QSerialPort将尝试确定端口的当前配置并初始化自身。您可以使用setBaudRate()、setDataBits()、setParity()、setStopBits()和setFlowControl()方法将端口重新配置到所需的设置。

有几个属性用于处理引脚信号,即:QSerialPort::dataTerminalReadyQSerialPort::requestToSend。您还可以使用pinoutSignals()方法查询当前的引脚信号集。

一旦知道端口已准备好读取或写入,您可以使用read()或write()方法。或者,还可以调用便利方法readLine()和readAll。如果一次没有读取所有数据,剩余数据将作为新到达的数据附加到QSerialPort的内部读缓冲区。您可以使用setReadBufferSize()方法来限制读缓冲区的大小。

QSerialPort提供了一组函数,这些函数将在特定信号发出之前挂起调用线程。这些函数可以用于实现阻塞串行端口。

请参见以下示例

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应用程序中,仅应在有GUI线程的串行端口中使用阻塞串行端口,以避免冻结用户界面。

有关这些方法的更多详细信息,请参阅示例应用程序。

QSerialPort类还可以与QTextStreamQDataStream的流运算符(运算符<<()和运算符>>())一起使用。然而,需要注意的是:在使用运算符>>()重载运算符之前,请确保有足够的数据可供读取。

另请参阅QSerialPortInfo

成员类型文档

枚举 QSerialPort::波特率

此枚举描述通信设备使用的波特率。

注意:此枚举中只列出了最常见的标准波特率。

常量描述
QSerialPort::Baud120012001200 波特。
QSerialPort::Baud240024002400 波特。
QSerialPort::Baud480048004800 波特。
QSerialPort::Baud960096009600 波特。
QSerialPort::Baud192001920019200 波特。
QSerialPort::Baud384003840038400 波特。
QSerialPort::Baud576005760057600 波特。
QSerialPort::Baud115200115200115200 波特。

另请参阅 QSerialPort::baudRate

枚举 QSerialPort::数据位

此枚举描述使用的数据位数。

常量描述
QSerialPort::Data55每个字符中的数据位数为 5。用于 Baudot 代码。通常只与旧设备(例如电传打印机)一起使用。
QSerialPort::Data66每个字符中的数据位数为 6。很少使用。
QSerialPort::Data77每个字符中的数据位数为 7。用于真正的 ASCII。通常只与旧设备(例如电传打印机)一起使用。
QSerialPort::Data88每个字符中的数据位数为 8。用于大多数类型的数据,因为此大小与字节数匹配。几乎在新应用中普遍使用。

另请参阅 QSerialPort::dataBits

枚举 QSerialPort::方向
标志 QSerialPort::方向

此枚举描述数据传输的可能方向。

注意:在某些操作系统上(例如,POSIX 样式),此枚举用于分别为每个方向设置设备波特率。

常量描述
QSerialPort::Input1输入方向。
QSerialPort::Output2输出方向。
QSerialPort::AllDirections输入 | 输出同时双向。

Directions 类型是 Direction 类型的 typedef,它存储一个方向值的 OR 组合。

枚举 QSerialPort::流控制

此枚举描述使用的流控制方式。

常量描述
QSerialPort::NoFlowControl0无流控制。
QSerialPort::HardwareControl1硬件流控制(RTS/CTS)。
QSerialPort::SoftwareControl2软件流控制(XON/XOFF)。

另请参阅 QSerialPort::flowControl

枚举 QSerialPort::校验位

此枚举描述使用的校验位方案。

常量描述
QSerialPort::NoParity0不发送校验位。这是最常见的校验位设置。错误检测由通信协议处理。
QSerialPort::EvenParity2每个字符(包括校验位)中 1 的数量总是偶数。
QSerialPort::OddParity3每个字符(包括校验位)中 1 的数量总是奇数。它确保每个字符中至少发生一个状态转换。
QSerialPort::SpaceParity4空间校验位。校验位在空间信号条件下发送。它不提供错误检测信息。
QSerialPort::MarkParity5标记校验位。校验位始终设置为标记信号条件(逻辑 1)。它不提供错误检测信息。

另请参阅 QSerialPort::parity

枚举 QSerialPort::引脚信号
标志 QSerialPort::引脚信号

此枚举描述可能的 RS-232 引脚信号。

常量描述
QSerialPort::NoSignal0x00无线路活跃
QSerialPort::DataTerminalReadySignal0x04DTR(数据终端就绪)。
QSerialPort::DataCarrierDetectSignal0x08DCD(数据载体检测)。
QSerialPort::DataSetReadySignal0x10DSR(数据集就绪)。
QSerialPort::RingIndicatorSignal0x20RNG(响铃指示器)。
QSerialPort::RequestToSendSignal0x40RTS(请求发送)。
QSerialPort::ClearToSendSignal0x80CTS(清除发送)。
QSerialPort::SecondaryTransmittedDataSignal0x100STD(次发送数据)。
QSerialPort::SecondaryReceivedDataSignal0x200SRD(次接收数据)。

PinoutSignals 类型是 QFlags<PinoutSignal> 的 typedef。它存储 PinoutSignal 值的 OR 组合。

另请参阅pinoutSignals(),QSerialPort::dataTerminalReady 以及 QSerialPort::requestToSend

枚举 QSerialPort::SerialPortError

此枚举描述了可能被 QSerialPort::error 属性包含的错误。

常量描述
QSerialPort::NoError0未发生错误。
QSerialPort::DeviceNotFoundError1在尝试打开一个不存在设备时发生错误。
QSerialPort::PermissionError2在尝试由另一个进程打开已打开的设备或用户权限和凭证不足以打开设备时发生错误。
QSerialPort::OpenError3在尝试打开此对象中已打开的设备时发生错误。
QSerialPort::NotOpenError10当执行的操作只能在设备打开的情况下成功执行时,此错误发生。此值是在 QtSerialPort 5.2 中引入的。
QSerialPort::WriteError4在写入数据时发生了 I/O 错误。
QSerialPort::ReadError5在读取数据时发生了 I/O 错误。
QSerialPort::ResourceError6资源不可用时发生 I/O 错误,例如,当设备意外地从系统中移除时。
QSerialPort::UnsupportedOperationError7请求的设备操作不被运行的操作系统支持或被禁止。
QSerialPort::TimeoutError9发生了超时错误。此值是在 QtSerialPort 5.2 中引入的。
QSerialPort::UnknownError8发生了未知的错误。

另请参阅QSerialPort::error

枚举 QSerialPort::StopBits

此枚举描述了所使用的停止位数。

常量描述
QSerialPort::OneStop11 个停止位。
QSerialPort::OneAndHalfStop31.5 个停止位。这仅适用于 Windows 平台。
QSerialPort::TwoStop22 个停止位。

另请参阅QSerialPort::stopBits

属性文档

baudRateqint32

此属性保存所需方向的数据波特率

如果设置成功或在打开端口之前设置,则返回 true;否则返回 false,并设置一个错误代码,可以通过访问 QSerialPort::error 属性的值来获取。要设置波特率,请使用枚举 QSerialPort::BaudRate 或任何正的 qint32 值。

注意:如果在对端口进行设置之前设置,实际的串行端口设置会在端口成功打开后自动在 QSerialPort::open() 方法中完成。

警告:所有平台都支持在 AllDirections 标志上的设置。Windows 只支持此模式。

警告:在Windows上以任何方向返回相同的波特率。

默认值是波特率9600,即每秒9600位。

访问函数

qint32baudRate(QSerialPort::Directions directions = AllDirections) const
布尔型setBaudRate(qint32 baudRate, QSerialPort::Directions directions = AllDirections)

通知信号

voidbaudRateChanged(qint32 baudRate, QSerialPort::Directions directions)

[bindable] breakEnabled : bool

注意:此属性支持QProperty绑定。

此属性包含断开连接状态下的传输线路状态

成功时返回 true,否则返回 false。如果标志为 true,则传输线路处于断开状态;否则处于非断开状态。

注意:在尝试设置或获取此属性之前,串行端口必须打开;否则返回 false 并设置 NotOpenError 错误代码。这与类的一般Qt属性设置不同。但是,这是由于通过与内核和硬件交互设置的属性而特殊设置的一个用例。因此,这两个场景不能完全相互比较。

[bindable] dataBits : DataBits

注意:此属性支持QProperty绑定。

此属性包含一个帧中的数据位

如果设置成功或在打开端口之前设置,则返回 true;否则返回 false 并设置一个可以通过访问 QSerialPort::error 属性值获取的错误代码。

注意:如果在对端口进行设置之前设置,实际的串行端口设置会在端口成功打开后自动在 QSerialPort::open() 方法中完成。

默认值是 Data8,即 8 位数据位。

dataTerminalReady : bool

此属性包含线路信号 DTR 的状态(高或低)

成功时返回 true,否则返回 false。如果标志为 true,则 DTR 信号设置为高;否则低。

注意:在尝试设置或获取此属性之前,串行端口必须打开;否则 false 返回,并将错误代码设置为 NotOpenError

访问函数

布尔型isDataTerminalReady()
布尔型setDataTerminalReady(bool set)

通知信号

voiddataTerminalReadyChanged(bool set)

另请参阅:pinoutSignals

[bindable read-only] error : SerialPortError

注意:此属性支持QProperty绑定。

此属性包含串行端口的错误状态

I/O设备状态返回一个错误代码。例如,如果open() 返回 false,或者读写操作返回 -1,则可以使用此属性来找出操作失败的原因。

在调用 clearError() 后,错误代码设置为默认值QSerialPort::NoError

[bindable] flowControl : FlowControl

注意:此属性支持QProperty绑定。

此属性包含所需的流控制模式

如果设置成功或在打开端口之前设置,则返回 true;否则返回 false 并设置一个可以通过访问 QSerialPort::error 属性值获取的错误代码。

注意:如果在对端口进行设置之前设置,实际的串行端口设置会在端口成功打开后自动在 QSerialPort::open() 方法中完成。

默认值是 NoFlowControl,即无流控制。

[可绑定] parity : Parity

注意:此属性支持QProperty绑定。

该属性保存奇偶校验模式。

如果设置成功或在打开端口之前设置,则返回 true;否则返回 false 并设置一个可以通过访问 QSerialPort::error 属性值获取的错误代码。

注意:如果在对端口进行设置之前设置,实际的串行端口设置会在端口成功打开后自动在 QSerialPort::open() 方法中完成。

默认值为NoParity,即无奇偶校验。

requestToSend : bool

该属性保存线路信号RTS的状态(高或低)。

成功时返回true,否则返回false。如果标志为true,则将RTS信号设置为高;否则设置为低。

注意:在尝试设置或获取此属性之前,串行端口必须打开;否则 false 返回,并将错误代码设置为 NotOpenError

注意:尝试在HardwareControl模式下控制RTS信号将失败,错误代码设置为UnsupportedOperationError,因为该信号由驱动程序自动控制。

访问函数

布尔型isRequestToSend()
布尔型setRequestToSend(bool set)

通知信号

voidrequestToSendChanged(bool set)

另请参阅:pinoutSignals

[可绑定] stopBits : StopBits

注意:此属性支持QProperty绑定。

该属性保存帧中的停止位数。

如果设置成功或在打开端口之前设置,则返回 true;否则返回 false 并设置一个可以通过访问 QSerialPort::error 属性值获取的错误代码。

注意:如果在对端口进行设置之前设置,实际的串行端口设置会在端口成功打开后自动在 QSerialPort::open() 方法中完成。

默认值为OneStop,即1个停止位。

成员函数文档

[显式] 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的串行端口。

[虚(noexcept)] QSerialPort::~QSerialPort()

如果需要,关闭串行端口,然后销毁对象。

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

更改波特率后发出该信号。新波特率作为baudRate传递,方向作为directions传递。

注意:属性baudRate的通知信号。

另请参阅 QSerialPort::baudRate

[重写虚函数] qint64 QSerialPort::bytesAvailable() const

重实现:QIODevice::bytesAvailable() const

返回等待读取的输入字节数。

另请参阅 bytesToWrite() 和 read().

[重写虚函数] qint64 QSerialPort::bytesToWrite() const

重新实现了:QIODevice::bytesToWrite() const.

返回等待写入的字节数。当控制权返回到事件循环或调用 flush() 时写入字节。

另请参阅 bytesAvailable() 和 flush().

[重写虚函数] bool QSerialPort::canReadLine() const

重新实现了:QIODevice::canReadLine() const.

如果可以从串行端口读取一行数据,则返回 true;否则返回 false

另请参阅 readLine().

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

根据给定的方向 directions 抛弃输出或输入缓冲区中的所有字符。这包括清除内部类缓冲区和 UART(驱动程序)缓冲区。同时终止挂起的读或写操作。如果成功,返回 true;否则返回 false

注: 在尝试清除任何缓冲数据之前,串行端口必须处于打开状态;否则返回 false 并设置 NotOpenError 错误代码。

[重写虚函数] void QSerialPort::close()

重新实现了:QIODevice::close().

注: 在尝试关闭串行端口之前,它必须处于打开状态;否则设置 NotOpenError 错误代码。

另请参阅 QIODevice::close().

[信号] void QSerialPort::dataBitsChanged(QSerialPort::DataBits dataBits)

在帧中的数据位已更改后发出此信号。新帧中的数据位作为 dataBits 传递。

注: 属性 dataBits 的通知信号。

另请参阅 QSerialPort::dataBits

[信号] void QSerialPort::dataTerminalReadyChanged(bool set)

在信号线路 DTR 的状态(高或低)更改后发出此信号。通过 set 传递新线信号 DTR 的状态(高或低)。

注: 属性 dataTerminalReady 的通知信号。

另请参阅 QSerialPort::dataTerminalReady.

[信号] void QSerialPort::errorOccurred(QSerialPort::SerialPortError error)

当串行端口发生错误时发出此信号。指定的 error 描述了发生的错误类型。

注: 属性 error 的通知信号。

另请参阅QSerialPort::error

[信号] void QSerialPort::flowControlChanged(QSerialPort::FlowControl flow)

该信号在流量控制模式改变后发出。新的流量控制模式作为 flow 传递。

注意:属性 flowControl 的通知信号。

另请参阅 QSerialPort::flowControl

bool QSerialPort::flush()

此函数尽可能将内部写入缓冲区中的数据写入到底层串行端口,而不进行阻塞。如果已写入任何数据,则此函数返回 true;否则返回 false

调用此函数以将缓冲数据立即发送到串行端口。成功写入的字节数取决于操作系统。在大多数情况下,不需要调用此函数,因为 QSerialPort 类将自动开始发送数据,一旦事件循环返回控制权。如果没有事件循环,则替换为调用 waitForBytesWritten()。

注意:在尝试刷新任何缓冲数据之前,串行端口必须处于打开状态;否则返回 false 并设置 NotOpenError 错误代码。

另请参阅:write() 和 waitForBytesWritten

QSerialPort::Handle QSerialPort::handle() const

如果平台受支持且串行端口已打开,则返回本机串行端口句柄;否则返回 -1

警告:此函数仅用于专家使用;使用风险自负。此外,此函数不保证在各个小版本的 Qt 发布之间具有兼容性。

[重写虚函数] bool QSerialPort::isSequential() const

重新实现了: QIODevice::isSequential() const

总是返回 true。串行端口是顺序设备。

[重写虚函数] bool QSerialPort::open(QIODeviceBase::OpenMode mode)

重新实现了: QIODevice::open(QIODeviceBase::OpenMode mode)。

使用 OpenMode mode 打开串行端口,如果成功则返回 true;否则返回 false 并设置错误代码,该代码可以通过调用 error() 方法获取。

注意:如果打开端口成功,但无法成功设置任何端口设置,则该方法返回 false。在这种情况下,端口将自动关闭,以免留下带有不正确设置的端口。

警告: mode 必须是 QIODeviceBase::ReadOnlyQIODeviceBase::WriteOnlyQIODeviceBase::ReadWrite。其他模式不受支持。

另请参阅:QIODeviceBase::OpenModesetPort

[信号] void QSerialPort::parityChanged(QSerialPort::Parity parity)

当奇偶校验位检查模式更改后,将发出此信号。新的奇偶校验位检查模式作为 parity 传递。

注意:这是属性的 parity 通知器信号。

另请参阅 QSerialPort::parity

QSerialPort::PinoutSignals QSerialPort::pinoutSignals()

以位图格式返回线信号的当前状态。

从该结果中,可以通过应用“与”掩码(其中掩码是来自 QSerialPort::PinoutSignals 的所需的枚举值)来分配所需信号的当前状态。

注意:此方法执行系统调用,从而确保正确返回线信号状态。当底层操作系统无法提供关于更改的正确通知时,这很有必要。

注意:在尝试获取引脚信号之前,必须打开串行端口;否则返回 NoSignal 并设置 NotOpenError 错误码。

另请参阅QSerialPort::dataTerminalReadyQSerialPort::requestToSend

QString QSerialPort::portName() const

返回由 setPort() 设置或传递给 QSerialPort 构造函数的名称。该名称很短,即是从设备的内部变量系统位置提取和转换的。转换算法是平台特定的。

平台简要说明
Windows从系统位置中删除前缀 "\\.\" 或 "//./",并返回字符串的其余部分。
Unix、BSD从系统位置中删除前缀 "/dev/",并返回字符串的其余部分。

另请参阅setPortName(),setPort() 和 QSerialPortInfo::portName

qint64 QSerialPort::readBufferSize() const

返回内部读取缓冲区的大小。这限制了在调用 read() 或 readAll 方法之前客户端可以接收的数据量。

读取缓冲区大小为 0(默认值)表示没有大小限制,确保不会丢失数据。

另请参阅setReadBufferSize() 和 read

[重写虚拟受保护的] qint64 QSerialPort::readData(char *data, qint64 maxSize)

重新实现了: QIODevice::readData(char *data, qint64 maxSize).

[重写虚拟受保护的] qint64 QSerialPort::readLineData(char *data, qint64 maxSize)

重新实现: QIODevice::readLineData(char *data, qint64 maxSize)。

[信号] void QSerialPort::requestToSendChanged(bool set)

当行信号 RTS 的状态(高或低)改变后,会发出此信号。新的行信号 RTS 的状态(高或低)作为 set 传递。

注意:通知 requestToSend 特性的信号。

另请参阅:QSerialPort::requestToSend

void QSerialPort::setPort(const QSerialPortInfo &serialPortInfo)

设置存储在串行端口信息实例 serialPortInfo 中的端口。

另请参阅:portName() 和 QSerialPortInfo

void QSerialPort::setPortName(const QString &name)

设置串行端口的 名称

串行端口的名称可以是简称或系统位置的完整名称,如有必要。

另请参阅:portName() 和 QSerialPortInfo

void QSerialPort::setReadBufferSize(qint64 size)

QSerialPort 的内部读取缓冲区大小设置为 size 字节。

如果缓冲区大小限制为一定大小,则 QSerialPort 不会缓存超过这个大小的数据。特殊情况下缓冲区大小为 0 表示读取缓冲区为无限大,所有传入的数据都将被缓存。这是默认值。

如果数据只在特定时间点读取(例如在实时流应用中)或如果需要保护串行端口免收过多数据,这可能导致应用程序耗尽内存,则此选项非常有用。

另请参阅:readBufferSize() 和 read

[信号] void QSerialPort::stopBitsChanged(QSerialPort::StopBits stopBits)

在一个帧中的停止位数改变后,会发出此信号。新的停止位数作为 stopBits 传递。

注意:通知 stopBits 特性的信号。

另请参阅QSerialPort::stopBits

[重载虚拟] bool QSerialPort::waitForBytesWritten(int msecs = 30000)

重新实现:QIODevice::waitForBytesWritten(int msecs)。

此函数将阻塞,直到至少有一个字节写入串行端口并发出 bytesWritten() 信号。函数将在 msecs 毫秒后超时;默认超时时间为 30000 毫秒。如果 msecs 为 -1,则此函数不会超时。

如果发出 bytesWritten() 信号,函数返回 true;否则返回 false(如果发生错误或操作超时)。

[重载虚拟] bool QSerialPort::waitForReadyRead(int msecs = 30000)

重实现:QIODevice::waitForReadyRead(int msecs).

此函数在可读数据可用时阻塞,直到发出 readyRead() 信号。该函数将在 msecs 毫秒后超时;默认超时时间为 30000 毫秒。如果 msecs 为 -1,则此函数不会超时。

如果发出 readyRead() 信号且可读数据可用,则该函数返回 true;否则返回 false(如果发生错误或操作超时)。

另请参阅waitForBytesWritten().

[重写虚拟受保护] qint64 QSerialPort::writeData(const char *data, qint64 maxSize)

重实现:QIODevice::writeData(const char *data, qint64 maxSize).

© 2024 The Qt Company Ltd. 本文档中包含的贡献版权分别属于各自所有者。提供的文档根据自由软件基金会发布的 GNU 自由文档许可协议版本 1.3 的条款进行许可。Qt 及其相关标志是芬兰和/或世界其他地区的 The Qt Company Ltd. 的商标。所有其他商标均为各自所有者的财产。