范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Qt实现串口通信的完整步骤

  要实现串口通信,需要知道串口通信需要的信息
  主要参数有:波特率、校验位、数据位、停止位、控制流
  主要操作有:串口的打开和关闭、刷新设备串口、接发数据、开关显示灯等。实现效果如图:
  界面设计如下:
  每个控件类名如下:
  LED灯是QLable控件,设置它的长宽都是24px,然后鼠标右击,选择"样式表",在样式表中添加代码。
  文章最后附赠完整源码
  第一步:在头文件中引入 QtSerialPort 类的两个头文件(必须引入)// 引入串口通信的两个头文件(第一步) #include          // 提供访问串口的功能 #include      // 提供系统中存在的串口信息
  第二步:在工程文件中添加以下代码# 引入串口工程类型(第二步) QT       += serialport
  第三步:在头文件中定义全局的串口对象QSerialPort     *serial;                            // 定义全局的串口对象(第三步)
  第四步:参数设置,在头文件中定义初始化参数的函数和参数变量名,在.cpp文件中实现函数public: void        SerialPortInit();                      // 串口初始化(参数配置)   private: // 参数配置     QStringList     baudList;                           //波特率     QStringList     parityList;                         //校验位     QStringList     dataBitsList;                       //数据位     QStringList     stopBitsList;                       //停止位     QStringList     flowControlList;                    //控制流// 串口初始化(参数配置) void MainWindow::SerialPortInit() {     serial = new QSerialPort;                       //申请内存,并设置父对象       // 获取计算机中有效的端口号,然后将端口号的名称给端口选择控件     foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts())     {         serial->setPort(info);                      // 在对象中设置串口         if(serial->open(QIODevice::ReadWrite))      // 以读写方式打开串口         {             ui->PortBox->addItem(info.portName());  // 添加计算机中的端口             serial->close();                        // 关闭         } else         {             qDebug() << "串口打开失败,请重试";         }     }       // 参数配置     // 波特率,波特率默认选择57600 ,禁止用户点击     ui->BaudBox->addItem("57600");     serial->setBaudRate(QSerialPort::Baud57600);     ui->BaudBox->setDisabled(true);       // 校验,校验默认选择无     ui->ParityBox->addItem("无");     serial->setParity(QSerialPort::NoParity);       // 数据位,数据位默认选择8位     ui->BitBox->addItem("8");     serial->setDataBits(QSerialPort::Data8);       // 停止位,停止位默认选择1位     ui->StopBox->addItem("1");     serial->setStopBits(QSerialPort::OneStop);       // 控制流,默认选择无     ui->ControlBox->addItem("无");     serial->setFlowControl(QSerialPort::NoFlowControl);       // 刷新串口     RefreshSerialPort(0);       // 信号 connect(serial,&QSerialPort::readyRead,this,&MainWindow::DataReceived);      // 接收数据 connect(ui->SendWordOrder,&QPushButton::clicked,this,&MainWindow::DataSend); // 发送数据 connect(ui->SendButton,&QPushButton::clicked,this,&MainWindow::DataSend);    // 发送数据 connect(ui->SendEditBtn1,&QPushButton::clicked,this,&MainWindow::DataSend);  // 发送数据 connect(ui->SendEditBtn2,&QPushButton::clicked,this,&MainWindow::DataSend);  // 发送数据 connect(ui->SendEditBtn3,&QPushButton::clicked,this,&MainWindow::DataSend);  // 发送数据 }
  第五步:刷新串口,及时更新可用的串口
  QT开发交流+赀料君羊:714620761// 刷新串口 void MainWindow::RefreshSerialPort(int index) {     QStringList portNameList;                                        // 存储所有串口名     if(index != 0)     {         serial->setPortName(ui->PortBox->currentText());             //设置串口号     }     else     {         ui->PortBox->clear();                                        //关闭串口号         ui->PortBox->addItem("刷新");                                //添加刷新         foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts()) //添加新串口         {             portNameList.append(info.portName());         }         ui->PortBox->addItems(portNameList);         ui->PortBox->setCurrentIndex(1);                             // 当前串口号为COM1         serial->setPortName(ui->PortBox->currentText());             //设置串口号    } }
  第六步:发送数据和接收数据// 接收数据,使用read () / readLine () / readAll () void MainWindow::DataReceived() {     char BUF[512] = {0};                                       // 存储转换类型后的数据     QByteArray data = serial->readAll();                      // 读取数据       if(!data.isEmpty())                                 // 接收到数据     {         QString str = ui->DataReceived->toPlainText();  // 返回纯文本         str += tr(data);                         // 数据是一行一行传送的,要保存所有数据         ui->DataReceived->clear();                      // 清空之前的数据         ui->DataReceived->append(str);                  // 将数据放入控件中         qDebug() << "str info: " << ui->DataReceived->toPlainText();            // 清除之前的数据,防止追加,因为每次获取的数据不一样         int index = str.indexOf("r ");                // 找到,返回索引值,找不到,返回-1         if(index != -1)         {             snprintf(BUF,500,"%s", str.left(index + 2).toUtf8().data()); // QString转为char * 类型             qDebug() << "BUF info: " << BUF;        // 数据类型转换成功             str.remove(0,index + 2);                // 处理获取到的数据,将其放入对应的控件中             // .....                                       }     } }   // 发送数据,write () void MainWindow::DataSend() {     serial->write(ui->DataSend->toPlainText().toLatin1());      // 串口发送数据 }
  第七步:打开串口和关闭串口,当打开串口后,显示绿灯;关闭串口后,显示红灯// 串口开关 void color:rgb(98 189 255)">MainWindow::on_OpenSerialButton_clicked() {     if(serial->isOpen())                                  // 如果串口打开了,先给他关闭     {         serial->clear();         serial->close();         // 关闭状态,按钮显示"打开串口"         ui->OpenSerialButton->setText("打开串口");         // 关闭状态,允许用户操作         ui->BaudBox->setDisabled(false);         ui->ParityBox->setDisabled(false);         ui->BitBox->setDisabled(false);         ui->StopBox->setDisabled(false);         ui->ControlBox->setDisabled(false);         // 禁止操作"发送字符操作"         ui->SendWordOrder->setDisabled(true);         ui->SendButton->setDisabled(true);         // 关闭状态,颜色为绿色         ui->OpenSerialButton->setStyleSheet("color: green;");         // 关闭,显示灯为红色         LED(true);         // 清空数据         ui->DataReceived->clear();         ui->DataSend->clear();     }     else                                             // 如果串口关闭了,先给他打开     {         //当前选择的串口名字         serial->setPortName(ui->PortBox->currentText());         //用ReadWrite 的模式尝试打开串口,无法收发数据时,发出警告         if(!serial->open(QIODevice::ReadWrite))         {             QMessageBox::warning(this,tr("提示"),tr("串口打开失败!"),QMessageBox::Ok);             return;          }         // 打开状态,按钮显示"关闭串口"         ui->OpenSerialButton->setText("关闭串口");         // 打开状态,禁止用户操作         ui->BaudBox->setDisabled(true);         ui->ParityBox->setDisabled(true);         ui->BitBox->setDisabled(true);         ui->StopBox->setDisabled(true);         ui->ControlBox->setDisabled(true);         // 允许操作"发送字符操作"         ui->SendWordOrder->setDisabled(false);         ui->SendButton->setDisabled(false);         // 打开状态,颜色为红色         ui->OpenSerialButton->setStyleSheet("color: red;");         // 打开,显示灯为绿色         LED(false);     } }   // 开关显示灯 void  color:rgb(98 189 255)">MainWindow::LED(bool changeColor) {     if(changeColor == false)     {         // 显示绿色         ui->LED->setStyleSheet("background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(0, 229, 0, 255), stop:1 rgba(255, 255, 255, 255));border-radius:12px;");     }     else     {         // 显示红色         ui->LED->setStyleSheet("background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(255, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));border-radius:12px;");     } }
  第八步:相关槽函数// 控件中添加 指令"###" void MainWindow::on_SendButton_clicked() {     on_ClearButton_clicked();     ui->DataSend->append("###"); } // 清空控件 void MainWindow::on_ClearButton_clicked() {     ui->DataSend->setText(""); } // 清空接收到的数据 void MainWindow::on_ClearShowButton_clicked() {     ui->DataReceived->setText(""); } // 点击发送后,获取串口信息并展示在接受控件中 void MainWindow::on_SendEditBtn1_clicked() {     on_ClearButton_clicked();     QString EditText = ui->Edit1->text();               //获取发送框内容     ui->DataSend->setText(EditText);                     //将文本内容放在发送栏中 }   void MainWindow::on_SendEditBtn2_clicked() {     on_ClearButton_clicked();     QString EditText = ui->Edit2->text();               //获取发送框内容       // qDebug() << "Edit1 text: " << EditText;       ui->DataSend->append(EditText);                     //将文本内容放在发送栏中 }   void MainWindow::on_SendEditBtn3_clicked() {     on_ClearButton_clicked();     QString EditText = ui->Edit3->text();               //获取发送框内容       // qDebug() << "Edit1 text: " << EditText;       ui->DataSend->append(EditText);                     //将文本内容放在发送栏中 }       void MainWindow::on_SendWordOrder_clicked() {     on_SendButton_clicked(); }源码:
  工程文件.pro文件源码:QT       += core gui # 引入串口工程类型(第二步) QT       += serialport   greaterThan(QT_MAJOR_VERSION, 4): QT += widgets   CONFIG += c++11   # The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS   # You can also make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0   SOURCES +=      main.cpp      mainwindow.cpp   HEADERS +=      mainwindow.h   FORMS +=      mainwindow.ui   # Default rules for deployment. qnx: target.path = /tmp/${TARGET}/bin else: unix:!android: target.path = /opt/${TARGET}/bin !isEmpty(target.path): INSTALLS += target
  头文件源码:#ifndef MAINWINDOW_H #define MAINWINDOW_H   #include  // 引入串口通信的两个头文件(第一步) #include          // 提供访问串口的功能 #include      // 提供系统中存在的串口信息   QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE   class MainWindow : public QMainWindow {     Q_OBJECT   public:     MainWindow(QWidget *parent = nullptr);     ~MainWindow();       // 串口功能     void        SerialPortInit();                      // 串口初始化(参数配置)     void        RefreshSerialPort(int index);          // 刷新串口   public slots:     // 串口槽函数     void        DataReceived();                        // 接收数据 private slots:     // 串口槽函数     void        DataSend();                            // 发送数据       void        on_OpenSerialButton_clicked();         // 串口开关       void        on_SendButton_clicked();               // 控件中添加 #       void        on_ClearButton_clicked();              // 清空控件中的所有 #       void        on_ClearShowButton_clicked();          // 清空接收到的数据       void        LED(bool changeColor);                 // 开关显示灯       // 点击发送,接收数据     void        on_SendEditBtn1_clicked();       void        on_SendEditBtn2_clicked();       void        on_SendEditBtn3_clicked();         void on_SendWordOrder_clicked();   private:     Ui::MainWindow *ui;       // 串口变量     QSerialPort     *serial;                            // 定义全局的串口对象(第三步)     // 参数配置     QStringList     baudList;                           //波特率     QStringList     parityList;                         //校验位     QStringList     dataBitsList;                       //数据位     QStringList     stopBitsList;                       //停止位     QStringList     flowControlList;                    //控制流 }; #endif // MAINWINDOW_H
  .cpp文件源码:#include "color:rgb(98 189 255)">mainwindow.h" #include "ui_color:rgb(98 189 255)">mainwindow.h" #include  #include    color:rgb(98 189 255)">MainWindow::color:rgb(98 189 255)">MainWindow(QWidget *parent)     : Qcolor:rgb(98 189 255)">MainWindow(parent)     , ui(new color:rgb(144 255 173)">Ui::color:rgb(98 189 255)">MainWindow) {     ui->setupcolor:rgb(144 255 173)">Ui(this);       SerialPortInit(); }   // 串口初始化(参数配置) void color:rgb(98 189 255)">MainWindow::SerialPortInit() {     serial = new color:rgb(98 189 255)">QSerialPort;                       //申请内存,并设置父对象       // 获取计算机中有效的端口号,然后将端口号的名称给端口选择控件     foreach(const color:rgb(98 189 255)">color:rgb(98 189 255)">QSerialPortInfo &color:rgb(73 238 255)">info,color:rgb(98 189 255)">color:rgb(98 189 255)">QSerialPortInfo::availablePorts())     {         serial->setPort(color:rgb(73 238 255)">info);                      // 在对象中设置串口         if(serial->open(color:rgb(98 189 255)">QIODevice::ReadWrite))      // 以读写方式打开串口         {             ui->PortBox->addItem(color:rgb(73 238 255)">info.portName());  // 添加计算机中的端口             serial->close();                        // 关闭         } else         {             qDebug() << "串口打开失败,请重试";         }     }       // 参数配置     // 波特率,波特率默认选择color:rgb(255 95 0)">57600 ,禁止用户点击     ui->BaudBox->addItem("color:rgb(255 95 0)">57600");     serial->setBaudRate(color:rgb(98 189 255)">QSerialPort::Baudcolor:rgb(255 95 0)">57600);     ui->BaudBox->setDisabled(true);       // 校验,校验默认选择无     ui->ParityBox->addItem("无");     serial->setParity(color:rgb(98 189 255)">QSerialPort::NoParity);       // 数据位,数据位默认选择8位     ui->BitBox->addItem("8");     serial->setDataBits(color:rgb(98 189 255)">QSerialPort::Data8);       // 停止位,停止位默认选择1位     ui->StopBox->addItem("1");     serial->setStopBits(color:rgb(98 189 255)">QSerialPort::OneStop);       // 控制流,默认选择无     ui->ControlBox->addItem("无");     serial->setFlowControl(color:rgb(98 189 255)">QSerialPort::NoFlowControl);       // 刷新串口     RefreshSerialPort(0);       // 信号     connect(serial,&color:rgb(98 189 255)">QSerialPort::readyRead,this,&color:rgb(98 189 255)">MainWindow::DataReceived);         // 接收数据     connect(ui->SendWordOrder,&color:rgb(98 189 255)">QPushButton::clicked,this,&color:rgb(98 189 255)">MainWindow::DataSend);    // 发送数据     connect(ui->SendButton,&color:rgb(98 189 255)">QPushButton::clicked,this,&color:rgb(98 189 255)">MainWindow::DataSend);       // 发送数据     connect(ui->SendEditBtn1,&color:rgb(98 189 255)">QPushButton::clicked,this,&color:rgb(98 189 255)">MainWindow::DataSend);    // 发送数据     connect(ui->SendEditBtn2,&color:rgb(98 189 255)">QPushButton::clicked,this,&color:rgb(98 189 255)">MainWindow::DataSend);    // 发送数据     connect(ui->SendEditBtn3,&color:rgb(98 189 255)">QPushButton::clicked,this,&color:rgb(98 189 255)">MainWindow::DataSend);    // 发送数据   } // 刷新串口 void color:rgb(98 189 255)">MainWindow::RefreshSerialPort(int index) {     QStringList color:rgb(98 189 255)">portNameList;                                        // 存储所有串口名     if(index != 0)     {         serial->setPortName(ui->PortBox->currentText());             //设置串口号     }     else     {         ui->PortBox->clear();                                        //关闭串口号         ui->PortBox->addItem("刷新");                                //添加刷新         foreach(const color:rgb(98 189 255)">color:rgb(98 189 255)">QSerialPortInfo &color:rgb(73 238 255)">info,color:rgb(98 189 255)">color:rgb(98 189 255)">QSerialPortInfo::availablePorts()) //添加新串口         {             color:rgb(98 189 255)">portNameList.append(color:rgb(73 238 255)">info.portName());         }                 ui->PortBox->addItems(color:rgb(98 189 255)">portNameList);         ui->PortBox->setCurrentIndex(1);                             // 当前串口号为COM1         serial->setPortName(ui->PortBox->currentText());             //设置串口号    } }   // 接收数据,使用read () / readLine () / readAll () void color:rgb(98 189 255)">MainWindow::DataReceived() {     char BUF[512] = {0};                                       // 存储转换类型后的数据     QByteArray color:rgb(73 238 255)">data = serial->readAll();                      // 读取数据       if(!color:rgb(73 238 255)">data.isEmpty())                                 // 接收到数据     {         QString color:rgb(255 111 119)">str = ui->DataReceived->toPlainText();  // 返回纯文本         color:rgb(255 111 119)">str += tr(color:rgb(73 238 255)">data);                                // 数据是一行一行传送的,要保存所有数据         ui->DataReceived->clear();                      // 清空之前的数据         ui->DataReceived->append(color:rgb(255 111 119)">str);                  // 将数据放入控件中         qDebug() << "color:rgb(255 111 119)">str color:rgb(73 238 255)">info: " << ui->DataReceived->toPlainText();            // 清除之前的数据,防止追加,因为每次获取的数据不一样         int index = color:rgb(255 111 119)">str.indexOf("r ");                // 找到,返回索引值,找不到,返回-1         if(index != -1)         {             snprintf(BUF,500,"%s", color:rgb(255 111 119)">str.left(index + 2).toUtf8().color:rgb(73 238 255)">data()); // QString转为char * 类型             qDebug() << "BUF color:rgb(73 238 255)">info: " << BUF;             color:rgb(255 111 119)">str.remove(0,index + 2);               // 处理获取到的数据,将其放入对应的控件中             // ....         }     } } // 发送数据,write () void color:rgb(98 189 255)">MainWindow::DataSend() {     serial->write(ui->DataSend->toPlainText().toLatin1());      // 串口发送数据 }   // 开关显示灯 void  color:rgb(98 189 255)">MainWindow::LED(bool changeColor) {     if(changeColor == false)     {         // 显示绿色         ui->LED->setStyleSheet("color:rgb(98 189 255)">background-color: qradialgradient(color:rgb(255 211 0)">spread:pad, color:rgb(144 255 173)">cx:0.5, color:rgb(144 255 173)">cy:0.5, color:rgb(255 211 0)">radius:0.5, color:rgb(144 255 173)">fx:0.5, color:rgb(144 255 173)">fy:0.5, color:rgb(73 238 255)">stop:0 rgba(0, 229, 0, 255), color:rgb(73 238 255)">stop:1 rgba(255, 255, 255, 255));border-color:rgb(255 211 0)">radius:12px;");     }     else     {         // 显示红色         ui->LED->setStyleSheet("color:rgb(98 189 255)">background-color: qradialgradient(color:rgb(255 211 0)">spread:pad, color:rgb(144 255 173)">cx:0.5, color:rgb(144 255 173)">cy:0.5, color:rgb(255 211 0)">radius:0.5, color:rgb(144 255 173)">fx:0.5, color:rgb(144 255 173)">fy:0.5, color:rgb(73 238 255)">stop:0 rgba(255, 0, 0, 255), color:rgb(73 238 255)">stop:1 rgba(255, 255, 255, 255));border-color:rgb(255 211 0)">radius:12px;");     } }   color:rgb(98 189 255)">MainWindow::~color:rgb(98 189 255)">MainWindow() {     delete ui; }   // 串口开关 void color:rgb(98 189 255)">MainWindow::on_OpenSerialButton_clicked() {     if(serial->isOpen())                                        // 如果串口打开了,先给他关闭     {         serial->clear();         serial->close();         // 关闭状态,按钮显示"打开串口"         ui->OpenSerialButton->setText("打开串口");         // 关闭状态,允许用户操作         ui->BaudBox->setDisabled(false);         ui->ParityBox->setDisabled(false);         ui->BitBox->setDisabled(false);         ui->StopBox->setDisabled(false);         ui->ControlBox->setDisabled(false);         // 禁止操作"发送字符操作"         ui->SendWordOrder->setDisabled(true);         ui->SendButton->setDisabled(true);         // 关闭状态,颜色为绿色         ui->OpenSerialButton->setStyleSheet("color: green;");         // 关闭,显示灯为红色         LED(true);         // 清空数据         ui->DataReceived->clear();         ui->DataSend->clear();     }     else                                                        // 如果串口关闭了,先给他打开     {         //当前选择的串口名字         serial->setPortName(ui->PortBox->currentText());         //用ReadWrite 的模式尝试打开串口,无法收发数据时,发出警告         if(!serial->open(color:rgb(98 189 255)">QIODevice::ReadWrite))         {             QMessageBox::warning(this,tr("提示"),tr("串口打开失败!"),QMessageBox::Ok);             return;          }         // 打开状态,按钮显示"关闭串口"         ui->OpenSerialButton->setText("关闭串口");         // 打开状态,禁止用户操作         ui->BaudBox->setDisabled(true);         ui->ParityBox->setDisabled(true);         ui->BitBox->setDisabled(true);         ui->StopBox->setDisabled(true);         ui->ControlBox->setDisabled(true);         // 允许操作"发送字符操作"         ui->SendWordOrder->setDisabled(false);         ui->SendButton->setDisabled(false);         // 打开状态,颜色为红色         ui->OpenSerialButton->setStyleSheet("color: red;");         // 打开,显示灯为绿色         LED(false);     } } // 控件中添加 # void color:rgb(98 189 255)">MainWindow::on_SendButton_clicked() {     on_ClearButton_clicked();     ui->DataSend->append("###"); } // 清空控件 void color:rgb(98 189 255)">MainWindow::on_ClearButton_clicked() {     ui->DataSend->setText(""); } // 清空接收到的数据 void color:rgb(98 189 255)">MainWindow::on_ClearShowButton_clicked() {     ui->DataReceived->setText(""); } // 点击发送后,获取串口信息并展示在接受控件中 void color:rgb(98 189 255)">MainWindow::on_SendEditBtn1_clicked() {     on_ClearButton_clicked();     QString EditText = ui->Edit1->text();               //获取发送框内容     ui->DataSend->setText(EditText);                     //将文本内容放在发送栏中 }   void color:rgb(98 189 255)">MainWindow::on_SendEditBtn2_clicked() {     on_ClearButton_clicked();     QString EditText = ui->Edit2->text();               //获取发送框内容       // qDebug() << "Edit1 text: " << EditText;       ui->DataSend->append(EditText);                     //将文本内容放在发送栏中 }   void color:rgb(98 189 255)">MainWindow::on_SendEditBtn3_clicked() {     on_ClearButton_clicked();     QString EditText = ui->Edit3->text();               //获取发送框内容       // qDebug() << "Edit1 text: " << EditText;       ui->DataSend->append(EditText);                     //将文本内容放在发送栏中 }     void color:rgb(98 189 255)">MainWindow::on_SendWordOrder_clicked() {     on_SendButton_clicked(); }
  运行后效果:

欧洲又要制裁俄罗斯了?对俄出售石油价格设上限俄不感兴趣2020年4月,一场史诗级的石油崩盘可能出现之际,G20国家进行商讨和合作后,恢复了石油市场稳定。两年半之后,全球大国在能源方面的合作似乎成为一个遥远的记忆。据悉,欧洲将在本周末致Scboy丢人了!黄旭东和夏一可对局英雄三国,惨被两分钟速通众所周知,黄旭东和夏一可同作为四川自贡人,又涉及同一个领域,经常会产生很多恩怨情仇,是玩家们调侃的目标。而在近日,黄旭东又在直播过程中和夏一可比拼了一波英雄三国里的新游戏模式,引发一款超值得推荐的露营装备离地帐篷床疫情这三年,基本把我外出旅游的想法给扼杀了,但庆幸的是,找到了另一个爱好,那就是亲近大自然户外露营。对于一个新手的爱好者,不知道买什么户外装备才适合自己,在各大电商平台仔细查找产品体验服新英雄莱西奥保姆级教学上小王又来整活了体验服又出一个能在天上飘的射手莱西奥你看这英雄强度我觉得六个ban位是不是不太够用啊真诚建议设计师在增加几个位置不过好在还在体验服那这个射手强势在哪儿呢首先来看普攻普抗美援朝中让我们热泪盈眶的5位战斗英雄抗美援朝战争,是指20世纪50年代初期,中国人民志愿军支援朝鲜人民抗击美国侵略者的群众性运动。1950年10月,中国人民志愿军雄赳赳气昂昂跨过了鸭绿江,就此拉开了抗美援朝的序幕19坦克500HEV量产版首秀长城新能源登陆泰国车博会太平洋汽车新车频道近日,长城汽车携多款新能源车型亮相第39届泰国车博会,其中长城旗下坦克500(询底价查参配)HEV量产版欧拉闪电猫首次泰国亮相,哈弗H6PHEV哈弗JOLIONH低级房的反向弹鼓炮!到底是上限极高的战神,还是食之无味的鸡肋各位车长老爷大家好啊!昨天在经过漫长的等待之后,莱茵终于拿到了本期当之无愧奖的奖品,KV1SA!相信不少观众老爷都会好奇,它到底好不好玩,到底是不错的娱乐玩具,还是仅仅只是一个银币险走独龙江,穿越滇西线之(一)怒江大峡谷风光在险,奇景于远。滇西北高原神秘的怒江大峡谷秘境独龙江,还有天险德贡公路,那里的山水草木和民族风情,让人魂牵梦萦,一直召唤着我的内心。每每心动欲行之时,总是被道险天恶路断道毁,疫铁骨铮铮,英雄不朽朔风卷尘,泱泱大国,一身正气数载守护如画江山,千古英气,国之脊梁向党向民。生死置身外,丹心照汗青。抗日战争英雄杨靖宇,你只身孤战,以草絮为食,宁死不屈,撑到最后一刻。共产党奋战时刻B站破亿的15部番剧系列,都看过了吗?B站老板虽然是很多人不喜欢的,但是这个平台还是给我们带来超好看的番剧,还聚集了大量的二次元爱好者。更有播放量破亿的番剧,有大家熟知的火影忍者航海王铁臂阿童木等等堪称经典,值得二刷三维生素AD要给宝宝补充到几岁?有哪些补充方式?很多家长都不知道宝宝的到来是每个家庭最最最开心的时刻,初为人母人父的家长们在开心之余,身上也多了一份责任,每个爸爸妈妈都希望孩子可以健康茁壮成长,所以,孩子的身体发育就成了宝爸宝妈们最关心的话题。
无限超越班播出片段被剪辑,郭晓婷在线揭秘,别吐槽赵樱子了无限超越班开播后,关于节目的话题连续登上热搜,最吸引观众的是老戏骨们的敢说,看到这样的情况后,网友们纷纷表示老演员在线整顿演艺圈,随着节目更新,网友们发现这档综艺节目竟存在被剪辑的58岁张曼玉独居平民区,骨瘦如柴,穿19元地摊货,身边只有狗作伴提起张曼玉,我们想到的就是女神。过去,她的确是女神,面容姣好,身材劲爆,曾是众多年轻男子的梦中情人。1983年,18岁的张曼玉获得了香港小姐亚军和最上镜小姐奖,正式步入了演艺圈。虽管好身边的人,让刘秀更完美了汉世祖光武皇帝刘秀,东汉开国皇帝,是中国历史上著名的政治家军事家。刘秀仅仅用了三年时间,就从一个农民做到了皇帝。因为他太优秀,还被人怀疑是穿越者。他开挂的人生,不可思议的经历,就连曾轶可巡演打碟1小时680元,疯狂割韭菜引歌迷反感,在线喊退钱2023年刚来到,曾轶可就火出了圈。网友纷纷呐喊,2022年的最后一个小时在曾轶可的DJ音乐里大喊退钱度过!事情起因于12月31日,曾轶可在名为双倍时长双倍幸福新年专场的跨年演唱会击败前世界第二,郑钦文喜提新赛季开门红文羊城晚报全媒体记者龙希1月3日,WTA500女子网球巡回赛阿德莱德站女单首轮继续在澳大利亚进行。中国小花郑钦文面对前世界第二的爱沙尼亚名将康塔维特,鏖战三盘以6比14比67比6战手机使用寿命一般几年?你多久换一次手机近期,媒体对市面上手机的寿命进行了一次统计,结果表明,大部分智能手机的使用寿命是23年,有些更高端性能更优良的手机可以使用45年。从统计数据来看,手机寿命一般在25年之间,可见手机聆听2022年彩云网评好声音4月产业强滇伴随着作风革命效能革命的催征鼓点,4月,一幅兴产业强产业的宏阔蓝图在云岭大地徐徐展开。由云南省委网信办主办,云南网云南日报理论评论部社会主义论坛编辑部承办,各州(市)委网信办和全省来自冯小刚的愧疚待我如兄弟一样的冯巩,我伤害了他1993年的一天,冯巩接到冯小刚打来的一个哀求电话巩兄弟,你能借我5000元钱吗?我女儿的手术费不够,过几个月就还你冯巩二话没说,拿着一万块钱到了医院。但十年后,冯小刚在自传中说,1409。8亿元!华为扯下国产手机品牌遮羞布,比尔盖茨高估了中企最近几年华为受到种种因素的影响,手机的销量有所下滑,主要原因就是因为芯片遭遇了被卡脖子的情况。而华为一直以来也是国产手机的领头羊,它的发展受到限制之后,对国内的高端市场也出现了非常摩托罗拉g53要开售了,899元的入门5g手机摩托罗拉g53要开售了,这个手机是百元机里面配置不错的,还是支持5g网络。这个手机是899元起步,使用骁龙480plus处理器,这个处理器大概和天玑700处理器类似,属于入门的5g不止iPhone手机,iPad换电池也涨价?对比小米11态度差异明显苹果方面宣布,自3月1日起将调整旗下产品更换电池服务费用,iPhone14系列之前的手机涨价168元,iPadMac等产品电池更换价格也有上涨。几乎在同一时间,雷军调整了小米11系