//Misc Projects/PcMarlinInterface/MacroController.cpp |
---|
6,8 → 6,8 |
btnExport = new QPushButton("&Export"); |
btnImport = new QPushButton("&Import"); |
btnIncreaseMacro = new QPushButton("&Add"); |
btnDecreaseMacro = new QPushButton("&Remove"); |
btnAddMacro = new QPushButton("&Add"); |
btnRemoveMacro = new QPushButton("&Remove"); |
mainLayout = new QGridLayout(); |
16,11 → 16,11 |
lastKnownFilePath = "."; |
ioLayout = new QHBoxLayout(); |
ioLayout->addStretch(); |
ioLayout->addWidget(btnIncreaseMacro); |
ioLayout->addWidget(btnDecreaseMacro); |
ioLayout->addWidget(btnAddMacro); |
ioLayout->addWidget(btnRemoveMacro); |
ioLayout->addWidget(btnExport); |
ioLayout->addWidget(btnImport); |
ioLayout->addStretch(); |
mainLayout->addLayout(ioLayout, 0, 0, 1, 2); |
for (int i = 0; i < MACRO_DEFAULT_COUNT; i++) { |
28,16 → 28,12 |
} |
setLayout(mainLayout); |
this->resize(this->minimumSizeHint()); |
connect(btnIncreaseMacro, SIGNAL(clicked()), this, SLOT(Macro_AddEntry())); |
connect(btnDecreaseMacro, SIGNAL(clicked()), this, SLOT(Macro_RemoveEntry())); |
connect(btnAddMacro, SIGNAL(clicked()), this, SLOT(Macro_AddEntry())); |
connect(btnRemoveMacro, SIGNAL(clicked()), this, SLOT(Macro_RemoveEntry())); |
connect(btnExport, SIGNAL(clicked()), this, SLOT(Macro_WriteToFile())); |
connect(btnImport, SIGNAL(clicked()), this, SLOT(Macro_ReadFromFile())); |
connect(sigMapper, SIGNAL(mapped(QWidget*)), this, SLOT(Macro_InitTransmit(QWidget*))); |
setWindowTitle("Macro Settings"); |
setWindowIcon(QIcon(":/External/Resources/Icon_16.bmp")); |
} |
MacroController::~MacroController() |
45,6 → 41,11 |
} |
QSize MacroController::sizeHint() const |
{ |
return this->minimumSizeHint(); |
} |
void MacroController::Macro_EnableTransmit() |
{ |
connected = true; |
106,10 → 107,12 |
QLayoutItem *item = mainLayout->itemAtPosition(1, 1); |
int height = item->widget()->height() + mainLayout->verticalSpacing(); |
if (!this->isMaximized()) |
this->resize(this->width(), this->height() + height); |
btnDecreaseMacro->setEnabled(true); |
QDockWidget *parent = qobject_cast<QDockWidget*>(this->parent()); |
if (parent->isFloating()) |
parent->resize(parent->width(), parent->height() + height); |
btnRemoveMacro->setEnabled(true); |
} |
void MacroController::Macro_RemoveEntry() |
137,11 → 140,12 |
macroCount--; |
if (!this->isMaximized()) |
this->resize(this->width(), this->height() - height); |
QDockWidget *parent = qobject_cast<QDockWidget*>(this->parent()); |
if (parent->isFloating()) |
parent->resize(parent->width(), parent->height() - height); |
if (macroCount == 1) |
btnDecreaseMacro->setEnabled(false); |
btnRemoveMacro->setEnabled(false); |
} |
void MacroController::Macro_WriteToFile() |
//Misc Projects/PcMarlinInterface/MacroController.h |
---|
3,7 → 3,7 |
#include "GlobalDefines.h" |
#define MACRO_DEFAULT_COUNT 4 |
#define MACRO_DEFAULT_COUNT 6 |
class MacroController : public QWidget |
{ |
13,6 → 13,8 |
MacroController(QWidget *parent = 0); |
~MacroController(); |
QSize sizeHint() const; |
public slots: |
void Macro_EnableTransmit(void); |
void Macro_DisableTransmit(void); |
32,8 → 34,8 |
QPushButton *btnExport; |
QPushButton *btnImport; |
QPushButton *btnIncreaseMacro; |
QPushButton *btnDecreaseMacro; |
QPushButton *btnAddMacro; |
QPushButton *btnRemoveMacro; |
QList<QLineEdit*> macroNameList; |
QList<QTextEdit*> macroValueList; |
//Misc Projects/PcMarlinInterface/MainWindow.cpp |
---|
11,24 → 11,45 |
groupSerialInit = new QGroupBox("Initialization"); |
btnSerialConnect = new QPushButton("&Connect"); |
btnSerialRefresh = new QPushButton("&Refresh"); |
labelSerialPort = new QLabel("Port:"); |
labelSerialPort = new QLabel("Serial Port:"); |
labelSerialSpeed = new QLabel("Baud Rate:"); |
labelSerialDataBits = new QLabel("Data:"); |
labelSerialStopBits = new QLabel("Stop:"); |
labelSerialParity = new QLabel("Parity Bit:"); |
labelSerialFlowControl = new QLabel("Flow Control:"); |
cboxSerialPort = new QComboBox(); |
cboxSerialPort->setMinimumWidth(80); |
cboxSerialSpeed = new QComboBox(); |
cboxSerialSpeed->setEditable(true); |
cboxSerialSpeed->setValidator(new QIntValidator(0, 100000000, this)); |
cboxSerialDataBits = new QComboBox(); |
cboxSerialDataBits->setMaximumWidth(60); |
cboxSerialStopBits = new QComboBox(); |
cboxSerialStopBits->setMaximumWidth(60); |
cboxSerialParity = new QComboBox(); |
cboxSerialFlowControl = new QComboBox(); |
cboxSerialFlowControl->setMinimumWidth(70); |
QHBoxLayout *serialInitLayout = new QHBoxLayout(); |
serialInitLayout->addWidget(btnSerialConnect); |
serialInitLayout->addWidget(labelSerialPort); |
serialInitLayout->addWidget(cboxSerialPort); |
serialInitLayout->addWidget(labelSerialSpeed); |
serialInitLayout->addWidget(cboxSerialSpeed); |
serialInitLayout->addWidget(btnSerialRefresh); |
serialInitLayout->addStretch(); |
groupSerialInit->setLayout(serialInitLayout); |
QGridLayout *serialSettingsLayout = new QGridLayout(); |
serialSettingsLayout->addWidget(btnSerialConnect, 0, 0); |
serialSettingsLayout->addWidget(labelSerialPort, 0, 1); |
serialSettingsLayout->addWidget(cboxSerialPort, 0, 2); |
serialSettingsLayout->addWidget(labelSerialDataBits, 0, 3); |
serialSettingsLayout->addWidget(cboxSerialDataBits, 0, 4); |
serialSettingsLayout->addWidget(labelSerialParity, 0, 5); |
serialSettingsLayout->addWidget(cboxSerialParity, 0, 6); |
serialSettingsLayout->addWidget(btnSerialRefresh, 1, 0); |
serialSettingsLayout->addWidget(labelSerialSpeed, 1, 1); |
serialSettingsLayout->addWidget(cboxSerialSpeed, 1, 2); |
serialSettingsLayout->addWidget(labelSerialStopBits, 1, 3); |
serialSettingsLayout->addWidget(cboxSerialStopBits, 1, 4); |
serialSettingsLayout->addWidget(labelSerialFlowControl, 1, 5); |
serialSettingsLayout->addWidget(cboxSerialFlowControl, 1, 6); |
groupSerialInit->setLayout(serialSettingsLayout); |
groupSerialInit->setFixedSize(groupSerialInit->sizeHint()); |
// Serial data UI |
groupSerialData = new QGroupBox("Data"); |
textSerialData = new QTextEdit(); |
57,7 → 78,7 |
QHBoxLayout *macroLayout = new QHBoxLayout(); |
macroLayout->addWidget(btnMacro); |
groupMacro->setLayout(macroLayout); |
groupMacro->setFixedSize(groupMacro->sizeHint()); |
// groupMacro->setFixedSize(groupMacro->sizeHint()); |
// Main layout |
74,10 → 95,12 |
serialController = new SerialController(); |
serialController->moveToThread(serialThread); |
connect(this, SIGNAL(Serial_QueryParameters()), serialController, SLOT(Serial_QueryParameters())); |
connect(this, SIGNAL(Serial_Connect(QString,QString)), serialController, SLOT(Serial_Connect(QString,QString))); |
connect(this, SIGNAL(Serial_Connect(QString,QString,QString,QString,QString,QString)), |
serialController, SLOT(Serial_Connect(QString,QString,QString,QString,QString,QString))); |
connect(this, SIGNAL(Serial_Disconnect()), serialController, SLOT(Serial_Disconnect())); |
connect(this, SIGNAL(Serial_TransmitString(QString)), serialController, SLOT(Serial_TransmitString(QString))); |
connect(serialController, SIGNAL(Serial_UpdateParameters(QStringList,QStringList)), this, SLOT(Serial_UpdateParameters(QStringList,QStringList))); |
connect(serialController, SIGNAL(Serial_UpdateParameters(QStringList,QStringList,QStringList,QStringList,QStringList,QStringList)), |
this, SLOT(Serial_UpdateParameters(QStringList,QStringList,QStringList,QStringList,QStringList,QStringList))); |
connect(serialController, SIGNAL(Serial_ReceivedString(QString)), this, SLOT(Serial_ReceivedString(QString))); |
connect(serialController, SIGNAL(Serial_Connected()), this, SLOT(Serial_Connected())); |
connect(serialController, SIGNAL(Serial_Disconnected()), this, SLOT(Serial_Disconnected())); |
85,7 → 108,12 |
serialThread->start(); |
// Initialize macro widget |
macroController = new MacroController(); |
macroDockWidget = new QDockWidget("Macro Controller", this); |
macroController = new MacroController(macroDockWidget); |
macroDockWidget->setWidget(macroController); |
macroDockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); |
macroDockWidget->hide(); |
addDockWidget(Qt::RightDockWidgetArea, macroDockWidget); |
connect(macroController, SIGNAL(Macro_TransmitText(QString)), this, SLOT(Serial_PrepareTransmit(QString))); |
connect(serialController, SIGNAL(Serial_Connected()), macroController, SLOT(Macro_EnableTransmit())); |
connect(serialController, SIGNAL(Serial_Disconnected()), macroController, SLOT(Macro_DisableTransmit())); |
96,7 → 124,7 |
connect(btnSerialTransmit, SIGNAL(clicked()), this, SLOT(Serial_PrepareTransmit())); |
connect(textSerialTransmit, SIGNAL(returnPressed()), btnSerialTransmit, SIGNAL(clicked())); |
connect(btnSerialClear, SIGNAL(clicked()), this, SLOT(Serial_ClearBtn())); |
connect(btnMacro, SIGNAL(clicked()), this, SLOT(Macro_ShowWindowBtn())); |
connect(btnMacro, SIGNAL(clicked()), macroDockWidget->toggleViewAction(), SLOT(trigger())); |
emit Serial_QueryParameters(); |
Serial_Disconnected(); |
116,7 → 144,8 |
emit Serial_Disconnect(); |
} else { |
if (cboxSerialPort->currentText() != "" && cboxSerialSpeed->currentText() != "") { |
emit Serial_Connect(cboxSerialPort->currentText(), cboxSerialSpeed->currentText()); |
emit Serial_Connect(cboxSerialPort->currentText(), cboxSerialSpeed->currentText(), cboxSerialDataBits->currentText(), |
cboxSerialStopBits->currentText(), cboxSerialParity->currentText(), cboxSerialFlowControl->currentText()); |
} |
} |
} |
141,18 → 170,39 |
textSerialData->clear(); |
} |
void MainWindow::Macro_ShowWindowBtn() |
void MainWindow::Serial_UpdateParameters(QStringList ports, QStringList speeds, QStringList dataBits, |
QStringList stopBits, QStringList parity, QStringList flowControl) |
{ |
macroController->show(); |
} |
void MainWindow::Serial_UpdateParameters(QStringList ports, QStringList speeds) |
{ |
QString currPort = cboxSerialPort->currentText(); |
cboxSerialPort->clear(); |
cboxSerialPort->addItems(ports); |
if (currPort != "" && ports.contains(currPort)) |
cboxSerialPort->setCurrentText(currPort); |
QString currSpeed = cboxSerialSpeed->currentText(); |
cboxSerialSpeed->clear(); |
cboxSerialSpeed->addItems(speeds); |
if (currSpeed != "") cboxSerialSpeed->setCurrentText(currSpeed); |
int currData = cboxSerialDataBits->currentIndex(); |
cboxSerialDataBits->clear(); |
cboxSerialDataBits->addItems(dataBits); |
if (currData >= 0) cboxSerialDataBits->setCurrentIndex(currData); |
int currStop = cboxSerialStopBits->currentIndex(); |
cboxSerialStopBits->clear(); |
cboxSerialStopBits->addItems(stopBits); |
if (currStop >= 0) cboxSerialStopBits->setCurrentIndex(currStop); |
int currParity = cboxSerialParity->currentIndex(); |
cboxSerialParity->clear(); |
cboxSerialParity->addItems(parity); |
if (currParity >= 0) cboxSerialParity->setCurrentIndex(currParity); |
int currFlow = cboxSerialFlowControl->currentIndex(); |
cboxSerialFlowControl->clear(); |
cboxSerialFlowControl->addItems(flowControl); |
if (currFlow >= 0) cboxSerialFlowControl->setCurrentIndex(currFlow); |
} |
void MainWindow::Serial_ReceivedString(QString string) |
180,9 → 230,3 |
textSerialTransmit->setEnabled(false); |
btnSerialTransmit->setEnabled(false); |
} |
void MainWindow::closeEvent(QCloseEvent *event) |
{ |
macroController->close(); |
event->accept(); |
} |
//Misc Projects/PcMarlinInterface/MainWindow.h |
---|
14,7 → 14,8 |
~MainWindow(); |
public slots: |
void Serial_UpdateParameters(QStringList ports, QStringList speeds); |
void Serial_UpdateParameters(QStringList ports, QStringList speeds, QStringList dataBits, |
QStringList stopBits, QStringList parity, QStringList flowControl); |
void Serial_ReceivedString(QString string); |
void Serial_Connected(void); |
void Serial_Disconnected(void); |
23,16 → 24,14 |
void Serial_PrepareTransmit(QString string = ""); |
void Serial_ClearBtn(void); |
void Macro_ShowWindowBtn(void); |
signals: |
void Serial_QueryParameters(void); |
void Serial_Connect(QString port, QString speed); |
void Serial_Connect(QString port, QString speed, QString dataBits, |
QString stopBits, QString parity, QString flowControl); |
void Serial_Disconnect(void); |
void Serial_TransmitString(QString string); |
protected: |
void closeEvent(QCloseEvent *event); |
private: |
QWidget *centralWidget; |
46,8 → 45,16 |
QPushButton *btnSerialRefresh; |
QLabel *labelSerialPort; |
QLabel *labelSerialSpeed; |
QLabel *labelSerialDataBits; |
QLabel *labelSerialStopBits; |
QLabel *labelSerialParity; |
QLabel *labelSerialFlowControl; |
QComboBox *cboxSerialPort; |
QComboBox *cboxSerialSpeed; |
QComboBox *cboxSerialDataBits; |
QComboBox *cboxSerialStopBits; |
QComboBox *cboxSerialParity; |
QComboBox *cboxSerialFlowControl; |
QGroupBox *groupSerialData; |
QTextEdit *textSerialData; |
57,6 → 64,7 |
// Macro controller + UI |
MacroController *macroController; |
QDockWidget *macroDockWidget; |
QGroupBox *groupMacro; |
QPushButton *btnMacro; |
//Misc Projects/PcMarlinInterface/SerialController.cpp |
---|
4,6 → 4,10 |
{ |
connected = false; |
speeds << "9600" << "19200" << "38400" << "57600" << "115200" << "230400" << "250000"; |
dataBits << "8 Bits" << "7 Bits" << "6 Bits" << "5 Bits"; |
stopBits << "1 Bit" << "1.5 Bits" << "2 Bits"; |
parity << "None" << "Even" << "Odd" << "Space" << "Mark"; |
flowControl << "None" << "Hardware" << "Software"; |
bufferInIndex = 0; |
bufferInOverflow = false; |
} |
21,10 → 25,11 |
for (int i = 0; i < portsList.size(); i++) { |
ports.append(portsList[i].portName()); |
} |
emit Serial_UpdateParameters(ports, speeds); |
emit Serial_UpdateParameters(ports, speeds, dataBits, stopBits, parity, flowControl); |
} |
void SerialController::Serial_Connect(QString port, QString speed) |
void SerialController::Serial_Connect(QString port, QString speed, QString dataBits, |
QString stopBits, QString parity, QString flowControl) |
{ |
if (!connected) { |
serialPort = new QSerialPort(); |
39,15 → 44,45 |
int baud = speed.toInt(&ok); |
if (ok) serialPort->setBaudRate(baud); |
serialPort->setDataBits(QSerialPort::Data8); |
serialPort->setParity(QSerialPort::NoParity); |
// serialPort->setFlowControl(QSerialPort::HardwareControl); |
serialPort->setStopBits(QSerialPort::OneStop); |
if (dataBits == "5 Bits") |
serialPort->setDataBits(QSerialPort::Data5); |
else if (dataBits == "6 Bits") |
serialPort->setDataBits(QSerialPort::Data6); |
else if (dataBits == "7 Bits") |
serialPort->setDataBits(QSerialPort::Data7); |
else |
serialPort->setDataBits(QSerialPort::Data8); |
if (stopBits == "1.5 Bits") |
serialPort->setStopBits(QSerialPort::OneAndHalfStop); |
else if (stopBits == "2 Bits") |
serialPort->setStopBits(QSerialPort::TwoStop); |
else |
serialPort->setStopBits(QSerialPort::OneStop); |
if (parity == "Even") |
serialPort->setParity(QSerialPort::EvenParity); |
else if (parity == "Odd") |
serialPort->setParity(QSerialPort::OddParity); |
else if (parity == "Space") |
serialPort->setParity(QSerialPort::SpaceParity); |
else if (parity == "Mark") |
serialPort->setParity(QSerialPort::MarkParity); |
else |
serialPort->setParity(QSerialPort::NoParity); |
if (flowControl == "Hardware") |
serialPort->setFlowControl(QSerialPort::HardwareControl); |
else if (flowControl == "Software") |
serialPort->setFlowControl(QSerialPort::SoftwareControl); |
else |
serialPort->setFlowControl(QSerialPort::NoFlowControl); |
// See http://umforum.ultimaker.com/index.php?/topic/5886-um2-controller-resetreboot-when-opening-usb-port-on-linux/ |
serialPort->setDataTerminalReady(1); |
if (ok) emit Serial_Connected(); |
else Serial_Disconnect(); |
} |
} |
} |
//Misc Projects/PcMarlinInterface/SerialController.h |
---|
18,13 → 18,15 |
public slots: |
void Serial_QueryParameters(void); |
void Serial_Connect(QString port, QString speed); |
void Serial_Connect(QString port, QString speed, QString dataBits, |
QString stopBits, QString parity, QString flowControl); |
void Serial_Disconnect(void); |
void Serial_TransmitString(QString string); |
void Serial_ProcessIncomingData(void); |
signals: |
void Serial_UpdateParameters(QStringList ports, QStringList speeds); |
void Serial_UpdateParameters(QStringList ports, QStringList speeds, QStringList dataBits, |
QStringList stopBits, QStringList parity, QStringList flowControl); |
void Serial_ReceivedString(QString string); |
void Serial_Connected(void); |
void Serial_Disconnected(void); |
32,6 → 34,10 |
private: |
QSerialPort *serialPort; |
QStringList speeds; |
QStringList dataBits; |
QStringList stopBits; |
QStringList parity; |
QStringList flowControl; |
char bufferIn[SERIAL_BUFFER_SIZE]; |
int bufferInIndex; |