#include "errorinfo_page.h"
|
#include "ui_errorinfo_page.h"
|
#include <QDateTime>
|
|
ErrorInfo_Page::ErrorInfo_Page(QWidget *parent, Work_Thread *wt) :
|
custom_dialog(parent),
|
ui(new Ui::ErrorInfo_Page)
|
{
|
ui->setupUi(this);
|
|
workThread = wt;
|
|
set_btn_beep(ui->pushButton_Exit,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_pre,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_next,SIGNAL(pressed()));
|
|
connect(ui->pushButton_Exit,SIGNAL(released()),this,SLOT(buttonReleasedAction()));
|
connect(ui->pushButton_pre,SIGNAL(released()),this,SLOT(buttonReleasedAction()));
|
connect(ui->pushButton_next,SIGNAL(released()),this,SLOT(buttonReleasedAction()));
|
|
timer_500ms = new QTimer(this);
|
connect(timer_500ms,SIGNAL(timeout()),this,SLOT(update_slot()));
|
|
allErrList<<tr("BMS重启")<<tr("PACK外壳破坏故障")<<tr("NFC IIC通信故障")<<tr("BMS采样芯片通信故障")<<tr("底座连接信号异常") \
|
<<tr("压差过大")<<tr("485通信故障")<<tr("认证非法")<<tr("单体严重过压报警")<<tr("充电电流严重超限报警") \
|
<<tr("充电电芯严重高温报警")<<tr("充电电芯严重低温报警")<<tr("单体严重欠压报警")<<tr("放电电流超限报警")<<tr("放电电芯严重高温报警") \
|
<<tr("放电电芯严重低温报警")<<tr("采样芯片判定短路故障")<<tr("电芯过放故障")<<tr("预充短路故障")<<tr("总电压严重过压报警") \
|
<<tr("总电压严重欠压报警")<<tr("温度采样故障")<<tr("电流采样故障")<<tr("NTC温度差过大")<<tr("采样芯片硬件故障") \
|
<<tr("电压采样故障")<<tr("采样芯片判定过流故障")<<tr("采样芯片判定过压故障")<<tr("采样芯片判定欠压故障");
|
}
|
|
ErrorInfo_Page::~ErrorInfo_Page()
|
{
|
delete ui;
|
delete timer_500ms;
|
//qDebug("~ErrorInfo_Page");
|
}
|
|
void ErrorInfo_Page::showErrorinfoPage()
|
{
|
dspValue();
|
|
timer_500ms->start(500);
|
|
this->exec();
|
}
|
|
void ErrorInfo_Page::closeErrorinfoPage()
|
{
|
timer_500ms->stop();
|
|
this->close();
|
}
|
|
void ErrorInfo_Page::SystemTime(void)
|
{
|
QDateTime time = QDateTime::currentDateTime();//获取系统现在的时间
|
QString str = time.toString("yyyy-MM-dd hh:mm:ss"); //设置显示格式
|
ui->label_Time->setText(str);
|
}
|
|
void ErrorInfo_Page::checkIcon()
|
{
|
/*
|
if(workThread->iconState.usbState)
|
ui->label_USB->setPixmap(QPixmap(":new/prefix1/usb.png"));
|
else
|
ui->label_USB->setPixmap(QPixmap(""));
|
*/
|
}
|
|
void ErrorInfo_Page::dspValue()
|
{
|
QString title = tr("故障信息--");
|
|
if(workThread->packParam.pack_type == PACK_TYPE_Halo){
|
title += tr("哈啰");
|
}
|
else{
|
title += tr("其它");
|
}
|
|
ui->label_Title->setText(title);
|
|
QString str;
|
str.sprintf("%d-0x%X-0x%X",workThread->packData.bms_error_state,workThread->packData.error[0],workThread->packData.error[1]);
|
ui->label_errorcode->setText(str);
|
|
quint32 errorCode = workThread->packData.error[1];
|
errorCode = (errorCode<<16) + workThread->packData.error[0];
|
|
errorCount = 0;
|
currentErrList.clear();
|
for(quint8 n=0;n<29;n++){
|
if(errorCode & ((quint32)1<<n)){
|
currentErrList.append(allErrList.at(n));
|
errorCount++;
|
}
|
}
|
|
pageSum = errorCount/8;
|
if(errorCount%8 > 0){
|
pageSum += 1;
|
}
|
if(pageSum<1){
|
pageSum = 1;
|
}
|
|
pageIndex = 0;
|
|
QTableWidgetItem *item;
|
|
for(int i=0;i<8;i++)
|
{
|
item = new QTableWidgetItem("");
|
item->setTextAlignment(0x0084);
|
ui->tableWidget->setItem(i,0,item);
|
}
|
|
setTable();
|
|
updateValue();
|
}
|
|
void ErrorInfo_Page::setTable()
|
{
|
ui->label_pagecnt->setText(QString::number(pageIndex+1) + "/" +QString::number(pageSum));//+tr(" 页"));
|
|
if(pageSum < 2){
|
ui->pushButton_pre->setEnabled(false);
|
ui->pushButton_next->setEnabled(false);
|
}
|
else{
|
if(pageIndex == 0){
|
ui->pushButton_pre->setEnabled(false);
|
ui->pushButton_next->setEnabled(true);
|
}
|
else if(pageIndex+1 == pageSum){
|
ui->pushButton_pre->setEnabled(true);
|
ui->pushButton_next->setEnabled(false);
|
}
|
}
|
}
|
|
void ErrorInfo_Page::updateValue()
|
{
|
quint16 errorindexstart = pageIndex*8;
|
quint16 errorindex = 0;
|
|
QTableWidgetItem *item;
|
|
for(quint8 n=0;n<8;n++){
|
errorindex = errorindexstart+n;
|
|
if(errorindex < errorCount){
|
item = ui->tableWidget->item(n, 0);
|
item->setText(currentErrList.at(errorindex));
|
}
|
else{
|
item = ui->tableWidget->item(n, 0);
|
item->setText("");
|
}
|
}
|
}
|
|
void ErrorInfo_Page::update_slot()
|
{
|
SystemTime();
|
|
checkIcon();
|
|
//updateValue();
|
|
if(1 == workThread->remoteState.to_workpage){
|
closeErrorinfoPage();
|
}
|
}
|
|
|
void ErrorInfo_Page::buttonReleasedAction()
|
{
|
QPushButton *pb = dynamic_cast<QPushButton*>(sender());
|
|
if(ui->pushButton_Exit == pb)
|
{
|
closeErrorinfoPage();
|
}
|
else if(ui->pushButton_pre == pb)
|
{
|
if(pageIndex > 0){
|
pageIndex--;
|
}
|
|
setTable();
|
updateValue();
|
}
|
else if(ui->pushButton_next == pb)
|
{
|
if(pageIndex+1 < pageSum){
|
pageIndex++;
|
}
|
|
setTable();
|
updateValue();
|
}
|
}
|