QT串口助手(三):数据接收 (2)

以上功能完成后将数据显示到接收框中(为了区分不同显示格式,做了不同的颜色显示)。完整的数据接收功能展示如下:

/* 函 数:SerialPortReadyRead_slot 描 述:readyRead()信号对应的数据接收槽函数 输 入:无 输 出:无 */ void Widget::SerialPortReadyRead_slot() { QString framedata; /*读取串口收到的数据*/ QByteArray bytedata = serial->readAll(); /*数据是否为空*/ if (!bytedata.isEmpty()) { if(ui->HexDisp_checkBox->isChecked()) { /*hex显示*/ framedata = bytedata.toHex(' ').trimmed().toUpper(); ui->Receive_TextEdit->setTextColor(QColor(Qt::green)); } else { /*ascii显示*/ framedata = QString(bytedata); ui->Receive_TextEdit->setTextColor(QColor(Qt::magenta)); } /*是否显示时间戳*/ if (ui->TimeDisp_checkBox->isChecked()) { framedata = QString("[%1]:RX -> %2").arg(QTime::currentTime().toString("HH:mm:ss:zzz")).arg(framedata); ui->Receive_TextEdit->append(framedata); } else { ui->Receive_TextEdit->insertPlainText(framedata); } /*更新接收计数*/ dataTotalRxCnt += bytedata.length(); ui->RxCnt_label->setText(QString::number(dataTotalRxCnt)); } }

演示效果如下:

QT串口助手(三):数据接收

补充:

QColor::QColor( color)

This is an overloaded function.

Constructs a new color with a color value of color.

enum Qt::GlobalColor

Qt's predefined QColor objects:

Constant Value Description
Qt::white   3   White (#ffffff)  
Qt::black   2   Black (#000000)  
Qt::red   7   Red (#ff0000)  
Qt::darkRed   13   Dark red (#800000)  
Qt::green   8   Green (#00ff00)  
Qt::darkGreen   14   Dark green (#008000)  
Qt::blue   9   Blue (#0000ff)  
Qt::darkBlue   15   Dark blue (#000080)  
Qt::cyan   10   Cyan (#00ffff)  
Qt::darkCyan   16   Dark cyan (#008080)  
Qt::magenta   11   Magenta (#ff00ff)  
Qt::darkMagenta   17   Dark magenta (#800080)  
Qt::yellow   12   Yellow (#ffff00)  
Qt::darkYellow   18   Dark yellow (#808000)  
Qt::gray   5   Gray (#a0a0a4)  
Qt::darkGray   4   Dark gray (#808080)  
Qt::lightGray   6   Light gray (#c0c0c0)  
Qt::transparent   19   a transparent black value (i.e., QColor(0, 0, 0, 0))  
Qt::color0   0   0 pixel value (for bitmaps)  
Qt::color1   1   1 pixel value (for bitmaps)  
2.6、清除接收

当清除接收按键点击后,会清除接收框显示的内容以及接收计数。使用QPushButton的点击信号槽实现如下:

/* 函 数:on_ClearRx_Bt_clicked 描 述:清除接收按键点击信号对应的槽函数 输 入:无 输 出:无 */ void Widget::on_ClearRx_Bt_clicked() { ui->Receive_TextEdit->clear(); ui->RxCnt_label->setText(QString::number(0)); dataTotalRxCnt = 0; } 三、总结

本篇文章主要是讲述如何对串口数据进行接收和显示。除了上面列出的主要功能外,还需要了解各个控件的操作方法,比如QTextEdit文本的添加、QLabel文本的设置等。还有就是QT中基本的数据类型的数据使用,比如QString、QBytArray等。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpgfds.html