Skip to content
This repository has been archived by the owner. It is now read-only.

Commit

Permalink
add microtome and syringe
Browse files Browse the repository at this point in the history
  • Loading branch information
MPIBR-tushevg committed Dec 21, 2018
1 parent c9b6c99 commit 037e8a9
Show file tree
Hide file tree
Showing 7 changed files with 215 additions and 9 deletions.
8 changes: 6 additions & 2 deletions BrainATUMtome/BrainATUMtome.pro
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,16 @@ SOURCES += \
main.cpp \
mainwindow.cpp \
eventlog.cpp \
epos.cpp
epos.cpp \
microtome.cpp \
syringe.cpp

HEADERS += \
mainwindow.h \
eventlog.h \
epos.h
epos.h \
microtome.h \
syringe.h

FORMS += \
mainwindow.ui
Expand Down
82 changes: 79 additions & 3 deletions BrainATUMtome/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,19 @@ MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
m_driverEpos(nullptr),
m_driverMicrotome(nullptr),
m_driverSyringe(nullptr),
m_epos_direction_lower(0),
m_epos_direction_upper(0),
m_microtome_cuttingSpeed(0),
m_microtome_returnSpeed(0),
m_microtome_feedStep(0),
m_microtome_iscutting(false),
m_microtome_sections(0),
m_microtome_advanceRemaining(0)
{
ui->setupUi(this);

configure_epos();
configure_microtome();
configure_syringe();
}

MainWindow::~MainWindow()
Expand Down Expand Up @@ -47,6 +49,26 @@ void MainWindow::configure_epos()
}


void MainWindow::configure_microtome()
{
m_driverMicrotome = new Microtome(this);
connect(m_driverMicrotome, &Microtome::log, ui->widget_board, &EventLog::on_log);
connect(this, &MainWindow::uirequest_microtome_cuttingMotor, m_driverMicrotome, &Microtome::on_uirequest_cuttingMotor);
connect(this, &MainWindow::uirequest_microtome_cuttingSpeed, m_driverMicrotome, &Microtome::on_uirequest_cuttingSpeed);
connect(this, &MainWindow::uirequest_microtome_returnSpeed, m_driverMicrotome, &Microtome::on_uirequest_returnSpeed);
connect(this, &MainWindow::uirequest_microtome_feedStep, m_driverMicrotome, &Microtome::on_uirequest_feedStep);
}


void MainWindow::configure_syringe()
{
m_driverSyringe = new Syringe(this);
connect(m_driverSyringe, &Syringe::log, ui->widget_board, &EventLog::on_log);
connect(this, &MainWindow::uirequest_syringe_pump, m_driverSyringe, &Syringe::on_uirequest_pump);
connect(this, &MainWindow::uirequest_syringe_auto, m_driverSyringe, &Syringe::on_uirequest_auto);
}


void MainWindow::on_radioButtonsEposLowerToggled(bool checked)
{
if (!checked)
Expand Down Expand Up @@ -185,3 +207,57 @@ void MainWindow::enable_epos_radioButtons(bool state)
ui->radioButton_epos_tension_off->setEnabled(state);
ui->radioButton_epos_tension_on->setEnabled(state);
}


void MainWindow::on_spinBox_microtome_cuttingSpeed_editingFinished()
{
emit uirequest_microtome_cuttingSpeed(ui->spinBox_microtome_cuttingSpeed->value());
}


void MainWindow::on_comboBox_microtome_returnSpeed_activated(int index)
{
QVector<int> returnSpeed = {10000, 30000, 50000};
emit uirequest_microtome_returnSpeed(returnSpeed[index]);
}


void MainWindow::on_spinBox_microtome_feedStep_editingFinished()
{
emit uirequest_microtome_feedStep(ui->spinBox_microtome_feedStep->value());
}


void MainWindow::on_pushButton_microtome_cut_clicked()
{
if (m_microtome_iscutting)
return;

m_microtome_iscutting = true;
emit ui->spinBox_microtome_cuttingSpeed->editingFinished();
emit ui->comboBox_microtome_returnSpeed->activated(ui->comboBox_microtome_returnSpeed->currentIndex());
emit ui->spinBox_microtome_feedStep->editingFinished();
emit uirequest_microtome_cuttingMotor(m_microtome_iscutting);
}


void MainWindow::on_pushButton_microtome_stop_clicked()
{
if (!m_microtome_iscutting)
return;

m_microtome_iscutting = false;
emit uirequest_microtome_cuttingMotor(m_microtome_iscutting);
}


void MainWindow::on_pushButton_syringe_pump_clicked()
{
emit uirequest_syringe_pump();
}


void MainWindow::on_checkBox_syringe_auto_toggled(bool checked)
{
emit uirequest_syringe_auto(checked);
}
30 changes: 26 additions & 4 deletions BrainATUMtome/mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

#include "eventlog.h"
#include "epos.h"
#include "microtome.h"
#include "syringe.h"

namespace Ui {
class MainWindow;
Expand All @@ -23,17 +25,19 @@ class MainWindow : public QMainWindow
Ui::MainWindow *ui;

Epos *m_driverEpos;
Microtome *m_driverMicrotome;
Syringe *m_driverSyringe;

int m_epos_direction_lower;
int m_epos_direction_upper;
int m_microtome_cuttingSpeed;
int m_microtome_returnSpeed;
int m_microtome_feedStep;
bool m_microtome_iscutting;
int m_microtome_sections;
int m_microtome_advanceRemaining;

void configure_epos();
void enable_epos_radioButtons(bool state);
void configure_epos();
void configure_microtome();
void configure_syringe();

private slots:
void on_radioButtonsEposLowerToggled(bool checked);
Expand All @@ -43,9 +47,27 @@ private slots:
void on_spinBox_epos_lower_velocity_editingFinished();
void on_spinBox_epos_upper_velocity_editingFinished();

void on_spinBox_microtome_cuttingSpeed_editingFinished();
void on_comboBox_microtome_returnSpeed_activated(int index);
void on_spinBox_microtome_feedStep_editingFinished();
void on_pushButton_microtome_cut_clicked();
void on_pushButton_microtome_stop_clicked();

void on_pushButton_syringe_pump_clicked();

void on_checkBox_syringe_auto_toggled(bool checked);

signals:
void uirequest_epos_velocity(int motorid, int velocity);
void uirequest_epos_tension(bool state);

void uirequest_microtome_cuttingMotor(bool state);
void uirequest_microtome_cuttingSpeed(int cuttingSpeed);
void uirequest_microtome_returnSpeed(int returnSpeed);
void uirequest_microtome_feedStep(int feedStep);

void uirequest_syringe_pump();
void uirequest_syringe_auto(bool state);
};

#endif // MAINWINDOW_H
31 changes: 31 additions & 0 deletions BrainATUMtome/microtome.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#include "microtome.h"

Microtome::Microtome(QObject *parent) : QObject(parent)
{

}


void Microtome::on_uirequest_cuttingMotor(bool state)
{
QString textState = (state) ? "on" : "off";
emit log(EventLogType::Notify, "Microtome :: cutting motor is " + textState);
}


void Microtome::on_uirequest_cuttingSpeed(int cuttingSpeed)
{
emit log(EventLogType::Notify, "Microtome :: cutting speed is " + QString::number(cuttingSpeed));
}


void Microtome::on_uirequest_returnSpeed(int returnSpeed)
{
emit log(EventLogType::Notify, "Microtome :: return speed is " + QString::number(returnSpeed));
}


void Microtome::on_uirequest_feedStep(int feedStep)
{
emit log(EventLogType::Notify, "Microtome :: feed step is " + QString::number(feedStep));
}
26 changes: 26 additions & 0 deletions BrainATUMtome/microtome.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#ifndef MICROTOME_H
#define MICROTOME_H

#include <QObject>

#include "eventlog.h"

class Microtome : public QObject
{
Q_OBJECT

public:
explicit Microtome(QObject *parent = nullptr);

public slots:
void on_uirequest_cuttingMotor(bool state);
void on_uirequest_cuttingSpeed(int cuttingSpeed);
void on_uirequest_returnSpeed(int returnSpeed);
void on_uirequest_feedStep(int feedStep);

signals:
void log(EventLogType type, const QString &message);

};

#endif // MICROTOME_H
21 changes: 21 additions & 0 deletions BrainATUMtome/syringe.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#include "syringe.h"

Syringe::Syringe(QObject *parent) : QObject(parent),
m_auto(false)
{

}


void Syringe::on_uirequest_pump()
{
emit log(EventLogType::Notify, "Syringe :: pump");
}


void Syringe::on_uirequest_auto(bool state)
{
QString textState = (state) ? "on" : "off";
emit log(EventLogType::Notify, "Syringe :: auto pumping is " + textState);
m_auto = state;
}
26 changes: 26 additions & 0 deletions BrainATUMtome/syringe.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#ifndef SYRINGE_H
#define SYRINGE_H

#include <QObject>

#include "eventlog.h"

class Syringe : public QObject
{
Q_OBJECT

public:
explicit Syringe(QObject *parent = nullptr);

private:
bool m_auto;

signals:
void log(EventLogType type, const QString &message);

public slots:
void on_uirequest_pump();
void on_uirequest_auto(bool state);
};

#endif // SYRINGE_H

0 comments on commit 037e8a9

Please sign in to comment.