Bugfixes and cleanup
This commit is contained in:
parent
b4ce73c959
commit
228d7abd78
@ -50,7 +50,6 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||||||
chekingSDStatus = settings.value("core/checksdstatus", 1).toBool();
|
chekingSDStatus = settings.value("core/checksdstatus", 1).toBool();
|
||||||
firmware = settings.value("printer/firmware", OtherFirmware).toInt();
|
firmware = settings.value("printer/firmware", OtherFirmware).toInt();
|
||||||
statusTimer.setInterval(settings.value("core/statusinterval", 3000).toInt());
|
statusTimer.setInterval(settings.value("core/statusinterval", 3000).toInt());
|
||||||
sendTimer.setInterval(settings.value("core/senderinterval", 2).toInt());
|
|
||||||
int size = settings.beginReadArray("user/recentfiles");
|
int size = settings.beginReadArray("user/recentfiles");
|
||||||
for(int i = 0; i < size; ++i)
|
for(int i = 0; i < size; ++i)
|
||||||
{
|
{
|
||||||
@ -78,10 +77,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||||||
serialupdate();
|
serialupdate();
|
||||||
|
|
||||||
//Internal signal-slots
|
//Internal signal-slots
|
||||||
//connect(&printer, SIGNAL(error(QSerialPort::SerialPortError)), this, SLOT(serialError(QSerialPort::SerialPortError)));
|
|
||||||
//connect(&printer, SIGNAL(readyRead()), this, SLOT(readSerial()));
|
|
||||||
connect(&statusTimer, SIGNAL(timeout()), this, SLOT(checkStatus()));
|
connect(&statusTimer, SIGNAL(timeout()), this, SLOT(checkStatus()));
|
||||||
connect(&sendTimer, SIGNAL(timeout()), this, SLOT(sendNext()));
|
|
||||||
connect(&progressSDTimer, SIGNAL(timeout()), this, SLOT(checkSDStatus()));
|
connect(&progressSDTimer, SIGNAL(timeout()), this, SLOT(checkSDStatus()));
|
||||||
connect(this, SIGNAL(eepromReady()), this, SLOT(openEEPROMeditor()));
|
connect(this, SIGNAL(eepromReady()), this, SLOT(openEEPROMeditor()));
|
||||||
|
|
||||||
@ -89,22 +85,18 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||||||
qRegisterMetaType<TemperatureReadings>("TemperatureReadings");
|
qRegisterMetaType<TemperatureReadings>("TemperatureReadings");
|
||||||
qRegisterMetaType<SDProgress>("SDProgress");
|
qRegisterMetaType<SDProgress>("SDProgress");
|
||||||
parserWorker = new Parser();
|
parserWorker = new Parser();
|
||||||
parserThread = new QThread();
|
parserThread = new QThread(this);
|
||||||
parserWorker->moveToThread(parserThread);
|
parserWorker->moveToThread(parserThread);
|
||||||
connect(parserThread, &QThread::finished, parserWorker, &QObject::deleteLater);
|
connect(parserThread, &QThread::finished, parserWorker, &QObject::deleteLater);
|
||||||
connect(this, &MainWindow::recievedData, parserWorker, &Parser::parse);
|
connect(this, &MainWindow::recievedData, parserWorker, &Parser::parse);
|
||||||
connect(this, &MainWindow::startedReadingEEPROM, parserWorker, &Parser::setEEPROMReadingMode);
|
connect(this, &MainWindow::startedReadingEEPROM, parserWorker, &Parser::setEEPROMReadingMode);
|
||||||
connect(parserWorker, &Parser::recievedTemperature, this, &MainWindow::updateTemperature);
|
connect(parserWorker, &Parser::recievedTemperature, this, &MainWindow::updateTemperature);
|
||||||
//connect(parserWorker, &Parser::recievedOkNum, this, &MainWindow::recievedOkNum);
|
|
||||||
//connect(parserWorker, &Parser::recievedOkWait, this, &MainWindow::recievedWait);
|
|
||||||
connect(parserWorker, &Parser::recievedSDFilesList, this, &MainWindow::initSDprinting);
|
connect(parserWorker, &Parser::recievedSDFilesList, this, &MainWindow::initSDprinting);
|
||||||
connect(parserWorker, &Parser::recievedEEPROMLine, this, &MainWindow::EEPROMSettingRecieved);
|
connect(parserWorker, &Parser::recievedEEPROMLine, this, &MainWindow::EEPROMSettingRecieved);
|
||||||
connect(parserWorker, &Parser::recievingEEPROMDone, this, &MainWindow::openEEPROMeditor);
|
connect(parserWorker, &Parser::recievingEEPROMDone, this, &MainWindow::openEEPROMeditor);
|
||||||
connect(parserWorker, &Parser::recievedError, this, &MainWindow::recievedError);
|
connect(parserWorker, &Parser::recievedError, this, &MainWindow::recievedError);
|
||||||
connect(parserWorker, &Parser::recievedSDDone, this, &MainWindow::recievedSDDone);
|
connect(parserWorker, &Parser::recievedSDDone, this, &MainWindow::recievedSDDone);
|
||||||
//connect(parser, &Parser::recievedResend, this, &MainWindow::recievedResend);
|
|
||||||
connect(parserWorker, &Parser::recievedSDUpdate, this, &MainWindow::updateSDStatus);
|
connect(parserWorker, &Parser::recievedSDUpdate, this, &MainWindow::updateSDStatus);
|
||||||
//connect(parser, &Parser::recievedStart, this, &MainWindow::recievedStart);
|
|
||||||
parserThread->start();
|
parserThread->start();
|
||||||
|
|
||||||
//Sender thread signal-slots and init
|
//Sender thread signal-slots and init
|
||||||
@ -113,7 +105,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||||||
qRegisterMetaType<FileProgress>("FileProgress");
|
qRegisterMetaType<FileProgress>("FileProgress");
|
||||||
qRegisterMetaType<QSerialPort::SerialPortError>("QSerialPort::SerialPortError");
|
qRegisterMetaType<QSerialPort::SerialPortError>("QSerialPort::SerialPortError");
|
||||||
senderWorker = new Sender();
|
senderWorker = new Sender();
|
||||||
senderThread = new QThread();
|
senderThread = new QThread(this);
|
||||||
senderWorker->moveToThread(senderThread);
|
senderWorker->moveToThread(senderThread);
|
||||||
connect(senderThread, &QThread::finished, senderWorker, &QObject::deleteLater);
|
connect(senderThread, &QThread::finished, senderWorker, &QObject::deleteLater);
|
||||||
connect(parserWorker, &Parser::recievedOkNum, senderWorker, &Sender::recievedOkNum);
|
connect(parserWorker, &Parser::recievedOkNum, senderWorker, &Sender::recievedOkNum);
|
||||||
@ -165,7 +157,6 @@ MainWindow::~MainWindow()
|
|||||||
|
|
||||||
//Cleanup what is left
|
//Cleanup what is left
|
||||||
if(gfile.isOpen()) gfile.close();
|
if(gfile.isOpen()) gfile.close();
|
||||||
if(printer.isOpen()) printer.close();
|
|
||||||
parserThread->quit();
|
parserThread->quit();
|
||||||
parserThread->wait();
|
parserThread->wait();
|
||||||
senderThread->quit();
|
senderThread->quit();
|
||||||
@ -216,33 +207,6 @@ void MainWindow::parseFile(QString filename)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MainWindow::sendLine(QString line)
|
|
||||||
{
|
|
||||||
if(printer.isOpen())
|
|
||||||
{
|
|
||||||
if(sendingChecksum)
|
|
||||||
{
|
|
||||||
if(line.contains("M110")) totalLineNum = 0;
|
|
||||||
|
|
||||||
//Checksum algorithm from RepRap wiki
|
|
||||||
line = "N"+QString::number(totalLineNum)+line+"*";
|
|
||||||
int cs = 0;
|
|
||||||
for(int i = 0; line.at(i) != '*'; i++) cs = cs ^ line.at(i).toLatin1();
|
|
||||||
cs &= 0xff;
|
|
||||||
line += QString::number(cs);
|
|
||||||
totalLineNum++;
|
|
||||||
}
|
|
||||||
if(printer.write(line.toUtf8()+'\n'))
|
|
||||||
{
|
|
||||||
if(echo) printMsg(line + '\n');
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else return false;
|
|
||||||
}
|
|
||||||
else return false;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::serialupdate()
|
void MainWindow::serialupdate()
|
||||||
{
|
{
|
||||||
ui->serialBox->clear();
|
ui->serialBox->clear();
|
||||||
@ -580,52 +544,6 @@ void MainWindow::printMsg(QString text)
|
|||||||
ui->terminal->setTextCursor(cursor);
|
ui->terminal->setTextCursor(cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::sendNext()
|
|
||||||
{
|
|
||||||
if(printer.isWritable())
|
|
||||||
{
|
|
||||||
if(resendLineNum != -1)
|
|
||||||
{
|
|
||||||
if(gcode.isEmpty()) sendLine("M110 N0");
|
|
||||||
else sendLine(gcode.at(resendLineNum));
|
|
||||||
resendLineNum = -1;
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(!userCommands.isEmpty() && readyRecieve) //Inject user command
|
|
||||||
{
|
|
||||||
sendLine(userCommands.dequeue());
|
|
||||||
readyRecieve = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if(sending && !paused && readyRecieve && !sdprinting) //Send line of gcode
|
|
||||||
{
|
|
||||||
if(currentLine >= gcode.size()) //check if we are at the end of array
|
|
||||||
{
|
|
||||||
sending = false;
|
|
||||||
currentLine = 0;
|
|
||||||
ui->sendBtn->setText("Send");
|
|
||||||
ui->pauseBtn->setDisabled(true);
|
|
||||||
ui->filelines->setText(QString::number(gcode.size())
|
|
||||||
+ QString("/")
|
|
||||||
+ QString::number(currentLine)
|
|
||||||
+ QString(" Lines"));
|
|
||||||
if(sendingChecksum) emit injectCommand("M110 N0");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
sendLine(gcode.at(currentLine));
|
|
||||||
currentLine++;
|
|
||||||
readyRecieve=false;
|
|
||||||
|
|
||||||
ui->filelines->setText(QString::number(gcode.size())
|
|
||||||
+ QString("/")
|
|
||||||
+ QString::number(currentLine)
|
|
||||||
+ QString(" Lines"));
|
|
||||||
ui->progressBar->setValue(((float)currentLine/gcode.size()) * 100);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::checkStatus()
|
void MainWindow::checkStatus()
|
||||||
{
|
{
|
||||||
if(checkingTemperature
|
if(checkingTemperature
|
||||||
@ -676,7 +594,7 @@ void MainWindow::serialError(QSerialPort::SerialPortError error)
|
|||||||
if(error == QSerialPort::NoError) return;
|
if(error == QSerialPort::NoError) return;
|
||||||
if(error == QSerialPort::NotOpenError) return; //this error is internal
|
if(error == QSerialPort::NotOpenError) return; //this error is internal
|
||||||
|
|
||||||
if(printer.isOpen()) printer.close();
|
emit closePort();
|
||||||
|
|
||||||
if(sending) paused = true;
|
if(sending) paused = true;
|
||||||
emit pause(paused);
|
emit pause(paused);
|
||||||
|
|||||||
@ -46,7 +46,6 @@ protected:
|
|||||||
QFile gfile;
|
QFile gfile;
|
||||||
QVector<QString> gcode;
|
QVector<QString> gcode;
|
||||||
QQueue <QString> userCommands;
|
QQueue <QString> userCommands;
|
||||||
QTimer sendTimer;
|
|
||||||
QTimer progressSDTimer;
|
QTimer progressSDTimer;
|
||||||
QTimer statusTimer;
|
QTimer statusTimer;
|
||||||
QElapsedTimer sinceLastTemp;
|
QElapsedTimer sinceLastTemp;
|
||||||
@ -62,7 +61,6 @@ protected:
|
|||||||
private:
|
private:
|
||||||
Ui::MainWindow *ui;
|
Ui::MainWindow *ui;
|
||||||
|
|
||||||
QSerialPort printer;
|
|
||||||
QSerialPortInfo printerinfo;
|
QSerialPortInfo printerinfo;
|
||||||
bool opened;
|
bool opened;
|
||||||
bool firstrun;
|
bool firstrun;
|
||||||
@ -89,11 +87,9 @@ private slots:
|
|||||||
void open();
|
void open();
|
||||||
void serialconnect();
|
void serialconnect();
|
||||||
void serialupdate();
|
void serialupdate();
|
||||||
bool sendLine(QString line);
|
|
||||||
void readSerial(QByteArray data);
|
void readSerial(QByteArray data);
|
||||||
void printMsg(QString text);
|
void printMsg(QString text);
|
||||||
void printMsg(const char* text);
|
void printMsg(const char* text);
|
||||||
void sendNext();
|
|
||||||
void checkStatus();
|
void checkStatus();
|
||||||
void updateRecent();
|
void updateRecent();
|
||||||
void initSDprinting(QStringList sdFiles);
|
void initSDprinting(QStringList sdFiles);
|
||||||
|
|||||||
@ -82,7 +82,7 @@ void Parser::parse(QByteArray data)
|
|||||||
}
|
}
|
||||||
//else if(data.startsWith("wait")) emit recievedOkWait();
|
//else if(data.startsWith("wait")) emit recievedOkWait();
|
||||||
else if(data.startsWith("rs") || data.toLower().startsWith("resend"))
|
else if(data.startsWith("rs") || data.toLower().startsWith("resend"))
|
||||||
emit recievedResend(data.split(' ').at(1).toInt());
|
emit recievedResend(data.split(':').at(1).toInt());
|
||||||
else if(data.startsWith("!!")) emit recievedError();
|
else if(data.startsWith("!!")) emit recievedError();
|
||||||
else if(data.startsWith("Done")) emit recievedSDDone();
|
else if(data.startsWith("Done")) emit recievedSDDone();
|
||||||
else if(data.startsWith("start")) emit recievedStart();
|
else if(data.startsWith("start")) emit recievedStart();
|
||||||
|
|||||||
@ -189,6 +189,7 @@ void Sender::recievedData()
|
|||||||
if(printer->canReadLine())
|
if(printer->canReadLine())
|
||||||
{
|
{
|
||||||
QByteArray data = printer->readLine();
|
QByteArray data = printer->readLine();
|
||||||
|
if(data == "") return;
|
||||||
emit dataRecieved(data);
|
emit dataRecieved(data);
|
||||||
if(data.startsWith("ok") || data.startsWith("wa")) readyRecieve=true;
|
if(data.startsWith("ok") || data.startsWith("wa")) readyRecieve=true;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user