Subversion Repositories Code-Repo

Compare Revisions

Ignore whitespace Rev 347 → Rev 348

/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;