以上功能完成后将数据显示到接收框中(为了区分不同显示格式,做了不同的颜色显示)。完整的数据接收功能展示如下:
/* 函 数: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)); } }演示效果如下:
补充:
QColor::QColor( color)This is an overloaded function.
Constructs a new color with a color value of color.
enum Qt::GlobalColorQt's predefined QColor objects:
Constant Value DescriptionQt::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等。