FaceAccess/Linguist/setUi/settingUiDevTest.cpp

696 lines
27 KiB
C++
Raw Normal View History

2024-07-11 11:27:12 +08:00
#include "settingUiDevTest.h"
#include <QVBoxLayout>
#include <QGridLayout>
#include <QHBoxLayout>
#include <functional>
#include <QDebug>
#include "rw_zlog.h"
#include "common_utils.h"
#include "dev_version.h"
int settingUiDevTest::m_pageIndex = 0;
settingUiDevTest::settingUiDevTest(int pageIndex, QWidget *parent) : MyWidgetWithMainStyleColor(parent)
{
m_pageIndex = pageIndex;
QVBoxLayout* vlayAuto = new QVBoxLayout();
m_gbAuto = new QGroupBox("自动检测", this);
m_gbAuto->setLayout(vlayAuto);
m_btnTest = new QPushButton("立即检测", this);
m_btnTest->setFixedSize(UiConfig::GetInstance()->getUiWidth() / 8, UiConfig::GetInstance()->getUiWidth() / 12);
m_btnTest->setFlat(true);
connect(m_btnTest, &QPushButton::clicked, this, &settingUiDevTest::slotBtnClicked);
//m_btnTest->setStyleSheet("background-color:rgb(24, 144, 255);border-radius:50px;focus{padding:-1;}");
m_btnTest->setStyleSheet("QPushButton {"
"border: 0px;"
"border-radius:10px;"
"background-color:rgb(24, 144, 255);"
"focus{outline: none;}"
"}"
"QPushButton:hover { "
"background-color:rgb(24, 144, 255);"
"}"
"QPushButton:pressed {"
"background-color:rgb(222, 222, 222);"
"}");
vlayAuto->addWidget(m_btnTest, 1, Qt::AlignCenter);
QGridLayout* glayAutoTestItems = new QGridLayout();
glayAutoTestItems->setMargin(0);
//glayAutoTestItems->setColumnStretch(0, 98);
//glayAutoTestItems->setColumnStretch(1, 1);
//glayAutoTestItems->setColumnStretch(1, 98);
int row = 0;
int col = 0;
QLabel* testOpn = new QLabel("检测项", this);
glayAutoTestItems->addWidget(testOpn, row, col++, Qt::AlignCenter);
QLabel* testStatus = new QLabel("结果", this);
glayAutoTestItems->addWidget(testStatus, row, col++, Qt::AlignRight);
QLabel* operation = new QLabel("操作", this);
glayAutoTestItems->addWidget(operation, row, col++, Qt::AlignRight);
row++;
col = 0;
const QString style = "QPushButton {"
"border: 0px;"
"border-radius:4px;"
"background-color:rgb(6, 119, 194);"
"focus{outline: none;}"
"}"
"QPushButton:hover { "
"background-color:rgb(6, 119, 194);"
"}"
"QPushButton:pressed {"
"background-color:rgb(222, 222, 222);"
"}";
for(const auto& testItem : m_autoTest){
QLabel* itemName = new QLabel(testItem, this);
itemName->adjustSize();
m_labelsAutoTestItem.push_back(itemName);
glayAutoTestItems->addWidget(itemName, row, col++, Qt::AlignCenter);
QLabel* testRes = new QLabel(this);
m_labelsAutoTestRes.push_back(testRes);
glayAutoTestItems->addWidget(testRes, row, col++);
QPushButton* retest = new QPushButton("复测", this);
connect(retest, &QPushButton::clicked, this, &settingUiDevTest::slotBtnClicked);
retest->setStyleSheet(style);
m_btnsAutoTestRetest.push_back(retest);
glayAutoTestItems->addWidget(retest, row, col++, Qt::AlignCenter);
row++;
col = 0;
}
vlayAuto->addLayout(glayAutoTestItems);
vlayAuto->addStretch(5);
QVBoxLayout* vlayMal = new QVBoxLayout();
m_gbMal = new QGroupBox("人工检测", this);
m_gbMal->setLayout(vlayMal);
row = 0;
col = 0;
QGridLayout* glayMalTestItems = new QGridLayout();
glayMalTestItems->setSpacing(5);
for(const auto& testItem : m_malTest){
QLabel* itemName = new QLabel(testItem, this);
m_labelsMalTestItem.push_back(itemName);
glayMalTestItems->addWidget(itemName, row, col++, 1, 2);
QLabel* testRes = new QLabel(this);
m_labelsMalTestRes.push_back(testRes);
glayMalTestItems->addWidget(testRes, row, col++, Qt::AlignRight);
QPushButton* retest = new QPushButton("检测", this);
connect(retest, &QPushButton::clicked, this, &settingUiDevTest::slotBtnClicked);
retest->setStyleSheet(style);
m_btnsMalTest.push_back(retest);
glayMalTestItems->addWidget(retest, row, col++, Qt::AlignRight);
row++;
col = 0;
}
vlayMal->addLayout(glayMalTestItems);
QLabel* labelNtp = new QLabel("NTP", this);
glayMalTestItems->addWidget(labelNtp, row, col++);
col++;//放到第三列
m_btnNtp = new QPushButton("校时", this);
m_btnNtp->setStyleSheet(style);
connect(m_btnNtp, &QPushButton::clicked, this, &settingUiDevTest::slotBtnClicked);
glayMalTestItems->addWidget(m_btnNtp, row, col++);
row++;
col = 0;
QVBoxLayout* vlayAgeing = new QVBoxLayout();
QGroupBox* m_gbAgeing = new QGroupBox("老化", this);
m_gbAgeing->setLayout(vlayAgeing);
QHBoxLayout* hlayAgeing = new QHBoxLayout();
QLabel* labelAgeing = new QLabel("老化(小时)", this);
hlayAgeing->addWidget(labelAgeing);
m_editAgeing = new LineEditWithKeyboard(this);
m_editAgeing->setStyleSheet("QLineEdit {border : 1px solid blue;}");
hlayAgeing->addWidget(m_editAgeing);
m_btnAgeing = new QPushButton("开始", this);
connect(m_btnAgeing, &QPushButton::clicked, this, &settingUiDevTest::slotBtnClicked);
m_btnAgeing->setStyleSheet(style);
hlayAgeing->addWidget(m_btnAgeing);
vlayAgeing->addLayout(hlayAgeing);
QLabel* labelAgeingTip = new QLabel(this);
labelAgeingTip->setWordWrap(true);
labelAgeingTip->setText(QString("<font color = #000000 >%1</font>").arg("提示::") + "<br>" +
QString("<font color = #000000 >%1</font>").arg("1.开始老化后,满足老化时间,手动关掉老""化开关,恢复出厂设置,才可退出老化模式;") + "<br>" +
QString("<font color = #000000 >%1</font>").arg("2.老化时间时断电,之后再次上电,重新开始计时进行老化;") + "<br>" +
QString("<font color = #FF0000 >%1</font>").arg("3.老化测试结束后,功能测试完成,需恢复出厂设置") );
vlayAgeing->addWidget(labelAgeingTip, 1, Qt::AlignLeft);
QVBoxLayout* vlayDev = new QVBoxLayout();
m_gbDev = new QGroupBox("MAC烧录", this);
m_gbDev->setLayout(vlayDev);
QLabel* labelSoftVer = new QLabel("软件版本", this);
vlayDev->addWidget(labelSoftVer, 1, Qt::AlignLeft);
m_editSoftVer = new QLineEdit(this);
m_editSoftVer->setMinimumWidth(UiConfig::GetInstance()->getUiWidth() / 3);
m_editSoftVer->setReadOnly(true);
m_editSoftVer->setStyleSheet("QLineEdit {border : 1px solid blue;}");
vlayDev->addWidget(m_editSoftVer, 1, Qt::AlignLeft);
QLabel* labelDevCfg = new QLabel("设备配置信息", this);
vlayDev->addWidget(labelDevCfg, 1, Qt::AlignLeft);
m_editDevCfg = new QLineEdit(this);
m_editDevCfg->setMinimumWidth(UiConfig::GetInstance()->getUiWidth() / 3);
m_editDevCfg->setReadOnly(true);
m_editDevCfg->setStyleSheet("QLineEdit {border : 1px solid blue;}");
vlayDev->addWidget(m_editDevCfg, 1, Qt::AlignLeft);
QLabel* labelMes = new QLabel("MES服务器地址及工单信息", this);
vlayDev->addWidget(labelMes, 1, Qt::AlignLeft);
m_editMesAddrAndProdNo = new QLineEdit(this);
m_editMesAddrAndProdNo->setMinimumWidth(UiConfig::GetInstance()->getUiWidth() / 3);
m_editMesAddrAndProdNo->setReadOnly(true);
m_editMesAddrAndProdNo->setStyleSheet("QLineEdit {border : 1px solid blue;}");
vlayDev->addWidget(m_editMesAddrAndProdNo, 1, Qt::AlignLeft);
QLabel* labelDevCode = new QLabel("设备条码", this);
vlayDev->addWidget(labelDevCode, 1, Qt::AlignLeft);
m_editPcbSeq = new QLineEdit(this);
m_editPcbSeq->setMinimumWidth(UiConfig::GetInstance()->getUiWidth() / 3);
m_editPcbSeq->setReadOnly(true);
m_editPcbSeq->setStyleSheet("QLineEdit {border : 1px solid blue;}");
vlayDev->addWidget(m_editPcbSeq, 1, Qt::AlignLeft);
QLabel* labelMac = new QLabel("MAC", this);
vlayDev->addWidget(labelMac, 1, Qt::AlignLeft);
m_editMac = new QLineEdit(this);
m_editMac->setMinimumWidth(UiConfig::GetInstance()->getUiWidth() / 3);
m_editMac->setReadOnly(true);
m_editMac->setStyleSheet("QLineEdit {border : 1px solid blue;}");
vlayDev->addWidget(m_editMac, 1, Qt::AlignLeft);
vlayDev->setSpacing(5);
QVBoxLayout* vlayOperation = new QVBoxLayout();
QGroupBox* m_gbOperation = new QGroupBox("操作", this);
m_gbOperation->setLayout(vlayOperation);
m_btnReboot = new QPushButton("手动重启", this);
connect(m_btnReboot, &QPushButton::clicked, this, &settingUiDevTest::slotBtnClicked);
m_btnReboot->setStyleSheet(style);
vlayOperation->addWidget(m_btnReboot, 1, Qt::AlignCenter);
m_btnRecover = new QPushButton("恢复出厂设置", this);
connect(m_btnRecover, &QPushButton::clicked, this, &settingUiDevTest::slotBtnClicked);
m_btnRecover->setStyleSheet(style);
vlayOperation->addWidget(m_btnRecover, 1, Qt::AlignCenter);
QVBoxLayout* vlayLeft = new QVBoxLayout();
vlayLeft->addWidget(m_gbAuto, 1, Qt::AlignTop);
vlayLeft->addWidget(m_gbDev, 1, Qt::AlignTop);
vlayLeft->addStretch(5);
QVBoxLayout* vlayRight = new QVBoxLayout();
vlayRight->addWidget(m_gbMal, 1, Qt::AlignTop);
vlayRight->addWidget(m_gbAgeing, 1, Qt::AlignTop);
vlayRight->addWidget(m_gbOperation, 1, Qt::AlignTop);
vlayRight->addStretch(5);
QHBoxLayout* hlay = new QHBoxLayout();
hlay->addLayout(vlayLeft);
hlay->addLayout(vlayRight);
setLayout(hlay);
setStyleSheet(QString("font-size:%1px;background-color:rgb(200, 200, 200);"
"border-radius:8px;padding:2px 4px;focus{outline: none;}")
.arg(QString::number(FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()])));
m_timer = new QTimer(this);
connect(m_timer, &QTimer::timeout, [this]{delete m_colorScreen;
if(m_colorIndex >= color.size()){
m_colorIndex = 0;
m_timer->stop();
showSelectionWin(enMalTestLcd);
return;
}
m_colorScreen = new PureColorPage(color[m_colorIndex++]);
m_colorScreen->show();});
}
void settingUiDevTest::reset()
{
m_backstageIf->stopIdentyState(true, false);
//const int btnSize = m_btnsMalTest.at(0)->width();
const int btnSize = UiConfig::GetInstance()->getUiWidth() / 15;
m_btnNtp->setFixedSize(btnSize, btnSize);
m_btnAgeing->setFixedSize(btnSize, btnSize);
for(int i=0; i<m_btnsAutoTestRetest.size(); i++){
m_btnsAutoTestRetest.at(i)->setFixedSize(btnSize, btnSize);
}
for(int i=0; i<m_btnsMalTest.size(); i++){
m_btnsMalTest.at(i)->setFixedSize(btnSize, btnSize);
}
std::string mac;
if(m_backstageIf->getKeyDataMac(mac) > 0){
m_editMac->setText(mac.c_str());
}
std::string hours;
if(m_backstageIf->isAgeing(hours)){
m_editAgeing->setText(hours.c_str());
m_btnAgeing->setText("结束");
//m_gbAuto->setEnabled(false);
//m_gbDev->setEnabled(false);
m_btnTest->setEnabled(false);
for(int i=0; i<m_btnsAutoTestRetest.size(); i++){
m_btnsAutoTestRetest.at(i)->setEnabled(false);
}
for(int i=0; i<m_btnsMalTest.size(); i++){
m_btnsMalTest.at(i)->setEnabled(false);
}
m_btnNtp->setEnabled(false);
m_btnRecover->setEnabled(false);
m_btnReboot->setEnabled(false);
}
else{
m_editAgeing->setText("8");
m_btnAgeing->setText("开始");
//m_gbAuto->setEnabled(true);
//m_gbDev->setEnabled(true);
m_btnTest->setEnabled(true);
for(int i=0; i<m_btnsAutoTestRetest.size(); i++){
m_btnsAutoTestRetest.at(i)->setEnabled(true);
}
for(int i=0; i<m_labelsMalTestItem.size(); i++){
m_btnsMalTest.at(i)->setEnabled(true);
}
m_btnNtp->setEnabled(true);
m_btnRecover->setEnabled(true);
m_btnReboot->setEnabled(true);
}
for(auto& item : m_labelsAutoTestRes){
item->clear();
}
const int iBufSize = 64;
char buf[iBufSize] = {'\0'};
if(0 == m_backstageIf->getAppVersion(buf, iBufSize)){
m_editSoftVer->setText(buf);
buf[strlen("FG_B0xx")] = '\0';
if(!QString(buf).contains("B045")){
m_labelsAutoTestItem.at(enAutoTestSerial1)->hide();
m_labelsAutoTestRes.at(enAutoTestSerial1)->hide();
m_btnsAutoTestRetest.at(enAutoTestSerial1)->hide();
}
}
//if(0 == m_backstageIf->getHardwareConfig(buf, iBufSize)){
std::string hardware;
if(m_backstageIf->getKeyDataHardware(hardware) > 0){
refreshUiByHardwareConfig(hardware.c_str());
}
emit signalShowSettingUi();
}
void settingUiDevTest::slotDevTestMesAddrAndProdNoText(const QString& text)
{
m_editMesAddrAndProdNo->setText(text);
if(!m_editPcbSeq->text().isEmpty()){
QTimer::singleShot(100, this, [this]{
std::string mac;
if(0 == m_backstageIf->getMacFromMes(m_editMesAddrAndProdNo->text().toStdString().c_str(),
m_editPcbSeq->text().toStdString().c_str(), mac)){
m_editMac->setText(mac.c_str());
}
else{
InfoDialog("获取mac地址失败请重试").exec();
}});
}
}
void settingUiDevTest::slotDevTestPcbSeqText(const QString& text)
{
m_editPcbSeq->setText(text);
if(!m_editMesAddrAndProdNo->text().isEmpty()){
QTimer::singleShot(100, this, [this]{
std::string mac;
if(0 == m_backstageIf->getMacFromMes(m_editMesAddrAndProdNo->text().toStdString().c_str(),
m_editPcbSeq->text().toStdString().c_str(), mac)){
m_editMac->setText(mac.c_str());
}
else{
InfoDialog("获取mac地址失败请重试").exec();
}});
}
}
void settingUiDevTest::slotDevTestConfigInfo(const QString& text)
{
if(text.isEmpty()){
return;
}
std::string hardware;
if(m_backstageIf->getKeyDataHardware(hardware) < 0){
return;
}
do{
if(hardware.length() && hardware != text.toStdString()){
QString que{"设备已有配置信息:"};
que += hardware.c_str();
que += "\n";
que += "是否更新为:";
que += text;
QuestionDialog dlg(que, nullptr, "是的");
if(QDialog::Rejected == dlg.exec()){
break;
}
QCoreApplication::processEvents();
}
if(hardware == text.toStdString()){
break;
}
m_backstageIf->setKeyDataHardwareAndUpdataFunction(text.toStdString());
refreshUiByHardwareConfig(text);
}while(0);
}
void settingUiDevTest::slotClosed()
{
//m_draw->hide();
showSelectionWin(enMalTestTp);
}
void settingUiDevTest::slotBtnClicked()
{
int index = 0;
const QVector<std::function<bool()>>funcsAuto{std::bind(&BackstageInterfaceForUi::isWiegandIoTestOk, m_backstageIf),
std::bind(&BackstageInterfaceForUi::isRelayAndGpioTestOk, m_backstageIf),
std::bind(&BackstageInterfaceForUi::isRs485TestOk, m_backstageIf),
std::bind(&BackstageInterfaceForUi::isWifiTestOk, m_backstageIf),
std::bind(&BackstageInterfaceForUi::isRtcTestOk, m_backstageIf),
//std::bind(&BackstageInterfaceForUi::isWireEthTestOk, m_backstageIf),
//std::bind(&BackstageInterfaceForUi::is4gTestOk, m_backstageIf),
std::bind(&BackstageInterfaceForUi::isReaderUnderScreenTestOk, m_backstageIf),
std::bind(&BackstageInterfaceForUi::isSerial1TestOk, m_backstageIf)
//std::bind(&BackstageInterfaceForUi::isIdModuleInfoUploaded, m_backstageIf)
};
const QVector<std::function<void()>>funcsMal{std::bind([this]{m_colorScreen = new PureColorPage(color[m_colorIndex++]);
m_colorScreen->show();m_timer->start(2000);}),
std::bind(&settingUiDevTest::doMicrophoneTest, this),
std::bind([this]{m_backstageIf->speakerTest();
showSelectionWin(enMalTestSpeaker);}),
std::bind([this]{if(!m_draw){
m_draw = new DrawPage(UiConfig::GetInstance()->getUiWidth(),
UiConfig::GetInstance()->getUiHeight());
connect(m_draw, SIGNAL(signalClosed()), this, SLOT(slotClosed()));
m_draw->show();}else{m_draw->show();}}),
std::bind([this]{static_cast<QWidget*>(this->parent()->parent())->hide();
QTimer::singleShot(100,this,[this]{
m_backstageIf->irCamTest();
static_cast<QWidget*>(this->parent()->parent())->show();
showSelectionWin(enMalTestIrCam);});}),
std::bind([this]{static_cast<QWidget*>(this->parent()->parent())->hide();
QTimer::singleShot(100,this,[this]{
m_backstageIf->irLedTest();
static_cast<QWidget*>(this->parent()->parent())->show();
showSelectionWin(enMalTestIrLed);});})
};
const int size = m_btnsAutoTestRetest.at(0)->height() * 0.6;
QPixmap pmOk(":/res/image/ok_small.png");
pmOk = pmOk.scaled(size, size);
QPixmap pmFailed(":/res/image/fail2_large.png");
pmFailed = pmFailed.scaled(size, size);
const QObject* send = sender();
if (send == m_btnTest) {
int testItemNum = 0;
for(auto& item : m_labelsAutoTestRes){
if(!item->isHidden()){
item->clear();
testItemNum++;
}
}
ProgressWidget pw("自动检测中...");
pw.setFixedSize(UiConfig::GetInstance()->getUiWidth() / 2, UiConfig::GetInstance()->getUiHeight() / 6);
pw.move((UiConfig::GetInstance()->getUiWidth() - pw.width()) / 2, (UiConfig::GetInstance()->getUiHeight() - pw.height()) / 2);
pw.show();
int curTestItem = 1;
for(auto& item : m_labelsAutoTestRes){
if(!item->isHidden()){
pw.setMsg(curTestItem++, testItemNum);
QCoreApplication::processEvents();
m_labelsAutoTestRes[index]->setPixmap(funcsAuto.at(index)() ? pmOk : pmFailed);
QCoreApplication::processEvents();
}
index++;
}
}
else if (send == m_btnNtp) {
int ret = 0;
{
m_backstageIf->setNtpServerSw(true);
#if 0 //测试代码
QString testText("192.168.100.250/B045220509-40");
std::string ip = getMesSeverIpFromText(testText);
LOGI("expect 1 %d", utils::isValidIp(ip));
QString testText1("");
ip = getMesSeverIpFromText(testText1);
LOGI("expect 0 %d", utils::isValidIp(ip));
QString testText2("abc");
ip = getMesSeverIpFromText(testText2);
LOGI("expect 0 %d", utils::isValidIp(ip));
#endif
std::string mesServerIp = getMesSeverIpFromText(m_editMesAddrAndProdNo->text());
#if 0 //工装ntp校时不依赖mes server ip
if(!utils::isValidIp(mesServerIp))
{
InfoDialog("MES服务器地址无效请重新扫码").exec();
return;
}
#endif
#if 0
ProgressWidget pw("NTP校时中...");
pw.setFixedSize(UiConfig::GetInstance()->getUiWidth() / 2, UiConfig::GetInstance()->getUiHeight() / 6);
pw.move((UiConfig::GetInstance()->getUiWidth() - pw.width()) / 2, (UiConfig::GetInstance()->getUiHeight() - pw.height()) / 2);
pw.show();
#else
MsgDialog msgdlg("NTP校时中...");
msgdlg.show();
#endif
QCoreApplication::processEvents();
ret = m_backstageIf->ntpTimeCorrectForDevTest(mesServerIp);
}
InfoDialog(0 == ret ? "NTP校时成功" : "NTP校时失败请检查网络").exec();
}
else if (send == m_btnAgeing) {
if(m_btnAgeing->text() == "开始"){
unsigned hours = m_editAgeing->text().toUInt();
if(hours > 0){
m_backstageIf->ageingTest(hours);
m_btnAgeing->setText("结束");
m_btnTest->setEnabled(false);
for(int i=0; i<m_btnsAutoTestRetest .size(); i++){
m_btnsAutoTestRetest.at(i)->setEnabled(false);
}
for(int i=0; i<m_btnsMalTest.size(); i++){
m_btnsMalTest.at(i)->setEnabled(false);
}
m_btnNtp->setEnabled(false);
m_btnRecover->setEnabled(false);
m_btnReboot->setEnabled(false);
}
}
else if(m_btnAgeing->text() == "结束"){
m_backstageIf->ageingTest(0);
m_btnAgeing->setText("开始");
m_btnTest->setEnabled(true);
for(int i=0; i<m_btnsAutoTestRetest .size(); i++){
m_btnsAutoTestRetest.at(i)->setEnabled(true);
}
for(int i=0; i<m_labelsMalTestItem.size(); i++){
m_btnsMalTest.at(i)->setEnabled(true);
}
m_btnNtp->setEnabled(true);
m_btnRecover->setEnabled(true);
m_btnReboot->setEnabled(true);
//在工装界面结束老化,会恢复人脸识别,需要重新停止识别,并且延迟一段时间停止保证在恢复之后执行
QTimer::singleShot(200, this, [this]{m_backstageIf->stopIdentyState(true, false);});
}
}
else if (send == m_btnRecover || send == m_btnReboot) {
QString que;
QString btnText;
if(send == m_btnReboot){
que = tr("您确定重新启动FaceTick吗");
btnText = tr("重新启动");
}
else if(send == m_btnRecover){
que = tr("您确定恢复出厂设置吗?");
btnText = tr("恢复");
}
QuestionDialog dlg(que, nullptr, btnText);
if(QDialog::Accepted == dlg.exec()){
if(send == m_btnRecover){
qDebug() << "recoveryFactorySetting";
m_backstageIf->recoveryFactorySetting();
}
PureColorPage* black = new PureColorPage(0);
black->show();
QTimer::singleShot(1000, this, [this]{qDebug() << "devReboot";m_backstageIf->devReboot();});
}
}
else {
index = 0;
for(auto& btn : m_btnsAutoTestRetest){
if(send == btn){
m_labelsAutoTestRes[index]->clear();
MsgDialog msgdlg("检测中...");
msgdlg.show();
QCoreApplication::processEvents();
m_labelsAutoTestRes[index]->setPixmap(funcsAuto.at(index)() ? pmOk : pmFailed);
return;
}
index++;
}
index = 0;
for(auto& btn : m_btnsMalTest){
if(send == btn){
btn->setEnabled(false);
//InfoDialog(QString("通过要求:\n") + m_malTestTips.at(index)).exec();
QCoreApplication::processEvents();
funcsMal.at(index)();
btn->setEnabled(true);
return;
}
index++;
}
}
}
void settingUiDevTest::showSelectionWin(int testIndex) {
const int size = m_btnsMalTest.at(0)->height() * 0.6;
QPixmap pmOk(":/res/image/ok_small.png");
pmOk = pmOk.scaled(size, size);
QPixmap pmFailed(":/res/image/fail2_large.png");
pmFailed = pmFailed.scaled(size, size);
SelectionDialog dlg(m_malTestTips.at(testIndex), "不通过", "通过");
auto manufacturer = DevVersion::getInstance()->getManu();
if (testIndex == enMalTestAuidoSwitch) {
m_labelsMalTestRes.at(enMalTestSpeaker)->setPixmap(dlg.selecion() == 1 ? pmOk : pmFailed);
} else if (testIndex == enMalTestSpeaker &&
(manufacturer == Manu_E::ManuRWRk1109V05)) { // V05以上 板载喇叭测试成功后,再测试外部音频输出
if (dlg.selecion() == 1) {
doAuidoSwitchTest();
} else {
m_labelsMalTestRes.at(testIndex)->setPixmap(pmFailed);
}
} else {
m_labelsMalTestRes.at(testIndex)->setPixmap(dlg.selecion() == 1 ? pmOk : pmFailed);
}
}
void settingUiDevTest::doMicrophoneTest() {
m_backstageIf->microphoneTest(true);
SelectionDialog dlg("录音中,请面对设备屏幕70CM说话", "", "录音结束并播放录音");
if (dlg.selecion() == 1) {
m_backstageIf->microphoneTest(false);
showSelectionWin(enMalTestMicrophone);
} else {
const int size = m_btnsMalTest.at(0)->height() * 0.6;
QPixmap pmFailed(":/res/image/fail2_large.png");
pmFailed = pmFailed.scaled(size, size);
m_labelsMalTestRes.at(enMalTestSpeaker)->setPixmap(pmFailed);
}
}
void settingUiDevTest::doAuidoSwitchTest() {
SelectionDialog dlg("请接入外部音响,并将开关拨至正确位置", "", "已完成");
if (dlg.selecion() == 1) {
m_backstageIf->audioSwitchTest();
showSelectionWin(enMalTestAuidoSwitch);
} else {
const int size = m_btnsMalTest.at(0)->height() * 0.6;
QPixmap pmFailed(":/res/image/fail2_large.png");
pmFailed = pmFailed.scaled(size, size);
m_labelsMalTestRes.at(enMalTestSpeaker)->setPixmap(pmFailed);
}
}
void settingUiDevTest::refreshUiByHardwareConfig(const QString& hardware)
{
m_editDevCfg->setText(hardware);
//HW300102 0 1 C1 1 01H
bool hasReaderUnderScreen = (hardware[8] == '2');
if(hasReaderUnderScreen){//注意测试项索引
m_labelsAutoTestItem.at(enAutoTestReaderUnderScreen)->show();
m_labelsAutoTestRes.at(enAutoTestReaderUnderScreen)->show();
m_btnsAutoTestRetest.at(enAutoTestReaderUnderScreen)->show();
}
else{
m_labelsAutoTestItem.at(enAutoTestReaderUnderScreen)->hide();
m_labelsAutoTestRes.at(enAutoTestReaderUnderScreen)->hide();
m_btnsAutoTestRetest.at(enAutoTestReaderUnderScreen)->hide();
}
bool hasWifi = (hardware[9] == '2');
if(hasWifi){//注意测试项索引
m_labelsAutoTestItem.at(enAutoTestWifi)->show();
m_labelsAutoTestRes.at(enAutoTestWifi)->show();
m_btnsAutoTestRetest.at(enAutoTestWifi)->show();
}
else{
m_labelsAutoTestItem.at(enAutoTestWifi)->hide();
m_labelsAutoTestRes.at(enAutoTestWifi)->hide();
m_btnsAutoTestRetest.at(enAutoTestWifi)->hide();
}
bool hasTp = (hardware[12] == '1');
if(hasTp){//注意测试项索引
m_labelsMalTestItem.at(enMalTestTp)->show();
m_labelsMalTestRes.at(enMalTestTp)->show();
m_btnsMalTest.at(enMalTestTp)->show();
}
else{
m_labelsMalTestItem.at(enMalTestTp)->hide();
m_labelsMalTestRes.at(enMalTestTp)->hide();
m_btnsMalTest.at(enMalTestTp)->hide();
}
auto manufacturer = DevVersion::getInstance()->getManu();
if (manufacturer == Manu_E::ManuRWRk1109V05) {
m_malTest[enMalTestSpeaker] = "喇叭/音频输出";
} else {
m_malTest[enMalTestSpeaker] = "喇叭";
}
m_labelsMalTestItem.at(enMalTestSpeaker)->setText(m_malTest.at(enMalTestSpeaker));
}
std::string settingUiDevTest::getMesSeverIpFromText(const QString& text)
{
//text 例"192.168.100.250:8080/B045220509-40" "192.168.100.250/B045220509-40"
QString mesServerIp("");
if(!text.isEmpty())
{
QStringList list = text.split("/");
QStringList strList = list[0].split(":");
mesServerIp = strList[0];
}
LOGI("mesServerIp %s", mesServerIp.toStdString().c_str());
//qDebug()<<"mesServerIp "<<mesServerIp;
return mesServerIp.toStdString();
}