Fixed SD status reporting with new parser

This commit is contained in:
NeoTheFox 2015-03-08 01:50:05 +03:00
parent a83a677bfa
commit 0b25c5709d
5 changed files with 38 additions and 10 deletions

View File

@ -71,6 +71,7 @@ MainWindow::MainWindow(QWidget *parent) :
connect(this, SIGNAL(eepromReady()), this, SLOT(openEEPROMeditor()));
qRegisterMetaType<TemperatureReadings>("TemperatureReadings");
qRegisterMetaType<SDProgress>("SDProgress");
parser = new Parser();
parserThread = new QThread();
parser->moveToThread(parserThread);
@ -97,7 +98,7 @@ MainWindow::MainWindow(QWidget *parent) :
else sendTimer.setInterval(5);
sendTimer.start();
progressSDTimer.setInterval(3000);
progressSDTimer.setInterval(2000);
if(chekingSDStatus)progressSDTimer.start();
tempWarning.setInterval(10000);
@ -822,14 +823,15 @@ void MainWindow::selectSDfile(QString file)
ui->fileBox->setDisabled(false);
}
void MainWindow::updateSDStatus(double currentSDbytes)
void MainWindow::updateSDStatus(SDProgress p)
{
ui->filelines->setText(QString::number(sdBytes)
ui->filelines->setText(QString::number(p.progress)
+ QString("/")
+ QString::number(currentSDbytes)
+ QString::number(p.total)
+ QString(" bytes"));
ui->progressBar->setValue(currentSDbytes/sdBytes * 100);
if(currentSDbytes == sdBytes) sdprinting = false;
if(p.progress != 0) ui->progressBar->setValue(((double)p.progress/p.total) * 100);
else ui->progressBar->setValue(0);
if(p.total == p.progress) sdprinting = false;
}
void MainWindow::checkSDStatus()

View File

@ -91,7 +91,7 @@ private slots:
void initSDprinting(QStringList sdFiles);
void selectSDfile(QString file);
void checkSDStatus();
void updateSDStatus(double currentSDbytes);
void updateSDStatus(SDProgress p);
void requestEEPROMSettings();
void openEEPROMeditor();
void sendEEPROMsettings(QStringList changes);

View File

@ -57,7 +57,12 @@ void Parser::parse(QByteArray data)
}
if(data.startsWith("ok"))
emit recievedOkNum(data.split(' ').at(1).toInt());
{
QStringList tmp = QString(data).split(' ');
if(tmp.size() > 1)
emit recievedOkNum(tmp.at(1).toInt());
else emit recievedOkNum(0);
}
else if(data.startsWith("T:"))
{
TemperatureReadings r;
@ -79,6 +84,7 @@ void Parser::parse(QByteArray data)
else if(data.startsWith("start")) emit recievedStart();
else if(data.startsWith("SD pr"))
{
/*
QString tmp;
QString fragment = data.split(' ').at(3);
for(int i = 0; fragment.at(i) != '/'; ++i)
@ -86,6 +92,22 @@ void Parser::parse(QByteArray data)
tmp += fragment.at(i);
}
emit recievedSDUpdate(tmp.toDouble());
*/
SDProgress p;
QRegExp rxp("\\d+/\\d+");
QStringList tmp;
if(rxp.indexIn(data) != -1)
{
tmp = rxp.cap(0).split('/');
p.progress = tmp.at(0).toLong();
p.total = tmp.at(1).toLong();
}
else return;
emit recievedSDUpdate(p);
}
else if(data.startsWith("Not SD "));
else if(data.contains("Begin file list"))
@ -95,7 +117,6 @@ void Parser::parse(QByteArray data)
}
else if(data.contains("REPETIER")) emit recievedFirmware(Repetier);
else if(data.contains("MARLIN")) emit recievedFirmware(Marlin);
}
}

View File

@ -27,7 +27,7 @@ protected:
signals:
void recievedTemperature(TemperatureReadings);
void recievedSDUpdate(double);
void recievedSDUpdate(SDProgress);
void recievedEEPROMLine(QString);
void recievingEEPROMDone();
void recievedSDFilesList(QStringList);

View File

@ -22,6 +22,11 @@ namespace RepRaptor
int T, P;
QString S;
} repetierEEPROMline;
typedef struct
{
unsigned long int progress, total;
} SDProgress;
}
#endif // REPRAPTOR_H