#include "work_page.h"
|
#include "ui_work_page.h"
|
#include <QDateTime>
|
#include "CustomClass/mymessagebox.h"
|
|
Work_Page::Work_Page(QWidget *parent, Work_Thread *wt) :
|
custom_dialog(parent),
|
ui(new Ui::Work_Page)
|
{
|
ui->setupUi(this);
|
|
workThread = wt;
|
|
packInfoPage = new packinfo_page(this,workThread);
|
packInfoPage->hide();
|
|
cellInfoPage = new CellInfo_page(this,workThread);
|
cellInfoPage->hide();
|
|
errInfoPage = new ErrorInfo_Page(this,workThread);
|
errInfoPage->hide();
|
|
paramPage = new Param_Page(this,workThread);
|
paramPage->hide();
|
|
set_btn_beep(ui->pushButton_packinfo,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_cellinfo,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_errorinfo,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_param,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_ctrl,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_Exit,SIGNAL(pressed()));
|
|
connect(ui->pushButton_packinfo,SIGNAL(released()),this,SLOT(WorkBtnAction()));
|
connect(ui->pushButton_cellinfo,SIGNAL(released()),this,SLOT(WorkBtnAction()));
|
connect(ui->pushButton_errorinfo,SIGNAL(released()),this,SLOT(WorkBtnAction()));
|
connect(ui->pushButton_param,SIGNAL(released()),this,SLOT(WorkBtnAction()));
|
connect(ui->pushButton_ctrl,SIGNAL(released()),this,SLOT(WorkBtnAction()));
|
connect(ui->pushButton_Exit,SIGNAL(released()),this,SLOT(WorkBtnAction()));
|
|
timer_500ms = new QTimer(this);
|
connect(timer_500ms,SIGNAL(timeout()),this,SLOT(DSP_UpdateSlot()));
|
}
|
|
Work_Page::~Work_Page()
|
{
|
delete ui;
|
delete timer_500ms;
|
|
//qDebug("~Work_Page");
|
}
|
|
void Work_Page::showWorkPage()
|
{
|
remote_state = workThread->remoteState;
|
|
if(1 == remote_state.to_workpage){
|
remote_state.to_workpage = 0;
|
workThread->setRemoteState(remote_state);
|
}
|
|
workThread->setPageIndex(7);
|
|
cmdExecState = 0;
|
|
workPageAlarmEn = false;
|
|
DSP_UpdateSlot();
|
|
connect(workThread,SIGNAL(sendCMD_Result(int)),this,SLOT(recvCMD_Result(int)));
|
|
timer_500ms->start(500);
|
|
this->exec();
|
}
|
|
void Work_Page::closeWorkPage()
|
{
|
timer_500ms->stop();
|
|
disconnect(workThread,SIGNAL(sendCMD_Result(int)),this,SLOT(recvCMD_Result(int)));
|
|
this->close();
|
}
|
|
void Work_Page::SystemTime(void)
|
{
|
QDateTime time = QDateTime::currentDateTime();//获取系统现在的时间
|
QString str = time.toString("yyyy-MM-dd hh:mm:ss"); //设置显示格式
|
ui->label_Time->setText(str);
|
}
|
|
void Work_Page::checkIcon()
|
{
|
if(workThread->iconState.usbState)
|
ui->label_USB->setPixmap(QPixmap(":new/prefix1/usb.png"));
|
else
|
ui->label_USB->setPixmap(QPixmap(""));
|
}
|
|
void Work_Page::dspValue()
|
{
|
QString title;
|
|
if(workThread->testParam.test_type == TestTypeDischarge){
|
title = tr("放电测试--");
|
}
|
else{
|
title = tr("充电测试--");
|
}
|
|
if(workThread->packParam.pack_type == PACK_TYPE_Halo){
|
title += tr("哈啰");
|
}
|
else{
|
title += tr("其它");
|
}
|
|
ui->label_Title->setText(title);
|
|
ui->label_packcode1->setText("");
|
}
|
|
void Work_Page::updateValue()
|
{
|
QString alarmtext = alarmStateText.at(workThread->testStateData.alarmState);
|
|
bool ifchg = true;
|
if(workThread->testStateData.workState == WORK_STATE_DISCHG){
|
ifchg = false;
|
}
|
else if(workThread->testStateData.workState == WORK_STATE_CHARGE){
|
ifchg = true;
|
}
|
else{
|
if(workThread->testParam.test_type == TestTypeDischarge){
|
ifchg = false;
|
}
|
}
|
|
ui->label_workstate1->setText(alarmtext);
|
QString time = QString("%1:%2:%3")
|
.arg(workThread->testStateData.testTime.hour,2,10,QChar('0'))
|
.arg(workThread->testStateData.testTime.minute,2,10,QChar('0'))
|
.arg(workThread->testStateData.testTime.second,2,10,QChar('0'));
|
ui->label_testtime1->setText(time);
|
|
ui->label_vol1->setText(QString::number(((float)workThread->modTestData.ADCVdc/100),'f',2)+"V");
|
|
quint16 val = workThread->testParam.disParam.sum_vol_low;
|
if(ifchg){
|
val = workThread->testParam.chgParam.sum_vol_high;
|
}
|
ui->label_vol2->setText("("+QString::number(((float)val/100),'f',2)+")");
|
|
ui->label_curr1->setText(QString::number(((float)workThread->modTestData.ADCIdc/100),'f',2)+"A");
|
|
val = workThread->testParam.disParam.dis_curr;
|
if(ifchg){
|
val = workThread->testParam.chgParam.chg_curr;
|
}
|
ui->label_curr2->setText("("+QString::number(((float)val/100),'f',2)+")");
|
|
ui->label_cap1->setText(QString::number(((float)workThread->testStateData.testCap/100),'f',2)+"AH");
|
|
val = workThread->testParam.disParam.dis_cap;
|
if(ifchg){
|
val = workThread->testParam.chgParam.chg_cap;
|
}
|
ui->label_cap2->setText("("+QString::number(((float)val/100),'f',2)+")");
|
|
ui->label_soc1->setText(QString::number(((float)workThread->packData.soc/10),'f',1)+"%");
|
|
val = workThread->testParam.disParam.dis_soc;
|
if(ifchg){
|
val = workThread->testParam.chgParam.chg_soc;
|
}
|
ui->label_soc2->setText("("+QString::number(((float)val/10),'f',1)+"%)");
|
|
ui->label_voldiff1->setText(QString::number(workThread->packData.cell_diff_vol_max)+"mV");
|
ui->label_voldiff2->setText("("+QString::number(workThread->testParam.cell_vol_diff)+")");
|
|
ui->label_temp1->setText(QString::number(workThread->packData.cell_tempe_min)
|
+ "~" +QString::number(workThread->packData.cell_tempe_max) + "℃");
|
ui->label_temp2->setText("("+QString::number(((float)workThread->testParam.temp_high/10),'f',1)+")");
|
|
ui->label_cellvol1->setText(QString::number(((float)workThread->packData.cell_vol_min/1000),'f',3)
|
+ "~" +QString::number(((float)workThread->packData.cell_vol_max/1000),'f',3) + "V");
|
|
val = workThread->testParam.disParam.cell_vol_low;
|
if(ifchg){
|
val = workThread->testParam.chgParam.cell_vol_high;
|
}
|
|
ui->label_cellvol2->setText("("+QString::number(((float)val/1000),'f',3)+")");
|
|
if(workThread->testStateData.workState == WORK_STATE_STOPPED){
|
if(1 == cmdExecState){
|
ui->pushButton_ctrl->setText(tr("启动中..."));
|
ui->pushButton_ctrl->setEnabled(false);
|
}
|
else{
|
ui->pushButton_ctrl->setText(tr("启 动"));
|
ui->pushButton_ctrl->setEnabled(true);
|
}
|
}
|
else{
|
if(2 == cmdExecState){
|
ui->pushButton_ctrl->setText(tr("停止中..."));
|
ui->pushButton_ctrl->setEnabled(false);
|
}
|
else{
|
ui->pushButton_ctrl->setText(tr("停 止"));
|
ui->pushButton_ctrl->setEnabled(true);
|
}
|
}
|
}
|
|
void Work_Page::workPageAlarm()
|
{
|
if(workThread->testStateData.alarmState > 2){
|
if(workPageAlarmEn){
|
QString alarmtext = alarmStateText.at(workThread->testStateData.alarmState);
|
|
remote_state = workThread->remoteState;
|
|
if(0 == remote_state.enter_slave){
|
|
remote_state.to_workpage = 0;
|
workThread->setRemoteState(remote_state);
|
|
popBox(alarmtext);
|
|
}
|
|
workPageAlarmEn = false;
|
}
|
}
|
else{
|
workPageAlarmEn = true;
|
}
|
}
|
|
void Work_Page::DSP_UpdateSlot()
|
{
|
dspValue();
|
|
updateValue();
|
|
workPageAlarm();
|
|
SystemTime();
|
|
checkIcon();
|
}
|
|
|
void Work_Page::WorkBtnAction()
|
{
|
QPushButton *pb = dynamic_cast<QPushButton*>(sender());
|
|
remote_state = workThread->remoteState;
|
|
if(1 == remote_state.to_workpage){
|
remote_state.to_workpage = 0;
|
workThread->setRemoteState(remote_state);
|
}
|
|
if(ui->pushButton_Exit == pb)
|
{
|
if(cmdExecState > 0){
|
popBox(tr("操作中,请稍候..."));
|
return;
|
}
|
|
if(workThread->testStateData.workState != WORK_STATE_STOPPED)
|
{
|
MessageBox box(this,tr("正在测试,确定要退出?"),MessageBox::Yes|MessageBox::No,workThread);
|
|
if(box.exec()==MessageBox::Yes){
|
workThread->setWorkThreadCMD(workThread->CMD_StopTest);
|
closeWorkPage();
|
}
|
|
return;
|
}
|
|
closeWorkPage();
|
}
|
else if(ui->pushButton_packinfo == pb)
|
{
|
packInfoPage->showPackinfoPage();
|
}
|
else if(ui->pushButton_cellinfo == pb)
|
{
|
cellInfoPage->showCellinfoPage();
|
}
|
else if(ui->pushButton_errorinfo == pb)
|
{
|
errInfoPage->showErrorinfoPage();
|
}
|
else if(ui->pushButton_param == pb)
|
{
|
paramPage->showParamPage();
|
}
|
else if(ui->pushButton_ctrl == pb)
|
{
|
if(workThread->testStateData.workState == WORK_STATE_STOPPED){
|
|
if(1 == workThread->passthroughState.passing){
|
popBox(tr("透传中,请稍候!"));
|
return;
|
}
|
|
if(workThread->startErrorCheck() == START_VOL_HIGH){
|
popBox(tr("输入电压过高!"));
|
return;
|
}
|
else if(workThread->startErrorCheck() == START_VOL_LOW){
|
popBox(tr("输入电压过低!"));
|
return;
|
}
|
else if(workThread->startErrorCheck() == START_POWER_OVER){
|
popBox(tr("参数设置超功率!"));
|
return;
|
}
|
else if(workThread->startErrorCheck() == START_MEM_ERROR){
|
popBox(tr("存储已满,请删除数据!"));
|
return;
|
}
|
else if(workThread->startErrorCheck() == START_DISVOL_ERROR){
|
popBox(tr("组端下限设置错误!"));
|
return;
|
}
|
else if(workThread->startErrorCheck() == START_CHGVOL_ERROR){
|
popBox(tr("组端上限设置错误!"));
|
return;
|
}
|
|
|
cmdExecState = 1;
|
workThread->setWorkThreadCMD(workThread->CMD_StartTest);
|
}
|
else{
|
cmdExecState = 2;
|
workThread->setWorkThreadCMD(workThread->CMD_StopTest);
|
}
|
}
|
|
remote_state = workThread->remoteState;
|
|
if(1 == remote_state.to_workpage){
|
remote_state.to_workpage = 0;
|
workThread->setRemoteState(remote_state);
|
}
|
}
|
|
void Work_Page::recvCMD_Result(int res)
|
{
|
int exeres = res;
|
|
if(EXE_MOS_CTRL_FAIL == exeres){
|
popBox(tr("MOS管操作失败!"));
|
}
|
else if(EXE_MOS_STATE_ERR == exeres){
|
popBox(tr("MOS管状态异常!"));
|
}
|
else if(EXE_SET_PARAM_FAIL == exeres){
|
popBox(tr("设置参数失败!"));
|
}
|
else if(EXE_START_FAIL == exeres){
|
popBox(tr("启动操作失败!"));
|
}
|
else if(EXE_STOP_FAIL == exeres){
|
popBox(tr("停止操作失败!"));
|
}
|
|
cmdExecState = 0;
|
}
|
|
void Work_Page::popBox(QString msg)
|
{
|
MessageBox box(this,msg,MessageBox::Ok,workThread);
|
box.exec();
|
}
|