zoukankan      html  css  js  c++  java
  • QT写串口

    QT写串口:

    在QT中创建工程,在这里就不叙述了...

    软件思路:

    1.配置

    2.完成接收

    3.完成发送

    串口的功能也就是这些了....

    一.包含头文件

    需要包含的重要文件,就是QSerialPort-----------#include <QSerialPort>

    添加头文件后会提示错误............................这时可以点击帮助,F1,查看QSerialPort文档中内容,显示需要在PRO文件中添加

    qmake:
    QT += serialport

     .....这时就包含头文件成功了....

    1接下来,我们进行UI设置...就是拖出来一些控件就可以了...

    举例说:     以后可以好好规划下框架...这里能传输数据即可...

     2.写操作代码

    h中

     在.c中

    函数运行:system_init();

    完成void ststem_init(void)

     这样其实就可以接收了....

    我们为了用户更加的方便读写.

    所以和UI关联

    设置一些槽函数

    .h中的槽函数定义

     .c中完成槽函数与连接

        connect(&Serial,&QSerialPort::readyRead,this,&USART::receive_data);
      connect(触发者,发信号,在哪里触发,槽函数);

     

     

     

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    //接收数据槽函数
    void USART::receive_data()
    {
    // 接收数据
    QByteArray receive_info = Serial.readAll();//获取串口读取的数据
    qDebug()<<receive_info;
    if (ui->checkBox_receive->checkState() == Qt::Checked)//是否勾选转换16进制
    ui->textEdit_receive->insertPlainText(receive_info.toHex().toUpper().append(" "));
    else
    ui->textEdit_receive->insertPlainText(receive_info);

    }


    /******SEND***********/
    void USART::on_Button_Send_clicked(bool checked)
    {

    checked = 0;
    QString send_info = ui->textEdit_SEND->toPlainText();//获取发送框中的数据

    if (ui->checkBox_Send->checkState() == Qt::Checked)//是否勾选转换16进制
    {
    Serial.write(send_info.toUtf8().toHex());
    qDebug()<<send_info;
    }else
    Serial.write(send_info.toUtf8());
    }


    /**********close*********/
    void USART::on_Button_CLOSE_clicked()
    {
    // 关闭串口
    Serial.clear();//清除串口
    Serial.close();//关闭串口
    disconnect(&Serial,&QSerialPort::readyRead,this,&USART::receive_data);//这里需要注意将之前打开串口发送的信号断掉。
    ui->Button_OPEN->setEnabled(true);
    ui->Button_CLOSE->setEnabled(false);
    }


    /*************open******/
    void USART::on_Button_OPEN_clicked()
    {
    // 打开串口、设置波特率、停止位、校验位(打开串口按钮的槽函数中完成)
    QString Com_Name = ui->comboBox_COM->currentText();//获取Combox当前Text,就是串口名COM1等。
    Serial.setPortName(Com_Name);
    if(!Serial.open(QIODevice::ReadWrite)){
    QMessageBox::warning(this,"error","SP not open");

    }

    //设置波特率
    int Baud = ui->comboBox_Bandrate->currentText().toInt();
    switch (Baud)
    {
    case 9600:
    Serial.setBaudRate(QSerialPort::Baud9600);
    break;
    case 19200:
    Serial.setBaudRate(QSerialPort::Baud19200);
    break;
    case 115200:
    Serial.setBaudRate(QSerialPort::Baud115200);
    }
    //设置停止位(setStopBits)、校验位(setParity)与设置波特率类似、具体参数详看帮助文档,不过Switch的条件最好用Combox的currentIndex来获取。
    //打开串口后我们需要进行给接收区域发送一个信号


    connect(&Serial,&QSerialPort::readyRead,this,&USART::receive_data);
    ui->Button_OPEN->setEnabled(false);//打开串口按钮置灰
    ui->Button_CLOSE->setEnabled(true);//关闭串口按钮置亮

    }

    void USART::on_Button_Clear_clicked()
    {
    ui->textEdit_receive->clear();
    }

  • 相关阅读:
    SpringMVC 返回 json 字符串中文乱码
    两个HTML页面之间传值
    NOIP2018 保卫王国
    Arch Linux使用cisco anyconnect
    CSP模拟赛 巨神兵
    计蒜客The Fake Fake Friends
    Manjaro安装,配置,美化指南
    [国家集训队] Crash 的文明世界
    ZJOI2011 营救皮卡丘
    CF1198E Rectangle Painting 2
  • 原文地址:https://www.cnblogs.com/qq376142178/p/14224392.html
Copyright © 2011-2022 走看看