您当前的位置: 首页 >  qt

txwtech

暂无认证

  • 3浏览

    0关注

    813博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

QT creator实现串口通信操作方法

txwtech 发布时间:2022-07-29 10:43:27 ,浏览量:3

QT creator实现串口通信操作方法

 虚拟串口软件模拟了两个串口,并且互相连通的,就是从com7发送的数据,com8可用接收,反过来也一样。 软件使用com7,串口调试工具使用com8,就可以测试软件的运行情况

安装虚拟串口软件:

虚拟串口软件vspd - txwtech - 博客园虚拟串口软件vspd http://www.winwin7.com/soft/25710.htmlhttps://www.cnblogs.com/txwtech/p/16530492.html

 pro文件添加:

QT+=serialport

构造函数里面初始化端口:

MainWindow_Serial_Port::MainWindow_Serial_Port(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow_Serial_Port)
{
    ui->setupUi(this);
    ui->comboBox_Port->addItem("COM7");
    ui->comboBox_Port->addItem("COM8");
    q_serial_port=new QSerialPort();
}

打开串口

 q_serial_port->setPortName(ui->comboBox_Port->currentText());
    //打开串口
    if(!q_serial_port->isOpen())
    {


        if(!q_serial_port->open(QIODevice::ReadWrite))
        {
            QMessageBox::information(this,"error","串口打开失败");
            return;
        }
        else
        {
            AddLogInfo("打开串口成功");
        }
    }
    else
    {
        AddLogInfo("串口已经打开");
    }

串口的配置

 q_serial_port->setBaudRate(int_BaudRate);
    // q_serial_port->setBaudRate(QSerialPort::Baud9600);
    //设置数据位数(8位)
    q_serial_port->setDataBits(QSerialPort::Data8);
    //设置奇偶校验(没有)
    q_serial_port->setParity(QSerialPort::NoParity);
    //设置停止位 (1)
    q_serial_port->setStopBits(QSerialPort::OneStop);
    //设置流控制(没有)
    q_serial_port->setFlowControl(QSerialPort::NoFlowControl);
//绑定读数据slot
QObject::connect(q_serial_port, SIGNAL(readyRead()), this, SLOT(ready_read_data()));

发送数据:

void MainWindow_Serial_Port::on_pushButton_send_data_clicked()
{
    if(q_serial_port->isOpen())
    {
        ready_write_data(ui->lineEdit_send_data->text());
        AddLogInfo("发送:"+ui->lineEdit_send_data->text());
    }
    else
    {
       // ui->textEdit_recv_data->append("串口没有打开");
        AddLogInfo("串口没有打开");
    }

}

接收数据:

//读取串口信息
void MainWindow_Serial_Port::ready_read_data()
{
    quint8 i=0;
    quint8 arrDLT645Frame[12] = {0x68, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x68, 0x13, 0x00, 0xDF, 0x16};
    QByteArray baDLT645Frame;
    for (; iDispBTextEdit->setText(strDLT645Framer);
    QByteArray data;
    data = q_serial_port->readAll();
  //  std::string string_data = data.toStdString();
     //std::string string_data = data.tolocal8();
   // QString qarrayToStr = QString::fromStdString(string_data); //无法显示中文
     QString qarrayToStr = QString::fromLocal8Bit(data);//可以显示中文

    // QMessageBox::information(this,"接收信息", qarrayToStr);
    //ui->textEdit_recv_data->append(qarrayToStr);
    AddLogInfo("接收:"+qarrayToStr);
}
QByteArray data; 
QString qarrayToStr = QString::fromLocal8Bit(data);//可以显示中文,字节转字符串
QString write_content="";
QByteArray send_data=write_content.toLocal8Bit(); //字符串转换中文显示,字符串转字节

工程源码更新:

Serial_Port_Demo_QT实现串口通信.rar-QT文档类资源-CSDN下载https://txwtech.blog.csdn.net/article/details/1260更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/txwtech/86265509

关注
打赏
1665060526
查看更多评论
立即登录/注册

微信扫码登录

0.0413s