2.1QT串口通信

QT串口通信

1.在QT的pro文件中先加入serialport模块;

2.遍历可用端口;

QStringList SerialPortName;
foreach(const QSerialPortInfo &info,
         QSerialPortInfo::availablePorts()){
          SerialPortName << info.portName();
    }  //遍历可用端口
    ui->port->clear();
    ui->port->addItems(SerialPortName);

3.串口初始化,初始化端口号,波特率,校验位,数据位,停止位,流控制:

	if(Serial==nullptr) return;
 	if(Serial->isOpen()){
        Serial->clear();
        Serial->close();
    }
    Serial->setPortName(ui->port->currentText());  //设置端口号

​    if(!Serial->open(QIODevice::ReadWrite)){      //端口是否被占用
​        ui->link->setText(Serial->portName()+"打开失败");
​        return;
​    }

​    Serial->setBaudRate(ui->baudRate->currentText().toInt());  //设置波特率

​    int data=ui->dataBits->currentText().toInt();    //设置数据位
​    switch(data){
​    case 8:
​        Serial->setDataBits(QSerialPort::Data8);
​        break;
​    case 7:
​        Serial->setDataBits(QSerialPort::Data7);
​        break;
​    case 6:
​        Serial->setDataBits(QSerialPort::Data6);
​        break;
​    case 5:
​        Serial->setDataBits(QSerialPort::Data5);
​        break;
​    default:
​        Serial->setDataBits(QSerialPort::Data8);
​        break;
​    }

​    int stop=ui->StopBits->currentText().toInt();   //设置停止位
​    switch(stop){
​    case 1:
​        Serial->setStopBits(QSerialPort::OneStop);
​        break;
​    case 2:
​        Serial->setStopBits(QSerialPort::TwoStop);
​        break;
​    }

​    QString parity=ui->check->currentText();     //设置校验位
​    if("无校验"==parity){
​        Serial->setParity(QSerialPort::NoParity);
​    }else if("偶校验"==parity){
​        Serial->setParity(QSerialPort::EvenParity);
​    }else if("奇校验"==parity){
​        Serial->setParity(QSerialPort::OddParity);
​    }

​    Serial->setFlowControl(QSerialPort::NoFlowControl);  //设置流控制

4.串口读写操作:

读:

     

connect(Serial,SIGNAL(readyRead()),this,SLOT(readOnlyAll()));
void Widget::readOnlyAll(){
  QByteArray Data = Serial->readAll();
  ui->readText->appendPlainText(QString(Data));
 }

写:

   

 Serial->write(ui->writeText->text().toLocal8Bit().data());

5.断开连接:

   

 Serial->clear();
  Serial->close();

6.windows下项目打包:

  • 将release中exe文件放在要打包的文件夹下;
  • 打开QT控制台窗口,命令跳转到打包的文件夹的路径下;
  • 通过命令windeployqt exe文件打包。

img

posted @ 2023-08-23 11:10  狴泽犴  阅读(49)  评论(0编辑  收藏  举报