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

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(); }
  运行后效果:

游戏都这么涩气了,为什么彷徨之街还是陷入了争议?星彡P丨文我第一次知道百合风俗,还是在大妈之家看了永田的漫画因为太寂寞了而叫了百合风俗小姐的报告(现在应该下架了)。与其说是漫画作品,不如说是作者根据自己亲身经历写了体验报告。主角股骨头坏死患者饮食注意这三多三少,比吃药效果好股骨头坏死患者除了坚持用药之外,饮食上注意这3多3少,同样也很重要。三多多补充蛋白质维生素和纤维素,比如说牛奶新鲜蔬菜都要多吃。补充蛋白质可以促进我们吸收营养,恢复身体的机能。多补庆余年2启动,言冰云林婉儿人选公布,观众好在还是你庆余年是2019年热播的一部由张若昀领衔主演的古装大男主剧,虽然该剧已经收官两年半,但是却一直在观众最喜欢的古装剧排行前十之列,其受欢迎程度可想而知。庆余年2启动,言冰云林婉儿人选59岁李连杰定居欧洲!两女儿长相甜美身材姣好,父女合照幸福温馨李连杰一家在国外定居在娱乐圈内,很多明星成名之后,都喜欢选择出国定居,一方面,是因为国外的月亮真的特别圆。另一方面,选择一个陌生的生活环境,周围的人都不认识自己,能够给他们提供更舒DNF9。22全新流派出现!特效流装备分析,打造低的小号角色首选特效流在9。22军团版本,算是彻底的崛起,成为全新的一种流派,主要归功于史诗平衡改版。而策划把这次特效流加强,看成解决奶荒现象的一个手段,能同时兼备单刷效率高和组队BUFF加强的功毛主席读蒋介石中国之命运两个中国之命运毛泽东所谓自由主义与共产主义之争,则不外英美思想与苏俄思想的抄袭和附会。这样抄袭附会而成的学说和证论,不仅不切于中国的国计民生,违反了中国固有的文化精神,而且根本忘记长得美却一脸凶相,这7位被长相限制的女星,几乎演不了好人近期披荆斩棘的哥哥让苏有朋爆火,很多人都想起了他曾经饰演的杜飞。一并被提起的还有情深深雨濛濛剧里的其他角色,当然其中也少不了几乎堪称唯一反派的雪姨。有人发现这些年苏有朋很少演戏,那要亚洲观众爆肝?英雄联盟S12世界赛比赛时间爆料,凌晨三点开赛当前距离S12英雄联盟全球总决赛的揭幕已不足1个月,全球各大赛区基本确定了出战名单。仅剩土耳其赛区TCL和LCS赛区,各还有一个名额没有分配。此时,其实已经有不少队伍摩拳擦掌准备大小马丁后悔提交易新角色留队!火箭将迎新饼皇!甜瓜引多队哄抢小马丁后悔提交易新角色留火箭队!小马丁新赛季很可能继续留队,不过他的场上位置会有变动,上赛季小马丁主要是打泰特的替补(大前锋),偶尔也会打替补小前锋,而新赛季随着史密斯和伊森的加入女人排卵时,身体有什么感觉?这7个变化,避孕或备孕的都得清楚大家都知道,健康的卵子是女性怀孕的基础,一个卵子排出后约可存活48小时,在这48小时内等待着与精子相遇结合。若卵子排出后由于多种原因不能与精子相遇形成受精卵,便在4872小时后自然难怪电视剧里只有上半身,镜头下移后,是观众无法直视的尴尬全景俗话说眼见为实,耳听为虚。但孔子也说过所信者目也,而目犹不可信。意思就是你所看到的也并不一定是真实的,这句流传下来的古话竟然在影视剧中应验了。开车戏在都市剧中十分常见,你以为的车戏
大屏阅读听书手写都满足墨案W8智能电纸书阅读器评测无阅读不文艺忙碌的生活让内心变得空虚,这时候拿起一本书,不管是社科还是小说传记或者散文,都能让我们的内心变得松弛,用电子书阅读器来阅读书籍已经我N年的习惯了,国产品牌的电子书阅读器98英寸电视入户,门槛不高,表现惊喜作为客厅中最重要的视觉中心和娱乐中枢,电视机的选购一直是新家装修时的重要议题。伴随着显示技术的演进,如今在选择电视时还要考虑LCDOLEDMiniLED等要素。但是对于客厅电视选购芯片卖不动,价格下跌九成,美芯巨头中国市场不买了提到芯片,很多人都会想到英特尔AMD以及英伟达等,因为这些都是PC芯片巨头,几乎占领了整个PC芯片市场。进入移动互联网时代后,很多人都会想到高通华为海思苹果A系列芯片等,因为这些芯2022年11月份电脑配置推荐,包含家用办公游戏高中低档电脑配置头条创作挑战赛随着一年一度的网购狂欢日的到来,很多DIY玩家都想能购买一台心仪的电脑主机。英特尔AMD和英伟达三家厂商也都在10月份把自己的新品集中上市,估计这几家厂商也想通过市场购买显示器需要注意什么?品牌显示器推荐如何选购显示器?很多人都说买最贵的肯定是最好的,那不能这么绝对,毕竟不是所有尺寸都适合所有使用者,而且需要很贵的显示器都是有专业用途的,有些朋友看太大尺寸的画面容易头晕。只看价格是手机最鸡肋的功能是哪个?雷军通话技术无突破粘性和卖点哪里找玩手机的美女前言相机(不对)游戏机(哦又不对)是手机上最鸡肋的功能,应该是打电话功能了吧,对个人来说,最鸡肋的功能,其实就是那些厂商大肆宣传。但你买了后,几乎永远都用不到的。那么多世界上有这三个神秘之处!科学家都无法解释,至今仍然是个谜世界之大无奇不有,如今世界上依然还有很多的未解之谜在等待着我们揭晓的那一天,不过世事无绝对,同样任何事物都不可以过于完美,也许留有一些未解之谜正是体现一个事物的本质。相信提到未解之电子竞技,天赋和努力到底哪个重要?其实说实话,你会发现只要是竞技类的东西,天赋这两个字好像永远都是难以逾越的鸿沟。先不说电子竞技,单论健身,或者说其它的体育竞技,最直白的一个例子就是找两个人,让他们用完全一模一样的造物者安排了宇宙的一切?为何爱因斯坦与杨振宁,会有此猜测?物理学家就像是帮人们揭开宇宙谜题的使者,他们对于宇宙的理解往往颇具深度。可是,若是有一天连他们也变得不够科学,开始怀疑宇宙的话,该怎么办呢?著名物理学家爱因斯坦与杨振宁就曾有过这样科学家们首次捕捉到暗物质的图像安大略省滑铁卢市滑铁卢大学的研究人员表示,他们已经捕捉到了第一张合成图像尽管天文学家已经谈论了几十年但迄今为止还没有被发现,实际上也未被发现。他们说这是暗物质的图像,是巨大宇宙网中探源中华文明二里头遗址打开神秘夏朝的文化密码中华文明探源工程是一项以考古调查发掘获取相关资料为主要手段,以现代科学技术为支撑,采取多学科交叉研究的方式,揭示中华民族五千年文明起源与早期发展的重大科研项目。本期节目,通过访谈中