QT 串口通讯QSerialPort类简单用法

  QT串口编程用到QSerialPort类与QSerialPortInfo类。

-QSerialPort:提供访问串口的功能 ,读写操作是通过该类来实现的。


-QSerialPortInfo:提供系统中存在的串口的信息,一般用于查询当前连接的串口信息。

QSerialPort类

使用方法

步骤1,在pro 文件中加
    QT       += serialport  

步骤2,在头文件.h中加入

    #include  
    如果有用到QSerialPortInfo类,同理加头文件 #include

步骤3,定义一个对象并且实例化

    QSerialPort *serial = new QSerialPort; 

步骤4,对串口的名称、波特率、数据位、校验位、停止位等参数进行设置

例如:   
    serial->setPortName(name);      //设置串口名  
    serial->open(QIODevice::ReadWrite);      //打开串口  
    serial->setBaudRate(BaudRate);      //设置波特率  
    serial->setDataBits(QSerialPort::Data8);      //设置数据位数
    serial->setParity(QSerialPort::NoParity);        //设置奇偶校验  
    serial->setStopBits(QSerialPort::OneStop);      //设置停止位 
    serial->setFlowControl(QSerialPort::NoFlowControl);    //设置流控制  

 

这里设置了串口名为name,打开串口并设置为可读可写,波特率为BaudRate,数据位为8位,没有奇偶校验位,停止位为1位,没有流控制。

步骤5,可以进行读写操作

读操作:当串口可读时,会发出readyRead()的信号,需要用到槽
    connect(serial,SIGNAL(readyRead()),this,SLOT(Read_Data()));
    
    void MainWindow::Read_Data()  
    {  
        QByteArray buf;  
        buf = serial->readAll();  
    }  
    
写操作
    serial->write(data);

可以通过返回值来确定成功写入/读出的字节数大小。

 

QSerialPortInfo类

用QSerialPortInfo类查找可用的串口的代码实现  

    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())  
    {  
        QSerialPort serial; 
        serial.setPort(info);  
        if(serial.open(QIODevice::ReadWrite))  
        {  
            ui->PortBox->addItem(serial.portName());    //这里用一个QCombox装住
            serial.close();  
        }  
    }

你可能感兴趣的:(QT 串口通讯QSerialPort类简单用法)