#include "data_page.h"
|
#include "ui_data_page.h"
|
#include "Dialogs/filecopydialog.h"
|
#include "Common/mymessagebox.h"
|
#include "Common/classxml.h"
|
|
Data_Page::Data_Page(QWidget *parent,Work_Thread *thread) :
|
customDialog(parent),
|
ui(new Ui::Data_Page)
|
{
|
ui->setupUi(this);
|
|
work_thread = thread;
|
connect(work_thread,SIGNAL(SentInterface(int)),this,SLOT(UpdateInterface(int)));
|
work_thread->localData.Interface = FACE_DATA;
|
initUi();
|
updateROM();
|
initNameListButton();
|
updateNameListButton();
|
one_sub_window_exist = false;
|
|
set_btn_beep(ui->pushButton_name0,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_name1,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_name2,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_name3,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_name4,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_name5,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_name6,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_name7,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_check0,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_check1,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_check2,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_check3,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_check4,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_check5,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_check6,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_check7,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_check8,SIGNAL(pressed()));
|
|
set_btn_beep(ui->pushButton_BatteryList,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_DataList,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_Rename,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_USB,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_Delete,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_DataChart,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_Last,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_Next,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_Exit,SIGNAL(pressed()));
|
|
set_btn_beep(ui->pushButton_CheckDischarge,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_CheckCharge,SIGNAL(pressed()));
|
|
connect(ui->pushButton_name0,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_name1,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_name2,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_name3,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_name4,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_name5,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_name6,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_name7,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_check0,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_check1,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_check2,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_check3,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_check4,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_check5,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_check6,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_check7,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_check8,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
|
connect(ui->pushButton_BatteryList,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_DataList,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_Rename,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_USB,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_Delete,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
|
connect(ui->pushButton_CheckDischarge,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_CheckCharge,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_DataChart,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
|
connect(ui->pushButton_Last,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_Next,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_Exit,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
|
//更新时间和图标
|
IconTimeSlot();
|
getDataTimer = new QTimer(this);
|
connect(getDataTimer,SIGNAL(timeout()),this,SLOT(IconTimeSlot()));
|
getDataTimer->start(500);
|
}
|
|
Data_Page::~Data_Page()
|
{
|
work_thread->localData.Interface = FACE_HOME;
|
delete ui;
|
}
|
|
|
void Data_Page::DataBtnSlot()
|
{
|
QPushButton *pb = dynamic_cast<QPushButton*>(sender());
|
if(ui->pushButton_Exit == pb)
|
{
|
closeCustom(false);
|
}
|
else if(ui->pushButton_Last == pb)
|
{
|
if(ui->pushButton_BatteryList->isEnabled())
|
{
|
currentDataPageIndex--;
|
updateDataListButton(battery_name);
|
}
|
else
|
{
|
currentBatteryPageIndex--;
|
updateNameListButton();
|
}
|
}
|
else if(ui->pushButton_Next == pb)
|
{
|
if(ui->pushButton_BatteryList->isEnabled())
|
{
|
currentDataPageIndex++;
|
updateDataListButton(battery_name);
|
}
|
else
|
{
|
currentBatteryPageIndex++;
|
updateNameListButton();
|
}
|
}
|
else if(listNameButton[0] == pb || listNameButton[1] == pb
|
|| listNameButton[2] == pb || listNameButton[3] == pb
|
|| listNameButton[4] == pb || listNameButton[5] == pb
|
|| listNameButton[6] == pb || listNameButton[7] == pb)
|
{
|
if(ui->pushButton_BatteryList->isEnabled())
|
{
|
data_name = pb->text();
|
initDataInfo();
|
updateDataInfo(battery_name+"/"+data_name);
|
WidgetListScroll(ui->widget_4,1);
|
}
|
else
|
{
|
battery_name = pb->text();
|
currentDataPageIndex = 1;
|
initDataListButton();
|
updateDataListButton(battery_name);
|
}
|
}
|
else if(listCheckButton[0] == pb || listCheckButton[1] == pb
|
|| listCheckButton[2] == pb || listCheckButton[3] == pb
|
|| listCheckButton[4] == pb || listCheckButton[5] == pb
|
|| listCheckButton[6] == pb || listCheckButton[7] == pb)
|
{
|
for(int i=0;i<8;i++)
|
{
|
if(listCheckButton[i] == pb)
|
{
|
checkFlag[i] = !checkFlag[i];
|
if(checkFlag[i])
|
pb->setIcon(QIcon(":new/prefix1/check.png"));
|
else
|
pb->setIcon(QIcon(":new/prefix1/uncheck.png"));
|
}
|
}
|
checkUsbBtnState();
|
}
|
else if(ui->pushButton_check8 == pb)
|
{
|
checkFlag[8] = !checkFlag[8];
|
for(int i=0;i<8;i++)
|
{
|
if(listCheckButton[i]->isEnabled())
|
{
|
checkFlag[i] = checkFlag[8];
|
if(checkFlag[i])
|
listCheckButton[i]->setIcon(QIcon(":new/prefix1/check.png"));
|
else
|
listCheckButton[i]->setIcon(QIcon(":new/prefix1/uncheck.png"));
|
}
|
}
|
if(checkFlag[8])
|
pb->setIcon(QIcon(":new/prefix1/check.png"));
|
else
|
pb->setIcon(QIcon(":new/prefix1/uncheck.png"));
|
checkUsbBtnState();
|
}
|
else if(ui->pushButton_BatteryList == pb)
|
{
|
initNameListButton();
|
updateNameListButton();
|
WidgetListScroll(ui->widget_4,0);
|
}
|
else if(ui->pushButton_DataList == pb)
|
{
|
initDataListButton();
|
updateDataListButton(battery_name);
|
WidgetListScroll(ui->widget_4,0);
|
}
|
else if(ui->pushButton_Rename == pb)
|
{
|
QString name;
|
ifCheckRenameBattery(name);
|
if(true == one_sub_window_exist)
|
{
|
return;
|
}
|
work_thread->localData.Interface = FACE_RENAMEPAGE;
|
rename_page = new ReName_Page(this,name,work_thread);
|
one_sub_window_exist = true;
|
rename_page->execCustom();
|
updateNameListButton();
|
one_sub_window_exist = false;
|
work_thread->localData.Interface = FACE_DATA;
|
}
|
else if(ui->pushButton_USB == pb)
|
{
|
copy_action();
|
}
|
else if(ui->pushButton_Delete == pb)
|
{
|
delete_action();
|
}
|
else if(ui->pushButton_DataChart == pb)
|
{
|
QString name = battery_name+"/"+data_name;
|
if(true == one_sub_window_exist)
|
{
|
return;
|
}
|
work_thread->localData.Interface = FACE_CHARPAGE;
|
chart_page = new Chart_Page(this,name,work_thread);
|
one_sub_window_exist = true;
|
chart_page->execCustom();
|
one_sub_window_exist = false;
|
work_thread->localData.Interface = FACE_DATA;
|
}
|
else if(ui->pushButton_CheckDischarge == pb)
|
{
|
checkDischarge = !checkDischarge;
|
if(!checkDischarge && !checkCharge)
|
checkCharge = !checkCharge;
|
if(checkDischarge)
|
{
|
QIcon *icon = new QIcon(":new/prefix1/check.png");
|
ui->pushButton_CheckDischarge->setIcon(*icon);
|
}
|
else
|
{
|
QIcon *icon = new QIcon(":new/prefix1/uncheck.png");
|
ui->pushButton_CheckDischarge->setIcon(*icon);
|
}
|
if(checkCharge)
|
{
|
QIcon *icon = new QIcon(":new/prefix1/check.png");
|
ui->pushButton_CheckCharge->setIcon(*icon);
|
}
|
else
|
{
|
QIcon *icon = new QIcon(":new/prefix1/uncheck.png");
|
ui->pushButton_CheckCharge->setIcon(*icon);
|
}
|
updateDataListButton(battery_name);
|
}
|
else if(ui->pushButton_CheckCharge == pb)
|
{
|
checkCharge = !checkCharge;
|
if(!checkDischarge && !checkCharge)
|
checkDischarge = !checkDischarge;
|
if(checkDischarge)
|
{
|
QIcon *icon = new QIcon(":new/prefix1/check.png");
|
ui->pushButton_CheckDischarge->setIcon(*icon);
|
}
|
else
|
{
|
QIcon *icon = new QIcon(":new/prefix1/uncheck.png");
|
ui->pushButton_CheckDischarge->setIcon(*icon);
|
}
|
if(checkCharge)
|
{
|
QIcon *icon = new QIcon(":new/prefix1/check.png");
|
ui->pushButton_CheckCharge->setIcon(*icon);
|
}
|
else
|
{
|
QIcon *icon = new QIcon(":new/prefix1/uncheck.png");
|
ui->pushButton_CheckCharge->setIcon(*icon);
|
}
|
updateDataListButton(battery_name);
|
}
|
}
|
|
void Data_Page::IconTimeSlot()
|
{
|
QDateTime time = QDateTime::currentDateTime();//获取系统现在的时间
|
QString str = time.toString("yyyy-MM-dd hh:mm:ss"); //设置显示格式
|
ui->label_Time->setText(str);
|
|
if(work_thread->iconState.monomerState){
|
if(work_thread->get_mon_source()==MONO_TYPE_WIRED)
|
{
|
ui->label_MON->setStyleSheet("image: url(:/new/prefix1/1.png);");
|
}
|
else
|
{
|
if(mon_use_type == 2)
|
ui->label_MON->setStyleSheet("border-image: url(:/new/prefix1/lora_mon.png);");
|
else
|
ui->label_MON->setStyleSheet("border-image: url(:/new/prefix1/mon.png);");
|
}
|
}
|
else
|
ui->label_MON->setStyleSheet("");
|
|
if(work_thread->iconState.usbState)
|
ui->label_USB->setPixmap(QPixmap(":new/prefix1/usb.png"));
|
else
|
ui->label_USB->setPixmap(QPixmap(""));
|
if(work_thread->iconState.wifiState)
|
ui->label_WIFI->setStyleSheet("border-image: url(:/new/prefix1/wificonnect.png);");
|
else
|
ui->label_WIFI->setStyleSheet("");
|
updateROM();
|
}
|
|
void Data_Page::initUi()
|
{
|
listNameButton[0] = ui->pushButton_name0;
|
listNameButton[1] = ui->pushButton_name1;
|
listNameButton[2] = ui->pushButton_name2;
|
listNameButton[3] = ui->pushButton_name3;
|
listNameButton[4] = ui->pushButton_name4;
|
listNameButton[5] = ui->pushButton_name5;
|
listNameButton[6] = ui->pushButton_name6;
|
listNameButton[7] = ui->pushButton_name7;
|
listCheckButton[0] = ui->pushButton_check0;
|
listCheckButton[1] = ui->pushButton_check1;
|
listCheckButton[2] = ui->pushButton_check2;
|
listCheckButton[3] = ui->pushButton_check3;
|
listCheckButton[4] = ui->pushButton_check4;
|
listCheckButton[5] = ui->pushButton_check5;
|
listCheckButton[6] = ui->pushButton_check6;
|
listCheckButton[7] = ui->pushButton_check7;
|
checkDischarge = true;
|
checkCharge = true;
|
chartMonomerID = 1; //图表界面当前单体ID
|
}
|
|
void Data_Page::initNameListButton()
|
{
|
currentBatteryPageIndex = 1; //当前页数索引
|
ui->pushButton_BatteryList->setEnabled(false);
|
ui->pushButton_DataList->setEnabled(false);
|
ui->pushButton_CheckDischarge->setVisible(false);
|
ui->pushButton_CheckCharge->setVisible(false);
|
ui->pushButton_check8->setVisible(true);
|
ui->pushButton_Rename->setVisible(true);
|
ui->label_PageNum->setVisible(true);
|
ui->pushButton_Last->setVisible(true);
|
ui->pushButton_Next->setVisible(true);
|
ui->widget_5->setVisible(true);
|
}
|
|
void Data_Page::updateNameListButton()
|
{
|
nameList = fileManage.getDirs(false); //不含默认电池组
|
nameNum = nameList.count();
|
|
if(nameNum%BatteryNumEachPage == 0)
|
pageNum = nameNum/BatteryNumEachPage;
|
else
|
pageNum = (nameNum/BatteryNumEachPage)+1;
|
if(pageNum<1)
|
pageNum = 1;
|
if(currentBatteryPageIndex > pageNum)
|
currentBatteryPageIndex = pageNum;
|
ui->label_PageNum->setText(QString::number(currentBatteryPageIndex)
|
+" / "+QString::number(pageNum)+tr(" 页"));
|
|
if(currentBatteryPageIndex>1)
|
ui->pushButton_Last->setEnabled(true);
|
else
|
ui->pushButton_Last->setEnabled(false);
|
if(nameNum>BatteryNumEachPage*currentBatteryPageIndex)
|
ui->pushButton_Next->setEnabled(true);
|
else
|
ui->pushButton_Next->setEnabled(false);
|
|
if(nameNum>BatteryNumEachPage*currentBatteryPageIndex)
|
nameNumOnCurrentPage = BatteryNumEachPage;
|
else
|
nameNumOnCurrentPage = nameNum-BatteryNumEachPage*(currentBatteryPageIndex-1);
|
listNameButton[0]->setText(Default_Battery);
|
listCheckButton[0]->setIcon(QIcon(":new/prefix1/uncheck.png"));
|
listNameButton[0]->setEnabled(true);
|
listCheckButton[0]->setEnabled(true);
|
checkFlag[0] = false;
|
checkFlag[8] = false;
|
ui->pushButton_check8->setIcon(QIcon(":new/prefix1/uncheck.png"));
|
for(int i=1;i<BatteryNumEachPage+1;i++)
|
{
|
listNameButton[i]->setEnabled(false);
|
listNameButton[i]->setText("");
|
listCheckButton[i]->setEnabled(false);
|
listCheckButton[i]->setIcon(QIcon(""));
|
checkFlag[i] = false;
|
}
|
for(int i=1;i<nameNumOnCurrentPage+1;i++)
|
{
|
listNameButton[i]->setEnabled(true);
|
listNameButton[i]->setText(nameList.at((i-1)+BatteryNumEachPage*(currentBatteryPageIndex-1)));
|
listCheckButton[i]->setEnabled(true);
|
listCheckButton[i]->setIcon(QIcon(":new/prefix1/uncheck.png"));
|
}
|
|
ui->widget_5->setVisible(true);
|
ui->pushButton_Rename->setEnabled(false);
|
ui->pushButton_USB->setEnabled(false);
|
ui->pushButton_Delete->setEnabled(false);
|
nameNumOnCurrentPage ++;
|
}
|
|
void Data_Page::initDataListButton()
|
{
|
ui->pushButton_BatteryList->setEnabled(true);
|
ui->pushButton_DataList->setEnabled(false);
|
ui->pushButton_CheckDischarge->setVisible(true);
|
ui->pushButton_CheckCharge->setVisible(true);
|
ui->pushButton_check8->setVisible(true);
|
ui->pushButton_Rename->setVisible(false);
|
ui->label_PageNum->setVisible(true);
|
ui->pushButton_Last->setVisible(true);
|
ui->pushButton_Next->setVisible(true);
|
ui->widget_5->setVisible(true);
|
}
|
|
void Data_Page::updateDataListButton(QString batteryDir)
|
{
|
nameList = checkData(checkDischarge,checkCharge,fileManage.getFiles(batteryDir+"/",".FBO"));
|
nameNum = nameList.count();
|
if(nameNum%DataNumEachPage == 0)
|
pageNum = nameNum/DataNumEachPage;
|
else
|
pageNum = (nameNum/DataNumEachPage)+1;
|
if(pageNum<1)
|
pageNum = 1;
|
if(currentDataPageIndex > pageNum)
|
currentDataPageIndex = pageNum;
|
ui->label_PageNum->setText(QString::number(currentDataPageIndex)
|
+" / "+QString::number(pageNum)+tr(" 页"));
|
if(currentDataPageIndex>1)
|
ui->pushButton_Last->setEnabled(true);
|
else
|
ui->pushButton_Last->setEnabled(false);
|
if(nameNum>DataNumEachPage*currentDataPageIndex)
|
ui->pushButton_Next->setEnabled(true);
|
else
|
ui->pushButton_Next->setEnabled(false);
|
|
if(nameNum>DataNumEachPage*currentDataPageIndex)
|
dataNumOnCurrentPage = DataNumEachPage;
|
else
|
dataNumOnCurrentPage = nameNum-DataNumEachPage*(currentDataPageIndex-1);
|
for(int i=0;i<DataNumEachPage;i++)
|
{
|
listNameButton[i]->setEnabled(false);
|
listNameButton[i]->setText("");
|
listCheckButton[i]->setEnabled(false);
|
listCheckButton[i]->setIcon(QIcon(""));
|
checkFlag[i] = false;
|
}
|
checkFlag[8] = false;
|
ui->pushButton_check8->setIcon(QIcon(":new/prefix1/uncheck.png"));
|
for(int i=0;i<dataNumOnCurrentPage;i++)
|
{
|
listNameButton[i]->setEnabled(true);
|
listNameButton[i]->setText(nameList.at(i+DataNumEachPage*(currentDataPageIndex-1)));
|
listCheckButton[i]->setEnabled(true);
|
listCheckButton[i]->setIcon(QIcon(":new/prefix1/uncheck.png"));
|
}
|
|
ui->pushButton_Rename->setEnabled(false);
|
ui->pushButton_USB->setEnabled(false);
|
ui->pushButton_Delete->setEnabled(false);
|
}
|
|
void Data_Page::initDataInfo()
|
{
|
ui->pushButton_BatteryList->setEnabled(true);
|
ui->pushButton_DataList->setEnabled(true);
|
ui->pushButton_CheckDischarge->setVisible(false);
|
ui->pushButton_CheckCharge->setVisible(false);
|
ui->pushButton_check8->setVisible(false);
|
ui->pushButton_Rename->setVisible(false);
|
ui->label_PageNum->setVisible(false);
|
ui->pushButton_Last->setVisible(false);
|
ui->pushButton_Next->setVisible(false);
|
ui->widget_5->setVisible(false);
|
}
|
|
void Data_Page::updateDataInfo(QString fileName)
|
{
|
if(ClassXML::AnalysisDataFBO(dataDir+fileName,test_info))
|
{
|
if(test_info.fbo_data_head_start.DataType == 0xFD){
|
ui->label_data_type->setText(tr("放电数据"));
|
switch(test_info.fbo_data_head_stop.StopType)
|
{
|
case WPMANUALPSTOP:
|
ui->label_data_stopreason->setText(tr("手动停止"));
|
break;
|
case WPTIMESTOP:
|
ui->label_data_stopreason->setText(tr("放电时间到"));
|
break;
|
case WPCAPSTOP:
|
ui->label_data_stopreason->setText(tr("放电容量到"));
|
break;
|
case WPMVLLSTOP:
|
ui->label_data_stopreason->setText(tr("单体下限到"));
|
break;
|
case WPSVLLSTOP:
|
ui->label_data_stopreason->setText(tr("组端下限到"));
|
break;
|
case WPPOWERBREAKSTOP:
|
ui->label_data_stopreason->setText(tr("在线电压低"));
|
break;
|
case WPFLASHUPSTOP:
|
ui->label_data_stopreason->setText(tr("内存不足"));
|
break;
|
case WPTEMPHIGHSTOP:
|
ui->label_data_stopreason->setText(tr("温度异常高"));
|
break;
|
case WPDISCHARGING:
|
ui->label_data_stopreason->setText(tr("正在放电"));
|
break;
|
case WPMANUALPAUSE:
|
ui->label_data_stopreason->setText(tr("手动暂停"));
|
break;
|
case WPAUTOPAUSE:
|
ui->label_data_stopreason->setText(tr("暂停放电"));
|
break;
|
case WPCONNECTERROR:
|
ui->label_data_stopreason->setText(tr("线缆连接异常或者内部通信异常"));
|
break;
|
case WPCURRENTERROR:
|
ui->label_data_stopreason->setText(tr("电流检测错误"));
|
break;
|
case ERRORSTOP:
|
ui->label_data_stopreason->setText(tr("紧急停止"));
|
break;
|
case WPFANERROR:
|
ui->label_data_stopreason->setText(tr("风扇异常"));
|
break;
|
default:
|
ui->label_data_stopreason->setText(tr("未知"));
|
break;
|
}
|
}
|
else if(test_info.fbo_data_head_start.DataType == 0xFC){
|
ui->label_data_type->setText(tr("充电数据"));
|
switch(test_info.fbo_data_head_stop.StopType)
|
{
|
case CPStopCharging:
|
ui->label_data_stopreason->setText(tr("手动停止"));
|
break;
|
case CPPauseCharging:
|
ui->label_data_stopreason->setText(tr("暂停充电"));
|
break;
|
case CPSmallCharging:
|
ui->label_data_stopreason->setText(tr("正在充电"));
|
break;
|
case CPLargeCharging:
|
ui->label_data_stopreason->setText(tr("直充充电"));
|
break;
|
case CPNullCharging:
|
ui->label_data_stopreason->setText(tr("正在充电监测"));
|
break;
|
case CPERRORSTOP:
|
ui->label_data_stopreason->setText(tr("紧急停止"));
|
break;
|
case CPPOWERBREAKSTOP:
|
ui->label_data_stopreason->setText(tr("在线电压低"));
|
break;
|
case CPCURRENTERROR:
|
ui->label_data_stopreason->setText(tr("电流检测错误"));
|
break;
|
case CPTEMPHIGHSTOP:
|
ui->label_data_stopreason->setText(tr("温度异常高"));
|
break;
|
case CPCONNECTERROR:
|
ui->label_data_stopreason->setText(tr("线缆连接异常或者内部通信异常"));
|
break;
|
case CPFANERROR:
|
ui->label_data_stopreason->setText(tr("风扇异常"));
|
break;
|
case CPPauseNullCharging:
|
ui->label_data_stopreason->setText(tr("暂停充电监测"));
|
break;
|
default:
|
ui->label_data_stopreason->setText(tr("未知"));
|
break;
|
}
|
}
|
else
|
ui->label_data_type->setText(tr("未知数据"));
|
ui->label_data_cap->setText(QString::number(test_info.fbo_data_head_start.STDCap)+" AH");
|
ui->label_data_cur->setText(QString::number((float)test_info.fbo_data_head_start.TestCur/10,'f',1)+" A");
|
QString startTime = QString("%1-%2-%3 %4:%5")
|
.arg(test_info.fbo_data_head_start.TestStartTime.year+2000,4,10,QChar('0'))
|
.arg(test_info.fbo_data_head_start.TestStartTime.month,2,10,QChar('0'))
|
.arg(test_info.fbo_data_head_start.TestStartTime.day,2,10,QChar('0'))
|
.arg(test_info.fbo_data_head_start.TestStartTime.hour,2,10,QChar('0'))
|
.arg(test_info.fbo_data_head_start.TestStartTime.minute,2,10,QChar('0'));
|
ui->label_data_starttime->setText(startTime);
|
QString lastTime = QString("%1:%2:%3")
|
.arg(test_info.fbo_data_head_stop.TestTimeLong.hour,2,10,QChar('0'))
|
.arg(test_info.fbo_data_head_stop.TestTimeLong.minute,2,10,QChar('0'))
|
.arg(test_info.fbo_data_head_stop.TestTimeLong.second,2,10,QChar('0'));
|
ui->label_data_lasttime->setText(lastTime);
|
if(test_info.fbo_data_head_stop.TestTimeLong.hour == 255 &&
|
test_info.fbo_data_head_stop.TestTimeLong.minute == 255 &&
|
test_info.fbo_data_head_stop.TestTimeLong.second == 255){
|
ui->label_data_lasttime->setText("--:--:--");
|
}
|
|
}
|
ui->pushButton_USB->setEnabled(true);
|
ui->pushButton_Delete->setEnabled(true);
|
}
|
|
void Data_Page::checkUsbBtnState()
|
{
|
if(checkFlag[0])
|
{
|
ui->pushButton_Rename->setEnabled(false);
|
ui->pushButton_USB->setEnabled(true);
|
ui->pushButton_Delete->setEnabled(true);
|
}
|
else
|
{
|
int count = 0;
|
for(int i=1;i<DataNumEachPage;i++)
|
{
|
if(checkFlag[i])
|
count++;
|
}
|
if(count == 0)
|
{
|
ui->pushButton_Rename->setEnabled(false);
|
ui->pushButton_USB->setEnabled(false);
|
ui->pushButton_Delete->setEnabled(false);
|
}
|
else if(count ==1)
|
{
|
ui->pushButton_Rename->setEnabled(true);
|
ui->pushButton_USB->setEnabled(true);
|
ui->pushButton_Delete->setEnabled(true);
|
}
|
else
|
{
|
ui->pushButton_Rename->setEnabled(false);
|
ui->pushButton_USB->setEnabled(true);
|
ui->pushButton_Delete->setEnabled(true);
|
}
|
}
|
int count = 0;
|
int num = 0;
|
if(ui->pushButton_BatteryList->isEnabled())
|
num = dataNumOnCurrentPage;
|
else
|
num = nameNumOnCurrentPage;
|
qDebug("num = %d",num);
|
for(int i=0;i<num;i++)
|
{
|
if(checkFlag[i])
|
count++;
|
}
|
if(count == 0)
|
{
|
ui->pushButton_Delete->setEnabled(false);
|
ui->pushButton_USB->setEnabled(false);
|
checkFlag[8] = false;
|
ui->pushButton_check8->setIcon(QIcon(":new/prefix1/uncheck.png"));
|
}
|
else if(count == num)
|
{
|
ui->pushButton_Delete->setEnabled(true);
|
ui->pushButton_USB->setEnabled(true);
|
checkFlag[8] = true;
|
ui->pushButton_check8->setIcon(QIcon(":new/prefix1/check.png"));
|
}
|
else if(count !=num && count !=0)
|
{
|
ui->pushButton_Delete->setEnabled(true);
|
ui->pushButton_USB->setEnabled(true);
|
checkFlag[8] = false;
|
ui->pushButton_check8->setIcon(QIcon(":new/prefix1/uncheck.png"));
|
}
|
}
|
|
void Data_Page::updateROM()
|
{
|
int filecount = fileManage.FindLocalFileFromPath(dataDir,dataType);
|
float percent = (float)1-(float)filecount/MaxDataNum; //最大保存数据2000条
|
ui->label_rom->setText(tr("内存余量:")+QString::number(percent*100,'f',2)+"%");
|
}
|
|
int Data_Page::ifCheckRenameBattery(QString &name)
|
{
|
if(checkFlag[0])
|
return RenameErrorDefault;
|
int count = 0;
|
for(int i=1;i<DataNumEachPage;i++)
|
{
|
if(checkFlag[i])
|
{
|
count++;
|
name = listNameButton[i]->text();
|
}
|
}
|
if(count != 1)
|
return RenameErrorMuch;
|
return RenameOK;
|
}
|
|
//**************拷贝数据******************//
|
void Data_Page::copy_action(void)
|
{
|
bool SD_Ok = false;
|
SD_Ok = work_thread->CheckDiskState(usbDir);
|
if(false == SD_Ok)
|
{
|
popBox(tr("U盘不存在!"));
|
return;
|
}
|
|
QDir dir;
|
if(!(dir.exists(usbDir+File_Dir)))
|
{
|
if(false == dir.mkdir(usbDir+File_Dir))
|
{
|
popBox(tr("创建数据文件夹失败!"));
|
return;
|
}
|
}
|
|
FileCopyDialog FD;
|
QStringList sl;
|
if((!ui->pushButton_BatteryList->isEnabled())&&(!ui->pushButton_DataList->isEnabled()))
|
{ //电池组文件夹
|
for(int i=0;i<8;i++)
|
{
|
if(checkFlag[i])
|
{
|
sl.append(dataDir+listNameButton[i]->text());
|
}
|
}
|
FD.CopyFiles(sl,usbDir+File_Dir,true);
|
}
|
else if(ui->pushButton_BatteryList->isEnabled()&&(!ui->pushButton_DataList->isEnabled()))
|
{ //数据
|
for(int i=0;i<8;i++)
|
{
|
if(checkFlag[i])
|
{
|
sl.append(dataDir+battery_name+"/"+listNameButton[i]->text());
|
}
|
}
|
FD.CopyFiles(sl,usbDir+File_Dir+"/"+battery_name,true);
|
}
|
else //单个文件
|
{
|
sl.append(dataDir+battery_name+"/"+data_name);
|
FD.CopyFiles(sl,usbDir+File_Dir+"/"+battery_name,true);
|
}
|
popBox(tr("转存完成!"));
|
}
|
|
//**************删除数据******************//
|
void Data_Page::delete_action(void)
|
{
|
QStringList sl;
|
if((!ui->pushButton_BatteryList->isEnabled())&&(!ui->pushButton_DataList->isEnabled()))
|
{
|
for(int i=0;i<8;i++)
|
{
|
if(checkFlag[i])
|
{
|
sl.append(dataDir+listNameButton[i]->text());
|
}
|
}
|
|
MessageBox box( this, QMessageBox::Question, MB_Caption, tr("确定删除选中的文件吗?"),
|
QMessageBox::Ok|QMessageBox::Cancel,
|
QMessageBox::Ok,
|
work_thread);
|
if(box.exec() != QMessageBox::Ok)
|
{
|
return;
|
}
|
|
for(int i=0;i<sl.length();i++)
|
{
|
if(sl.at(i) == dataDir+Default_Battery)
|
{
|
fileManage.clearDirectoryFiles(Default_Battery,fileManage.getFiles(Default_Battery,".FBO"));
|
}
|
else
|
{
|
fileManage.removeDir(sl.at(i));
|
}
|
}
|
updateNameListButton();
|
}
|
else if(ui->pushButton_BatteryList->isEnabled()&&(!ui->pushButton_DataList->isEnabled()))//数据
|
{
|
for(int i=0;i<8;i++)
|
{
|
if(checkFlag[i])
|
{
|
sl.append(listNameButton[i]->text());
|
}
|
}
|
MessageBox box( this, QMessageBox::Question, MB_Caption, tr("确定删除选中的文件吗?"),
|
QMessageBox::Ok|QMessageBox::Cancel,
|
QMessageBox::Ok,
|
work_thread );
|
if(box.exec() != QMessageBox::Ok)
|
{
|
return;
|
}
|
for(int i=0;i<sl.length();i++)
|
{
|
fileManage.removeFile(battery_name,sl.at(i));
|
}
|
updateDataListButton(battery_name);
|
}
|
else //电池组
|
{
|
MessageBox box( this, QMessageBox::Question, MB_Caption, tr("确定删除")+
|
data_name+"'?", QMessageBox::Ok|QMessageBox::Cancel,
|
QMessageBox::Ok,
|
work_thread );
|
if(box.exec() != QMessageBox::Ok)
|
{
|
return;
|
}
|
|
fileManage.removeFile(battery_name,data_name);
|
currentDataPageIndex = 1;
|
initDataListButton();
|
updateDataListButton(battery_name);
|
WidgetListScroll(ui->widget_4,0);
|
}
|
}
|
|
QStringList Data_Page::checkData(bool checkDischarge, bool checkCharge, QStringList name)
|
{
|
QStringList list;
|
TEST_DATA_INFO info;
|
if(checkDischarge && checkCharge)
|
return name;
|
//if(!checkDischarge && !checkCharge)
|
// return list;
|
if(checkDischarge)
|
{ //只选择放电
|
for(int i=0;i<name.count();i++)
|
{
|
if(ClassXML::AnalysisDataFBO(dataDir+battery_name+"/"+name.at(i),info))
|
{
|
if(info.fbo_data_head_start.DataType == 0xFD)
|
list.append(name.at(i));
|
}
|
}
|
return list;
|
}
|
else if(checkCharge)
|
{ //只选择充电
|
for(int i=0;i<name.count();i++)
|
{
|
if(ClassXML::AnalysisDataFBO(dataDir+battery_name+"/"+name.at(i),info))
|
{
|
if(info.fbo_data_head_start.DataType == 0xFC)
|
list.append(name.at(i));
|
}
|
}
|
return list;
|
}
|
return list;
|
}
|
|
//************告警窗口*****************//
|
void Data_Page::popBox(QString msg)
|
{
|
MessageBox box( this, QMessageBox::Warning, MB_Caption, msg,
|
QMessageBox::Ok,
|
QMessageBox::Ok,
|
work_thread);
|
box.exec();
|
}
|
|
void Data_Page::UpdateInterface(int interface)
|
{
|
if(work_thread->localData.Interface == FACE_RENAMEPAGE)
|
{
|
rename_page->closeCustom(false);
|
}
|
if(work_thread->localData.Interface == FACE_CHARPAGE)
|
{
|
chart_page->closeCustom(false);
|
}
|
this->closeCustom(false);
|
}
|