void WorkThread::sendSerialData(QByteArray data) { if (serialPort != nullptr) { serialPort->write(data); } }
时间: 2024-04-02 21:35:24 浏览: 122
这段代码是用来发送串口数据的,首先判断QSerialPort对象是否为nullptr,如果不是就调用QSerialPort的write()函数发送数据。write()函数会将指定的数据写入到串口缓冲区中,如果缓冲区已满,则write()函数可能会阻塞程序,直到缓冲区有足够的空间为止。需要注意的是,write()函数只是将数据写入缓冲区,并不保证数据已经成功发送到串口设备。
相关问题
bool WorkThread::openSerialPort(QString port) { this->serialPort = new QSerialPort(); int baudRate = QSerialPort::Baud115200; if(serialPort->isOpen()) { serialPort->close(); } serialPort->setPortName(port); if(!serialPort->open(QIODevice::ReadWrite)) { return false; } serialPort->setBaudRate(baudRate); serialPort->setParity(QSerialPort::NoParity); serialPort->setDataBits(QSerialPort::Data8); serialPort->setStopBits(QSerialPort::OneStop); serialPort->setFlowControl(QSerialPort::NoFlowControl); serialPort->setDataTerminalReady(true); serialPort->setRequestToSend(true); return true; }
这是一个用于打开串口的函数,它使用了Qt框架中的QSerialPort类。该函数的作用是打开一个指定名称的串口,设置波特率为115200,无校验位,8个数据位,1个停止位,无流控制,并且设置数据终端就绪信号和请求发送信号。如果串口已经处于打开状态,则先关闭串口,确保打开的串口是唯一的。如果打开串口失败,则返回false,否则返回true。
QByteArray WorkThread::readSerialPort() { if (nullptr == serialPort) {return "";} qint64 byteLen = serialPort->bytesAvailable(); if(byteLen < 0) { return ""; } return serialPort->readAll(); }
这段代码是用来读取串口数据的,先判断QSerialPort对象是否为nullptr,如果是就返回一个空的QByteArray。然后获取可用的字节数,如果小于0也返回一个空的QByteArray。最后调用QSerialPort的readAll()函数读取所有可用的数据,并将其封装到一个QByteArray对象中返回。这里需要注意,readAll()函数可能会阻塞程序,直到读取到数据为止。
阅读全文