我在主线程中创建打开了一个QSerialPort串口对象,又创建了个子线程任务对象,把主线程的串口对象传入给任务对象,实现在子线程中发送文件。
请问各位后面主线程还要使用这个串口对象的话该怎么操作,直接在主线程中发送信息报了如图的错误。
//波特率
qint32 baudRate(QSerialPort::Directions directions = AllDirections) const
//根据给定的方向,丢弃输出或输入缓冲区中的所有字符。 这包括清除内部类缓冲区和 UART(驱动程序)缓冲区。
//同时终止挂起的读取或写入操作。 如果成功,则返回 true; 否则返回假。
bool clear(QSerialPort::Directions directions = AllDirections)
//该属性保存串口的错误状态,I/O 设备状态返回错误代码。 例如,如果 open() 返回 false,或者读/写操作返回 -1,则可以使用此属性找出操作失败的原因。
//调用 clearError() 后,错误代码设置为默认的 QSerialPort::NoError
void clearError()
//帧中的数据位
QSerialPort::DataBits dataBits() const
/*该属性保存串口的错误状态
I/O 设备状态返回错误代码。 例如,如果 open() 返回 false,或者读/写操作返回 -1,则可以使用此属性找出操作失败的原因。
调用 clearError() 后,错误代码设置为默认的 QSerialPort::NoError*/
QSerialPort::SerialPortError error() const
/* 此属性保存所需的流控制模式
如果设置成功或者在打开端口之前设置,返回true; 否则返回 false 并设置可以通过访问 QSerialPort::error 属性的值获得的错误代码。
注意:如果设置是在打开端口之前设置的,那么实际的串口设置是在打开端口成功后立即在 QSerialPort::open() 方法中自动完成的。
默认值为 NoFlowControl,即无流量控制。*/
QSerialPort::FlowControl flowControl() const
/* 该函数尽可能多地从内部写缓冲区写入底层串口而不阻塞。 如果写入了任何数据,则此函数返回 true; 否则返回假。
调用此函数将缓冲的数据立即发送到串口。 成功写入的字节数取决于操作系统。 在大多数情况下,不需要调用此函数,因为一旦控制权返回到事件循环,QSerialPort 类将自动开始发送数据。 在没有事件循环的情况下,请改为调用 waitForBytesWritten()。
注意:在尝试刷新任何缓冲数据之前,必须打开串口; 否则返回 false 并设置 NotOpenError 错误代码。*/
bool flush()
/* 如果平台支持且串口打开,则返回本机串口句柄; 否则返回 -1。
警告:此功能仅供专家使用; 需要您自担风险使用它。 此外,此函数在次要 Qt 版本之间没有兼容性承诺。
这个函数是在 Qt 5.2 中引入的。*/
QSerialPort::Handle handle() const
/* 该属性保持传输线处于中断状态
成功返回真,否则返回假。 如果标志为真,则传输线处于中断状态; 否则处于非中断状态。
注意:在尝试设置或获取此属性之前,必须打开串口; 否则返回 false 并设置 NotOpenError 错误代码。 与类的常规 Qt 属性设置相比,这有点不寻常。 但是,这是一 个特殊的用例,因为该属性是通过与内核和硬件的交互来设置的。 因此,这两种情况不能完全相互比较。
这个属性是在 Qt 5.5 中引入的。*/
bool isBreakEnabled() const
//此属性保存线路信号 DTR 的状态(高或低)
bool isDataTerminalReady()
//此属性保存线路信号 RTS 的状态(高或低)
bool isRequestToSend()
//该属性持有奇偶校验模式
//如果设置成功或者在打开端口之前设置,返回true; 否则返回 false 并设置可以通过访问 QSerialPort::error 属性的值获得的错误代码。
//注意:如果设置是在打开端口之前设置的,那么实际的串口设置是在打开端口成功后立即在 QSerialPort::open() 方法中自动完成的。
//默认值为 NoParity,即无奇偶校验。
QSerialPort::Parity parity() const
//以位图格式返回线路信号的状态。
//根据这个结果,可以通过应用掩码“AND”来分配所需信号的状态,其中掩码是来自 QSerialPort::PinoutSignals 的所需枚举值。
//注意:此方法执行系统调用,从而确保正确返回线路信号状态。 当底层操作系统无法提供有关更改的适当通知时,这是必要的。
//注意:在尝试获取引脚分配信号之前,必须打开串口; 否则返回 NoSignal 并设置 NotOpenError 错误代码。
QSerialPort::PinoutSignals pinoutSignals()
QString portName() const
//读取缓冲区大小
qint64 readBufferSize() const
//如果终端正在使用异步串行数据,则在以毫秒为单位的指定时间段内发送连续的零位流。 如果成功,则返回 true; 否则返回假。
//如果持续时间为零,则传输零位至少 0.25 秒,但不超过 0.5 秒。
//如果持续时间不为零,则根据实现在特定时间段内传输零位。
//注意:在尝试发送中断持续时间之前,必须打开串口; 否则返回 false 并设置 NotOpenError 错误代码。
bool sendBreak(int duration = 0)
bool setBaudRate(qint32 baudRate, QSerialPort::Directions directions = AllDirections)
bool setBreakEnabled(bool set = true)
bool setDataBits(QSerialPort::DataBits dataBits)
bool setDataTerminalReady(bool set)
bool setFlowControl(QSerialPort::FlowControl flowControl)
bool setParity(QSerialPort::Parity parity)
void setPort(const QSerialPortInfo &serialPortInfo)
void setPortName(const QString &name)
void setReadBufferSize(qint64 size)
bool setRequestToSend(bool set)
//设置停止位
bool setStopBits(QSerialPort::StopBits stopBits)
//停止位
QSerialPort::StopBits stopBits() const