Qt编写测试类项目时涉及到测试流程的小结

用Qt编写一些涉及到步骤类的程序,例如,有这样一个需求,用程序去控制程控一台电源,反复给一块带测试的板卡上下电,检查被测板卡能否正常启动(正常启动的标志,是通过网口能否ping通)。

像这样的非常典型的步骤,先初始化串口,从串口输出控制电源上电,延时50s后,检查ping命令的返回值,如果是通的,延时5s从串口输出控制电源下电,再从串口输出控制电源上电,再检查ping通,如此循环,在Qt里,编写这类1、2、3步骤类型的项目:

首先考虑到使用多线程,但是多线程有一件麻烦事,就是“跨线程调用”,但是又肯定在线程里去处理网口、文件等的读写,没有什么好的解决办法;

第二个思路就是使用定时器,例如开启一个60s定时器,60s是认为整个步骤全部走完的时间,这是可以完成功能的,但是整个步骤完成时间60s,有些奢侈浪费,测试步骤里没那么紧凑;

第三个思路,是直接在界面按钮的【开始测试】里写步骤流程,你会说那不会把GUI给耗死嘛,是的,自己写一个这样的延时Sleep函数,让它自己去卷吧,反正GUI界面不卡就行!

void mySleep(int msec)
{
    QTime dieTime = QTime::currentTime().addMSecs(msec);
    while( QTime::currentTime() < dieTime )
        QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}

然后按钮动作就是这样的流程(伪代码)

void Widget::on_button_clicked()
{
    //测试前的准备

    //开始测试
    while(1)
    {
        //启动串口,去控制电源上电

        //启动网口,去检查ping通?

        //不通,退出结束

        //ping通,输出串口关闭电源,继续通过串口给电源上电

        //延时
        mySleep(2)
    }
}

程序实现思路,即简单又直观,功能性能都能实现且有保障,多写这样的程序。

你可能感兴趣的:(QT,qt,开发语言)