串口调试助手发送接收流量统计·

Qt5串口调试助手(6)--发送接收流量统计及状态栏设计

Hugh

Hugh

808 0

1.状态栏功能

如下图所示,分别可以显示外部链接、接收和发送数据流量以及当前系统时间。

2.功能实现

使用标签实现,将标签和状态栏进行关联,在合适的地方更新标签的内容即可。

step1:mainwindow.h 中添加标签兑现,发送和接收变量、系统时间变量,相应函数声明

//添加自定义变量
    long ComSendSum,ComRevSum;//发送和接收流量统计变量

    QDateTime curDateTime;//系统时间变量

    //下列标签将显示在状态栏
    QLabel *qlbSendSum,*qlbRevSum;//发送接收流量label对象
    QLabel *currentTimeLabel; //系统时间显示标签
    QLabel *qlbLinkRYMCU;//官网链接标签对象
    QLabel *qlbLinkSource;//源码链接标签对象

    void time_update(); //时间更新槽函数,状态栏显示时间
    void setNumOnLabel(QLabel *lbl, QString strS, long num);//设置标签内容

step2: 初始化系统时间显示定时器,标签与状态栏关联、内容初始化

QTimer *DateTimer = new QTimer(this);//状态栏显示时间,日期
     connect(DateTimer,&QTimer::timeout,this,[=](){time_update();});
     DateTimer->start(1000); //每隔1000ms发送timeout的信号

        //设置底部状态栏,以及相应的标签初始化
        QStatusBar *STABar = statusBar();//获取状态栏
        qlbSendSum = new QLabel(this);//创建发送统计标签
        qlbRevSum  = new QLabel(this);//创建接收统计标签
        currentTimeLabel = new QLabel(this); // 创建时间,日期显示标签
        qlbLinkRYMCU = new QLabel(this);//官网链接标签对象
        qlbLinkSource = new QLabel(this);//源码链接标签对象

        qlbLinkRYMCU->setMinimumSize(90, 20);// 设置标签最小大小
        qlbLinkSource->setMinimumSize(90, 20);
        qlbSendSum->setMinimumSize(100, 20);
        qlbRevSum->setMinimumSize(100, 20);
        currentTimeLabel->setMinimumSize(100, 20);

         ComSendSum = 0;
         ComRevSum  = 0;

         setNumOnLabel(qlbSendSum, "Tx: ", ComSendSum);
         setNumOnLabel( qlbRevSum, "Rx: ", ComRevSum);

         STABar->addPermanentWidget(qlbSendSum);// 从右往左依次添加
         STABar->addPermanentWidget(qlbRevSum);
         STABar->addPermanentWidget(currentTimeLabel);

         STABar->addWidget(qlbLinkRYMCU);// 从左往右依次添加
         STABar->addWidget(qlbLinkSource);

         qlbLinkRYMCU->setOpenExternalLinks(true);//状态栏显示官网、源码链接
         qlbLinkRYMCU->setText("<style> a {text-decoration: none} </style> <a href=\"https://rymcu.com\">--RYMCU官网--");// 无下划线
         qlbLinkSource->setOpenExternalLinks(true);
         qlbLinkSource->setText("<style> a {text-decoration: none} </style> <a href=\"https://github.com/rymcu/RYCOM\">--助手源代码--");// 无下划线

状态栏设置函数、系统时间显示定时器超时函数

/***********************************************************
 * 状态栏标签显示计数值
 * 1.设置标签显示内容
 ***********************************************************/
void MainWindow::setNumOnLabel(QLabel *lbl, QString strS, long num)
{
    // 标签显示
    QString strN;
    strN.sprintf("%ld", num);
    QString str = strS + strN;
    lbl->setText(str);
}

/***********************************************************
 * 状态栏时间,日期更新函数
 * 1.状态栏时间显示标签定时器超时函数,将当前时间设置到状态栏标签
 ***********************************************************/
void MainWindow::time_update()
{

    QDateTime current_time = QDateTime::currentDateTime();//获取时间
    QString timestr = current_time.toString("yyyy-MM-dd hh:mm:ss"); //设置显示的格式

    currentTimeLabel->setText(timestr); //设置label的文本内容为时间
}

step3:发送、接收流量统计,分别在发送和接收处理槽函数中添加新代码如下:

void MainWindow::on_pushButtonSend_clicked()//发送处理函数
{
    ............
    ............

   //发送数据
   temp = MyCom.write(ComSendData);

   //统计发送流量,并显示在状态栏
   if(temp)
   {
       ComSendSum +=temp;//发送总数统计
       setNumOnLabel(qlbSendSum, "Tx: ", ComSendSum);// 状态栏显示计数值
   }
}

void MainWindow::MyComRevSlot()//接收处理函数
{
    ............
    ............

    //接收流量统计,并显示到状态栏
    ComRevSum += MyComRevBUff.size();
    setNumOnLabel(qlbRevSum, "Rx: ", ComRevSum);
}

3.小结

完成标签栏功能设计,可根据自己要求适当增减。

所属系列

从当前文章继续阅读它所在合集中的前后内容。

QT5串口调试助手RYCOM 第 7 / 14 篇
查看合集

手把手教你设计基于Qt5的串口调试助手,只需创建一个项目,一套代码,可实现跨越windows、linux、MacOS三大操作系统桌面应用软件。

相关文章

优先推荐同专题、同标签和同作者内容,补足热门文章。

评论 0

登录 后参与评论

评论

成为第一个评论的人