从零开始实现自己的串口调试助手(2) - 实现串口配置和收发数据

串口助手添加参数选项

串口常用信息

效果演示

根据上面串口常用信息,填写进对应的ComboBox里面

注意根据调节ComboBox的(max/min)Size 一致来 实现整齐划一

    

                  

自动检测串口号:
 

使用说明:

不只是添加头文件

qmake(.pro文件) 里面还得添加: QT += serialport

API : 

这个函数判断系统中的可用串口:

  1. addItem 方法addItem 是QComboBox类(Qt中组合框的类)的一个方法,用于向组合框中添加一个新的选项。这个方法接受一个字符串作为参数,该字符串将成为下拉列表中的一个新项。
  2. serialInfo.portName():这里假设serialInfo是某种对象(可能是你自定义的类或来自某个库的类),并且它有一个portName方法,该方法返回一个字符串。这个字符串很可能代表了一个串行端口的名称或标识符

实现程序

    // 实现串口自动检测,并且显示到需要串口号的ComboBox 里面
    QList<QSerialPortInfo> serialList = QSerialPortInfo::availablePorts(); // 检测系统可行的串口,添加到列表中
    for(QSerialPortInfo serialInfo : serialList){ //遍历我们得到的列表
        qDebug() << serialInfo.portName();
       ui->comboBox_serialNum->addItem(serialInfo.portName());//将我们得到的串口名字,添加到ComboBox选项中
    }

ui->comboBox_serialNum->addItem(serialInfo.portName());

serialInfo对象的portName方法返回的字符串作为一个新项添加到comboBox_serialNum组合框中

实现效果 

打开串口

先创建串口对象

头文件声明:

源文件实例化

QSerialPort里面的源码

校验位

在ui界面右击 "打开串口"按钮,转到槽,给他添加槽函数

配置并且打开槽函数实现

void Widget::on_btnCloseOrOpenSerial_clicked()
{

//    1.选择端口号
     serialPort->setPortName(ui->comboBox_serialNum->currentText());
//    2.配置波特率   注意把String ->int
     serialPort->setBaudRate(ui->comboBox_Baudrate->currentText().toInt());
//    3.配置数据位
     serialPort->setDataBits(QSerialPort::DataBits(ui->comboBox_dataBit->currentText().toInt()));
//    4.配置校验位
     switch (ui->comboBox_checkBit->currentIndex()) // 根据下标来匹配
     {
      case 0:
         serialPort->setParity(QSerialPort::NoParity);
         break;
     case 1:
        serialPort->setParity(QSerialPort::EvenParity);
        break;
     case 2:
       serialPort->setParity(QSerialPort::MarkParity);
        break;
     case 3:
        serialPort->setParity(QSerialPort::OddParity);
        break;
     case 4:
        serialPort->setParity(QSerialPort::SpaceParity);
        break;
     default:
         serialPort->setParity(QSerialPort::UnknownParity);
         break;

     }



//    5.配置停止位
     serialPort->setStopBits(QSerialPort::StopBits(ui->comboBox_stopBit->currentData().toInt()));
//    6.流控
     if(ui->comboBox_fileCon->currentText() == "None")
           serialPort->setFlowControl(QSerialPort::NoFlowControl);

    // 配置完毕,打开串口
    if(serialPort->open(QIODevice::ReadWrite)){ // open -- 能成功打开,返回true
    qDebug()<<"serial open success!";
    }

 效果演示

实现自发自收

插入 我们的CH340,注意要用跳线帽连接tx,rx -->这样就完成了自发自收的前期准备

(没有跳线帽的可以用一根杜邦线)

发送数据槽函数


void Widget::on_btnSendContext_clicked()
{
    const char * sendData = ui->lineEdit_SendContext->text().toStdString().c_str();//QString->String(C++)->char*

    serialPort->write(sendData);
    qDebug()<<"Send: "<<sendData;
}

 实现接收

当串口收到数据的时候会发出一个信号,我们去捕捉这个信号,并且去实现他的槽函数,实现接收

 connect(serialPort,&QSerialPort::readyRead,this,&Widget::on_SerialData_readToRead);

接收槽函数的实现


void Widget::on_SerialData_readToRead()
{
  QString recvMessage = serialPort->readAll();
  qDebug()<<"get Message: "<<recvMessage;
  ui->textEditRev->append(recvMessage);
}

效果演示

单独发送

实现自发自收

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过MCU实现串口调试助手发送数据的回显可以通过以下步骤实现: 1. 配置串口参数:首先,需要在MCU上配置串口的波特率、数据位、停止位和校验位等参数,以确保与串口调试助手的通信正常。 2. 接收数据:MCU需要设置串口接收中断,以便在接收到串口调试助手发送的数据时进行处理。可以使用MCU提供的串口接收函数来接收数据,将接收到的数据存储在缓冲区中。 3. 处理数据:接收到数据后,MCU可以对数据进行处理,例如解析命令、执行相应的操作等。在这个步骤中,可以根据需要对接收到的数据进行解析,并根据解析结果执行相应的操作。 4. 发送回显数据:在处理完接收到的数据后,MCU可以将处理结果或回显数据发送回串口调试助手。可以使用MCU提供的串口发送函数将数据发送到串口调试助手。 下面是一个示例代码,演示了如何通过MCU实现串口调试助手发送数据的回显: ```c #include <stdio.h> #include <string.h> // 定义串口接收缓冲区大小 #define BUFFER_SIZE 100 // 定义串口接收缓冲区 char rxBuffer[BUFFER_SIZE]; // 定义串口发送函数 void sendSerialData(const char* data) { // 将数据发送到串口调试助手 printf("%s", data); } // 定义串口接收中断处理函数 void serialInterruptHandler() { // 接收到数据后的处理逻辑 // 例如,将接收到的数据存储在缓冲区中 // 并发送回显数据串口调试助手 if (strlen(rxBuffer) > 0) { sendSerialData(rxBuffer); memset(rxBuffer, 0, sizeof(rxBuffer)); } } int main() { // 初始化串口配置 // ... // 设置串口接收中断 // ... while (1) { // 主循环 // ... } return 0; } ``` 在上述示例代码中,我们定义了一个串口接收缓冲区rxBuffer,并在串口接收中断处理函数serialInterruptHandler中将接收到的数据存储在缓冲区中。然后,在主循环中,我们通过sendSerialData函数将缓冲区中的数据发送回串口调试助手

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值