Qt 在windows下的串口读写

在windows下的串口读写

添加serialport模块支持

QT       += core gui serialport


添加头文件

 

#include 


创建串口对象

 

private:
    QSerialPort *serial;


创建必要的槽函数

private slots:
    void getData();        // 串口数据接受的槽函数
    void writeData(char *data, qint64 len);    // 数据发送
    void error(QSerialPort::SerialPortError serialPortError); // 操作错误槽函数


端口号获取


    QList portList;
    portList.clear();
    QList serialPortInfo = QSerialPortInfo::availablePorts();
    //搜索串口
    for (int i=0;i


初始化串口参数连接相关槽函数


serial = new QSerialPort(this);
serial->setPortName("COM25");               // 设置端口
serial->setBaudRate(115200);                // 波特率
serial->setDataBits(QSerialPort::Data8);    // 数据位
serial->setParity(QSerialPort::NoParity);   // 校验位
serial->setStopBits(QSerialPort::OneStop);  // 停止位
serial->setFlowControl(QSerialPort::NoFlowControl); // 无数据流控
// 绑定后信号槽函数:
connect(serial, SIGNAL(readyRead()), this, SLOT(getData()));
connect(serial, SIGNAL(errorOccurred(QSerialPort::SerialPortError)),this, SLOT(error(QSerialPort::SerialPortError)));
// 确认参数没有问题过后就以可读可写方式打开串口
serial->open(QIODevice::ReadWrite);


槽函数


void MainWindow::getData()
{
    char rebuf[1024];    // 数据接受缓存
    int length = serial->read(rebuf, 1024);
    // 打印接收到的内容,length是实际读取的数量
    for(int i=0; iisOpen())
    {
        serial->write(data,len);
    }
    else
    {
        qDebug("端口未打开");
    }
}

void MainWindow::error(QSerialPort::SerialPortError serialPortError)
{
}


上面具体serialPortError具体是什么错可以添加判断根据情况处理,可能出现的错误类型如下

   

 enum SerialPortError {
        NoError,
        DeviceNotFoundError,
        PermissionError,
        OpenError,
        ParityError,
        FramingError,
        BreakConditionError,
        WriteError,
        ReadError,
        ResourceError,
        UnsupportedOperationError,
        UnknownError,
        TimeoutError,
        NotOpenError
    };
    Q_ENUM(SerialPortError)

 

你可能感兴趣的:(QT)