EtherCAT Control Framework v0.9
Implementation of EtherCAT protocol using IgH EtherCAT library for robot controller.
MainWindow Class Reference

#include <main_window.hpp>

Inheritance diagram for MainWindow:
[legend]
Collaboration diagram for MainWindow:
[legend]

Public Member Functions

 MainWindow (int argc, char **argv, QWidget *parent=nullptr)
 
 ~MainWindow ()
 

Private Slots

void UpdateGUI ()
 
void ResetControlButtonValues (unsigned char &button_val)
 
void on_b_enable_cyclic_pos_clicked ()
 
void on_b_enable_cylic_vel_clicked ()
 
void on_b_enable_vel_clicked ()
 
void on_b_enable_pos_clicked ()
 
void on_b_init_ecat_clicked ()
 
void on_b_reinit_ecat_clicked ()
 
void on_b_enable_drives_clicked ()
 
void on_b_disable_drives_clicked ()
 
void on_b_enter_cyclic_pdo_clicked ()
 
void on_b_stop_cyclic_pdo_clicked ()
 
void on_b_emergency_mode_clicked ()
 
void on_b_send_clicked ()
 

Private Member Functions

void rosSpinThread ()
 To use ROS2 spinining functionality in our specific thread. More...
 
void ShowAllMotorStatus ()
 Shows motor status in GUI. More...
 
void ShowComStatus ()
 Shows communication status in GUI. More...
 
void ShowEmergencyStatus ()
 Shows emergency button and switch status in GUI. More...
 
QString GetReadableStatusWord (int index)
 Reads status word and turns it to readable string format. More...
 
void CallUnconfiguredStateUI ()
 This function will update UI style (enable-disable buttons) based on unconfigured state style. More...
 
void CallInactiveStateUI ()
 This function will update UI style (enable-disable buttons) based on inactive state style. More...
 
void CallActiveStateUI ()
 This function will update UI style (enable-disable buttons) based on active state style. More...
 
void SetDisabledStyleSheet (QPushButton *button)
 Sets GUI appearance for disabled buttons. More...
 
void SetEnabledStyleSheetSDO (QPushButton *button)
 Sets GUI appearance for enabled buttons. More...
 
void SetEnabledStyleSheetPDO (QPushButton *button)
 
void ShowOperationMode ()
 
QString GetDriveErrorMessage (const int &err_code)
 
int GetDriveStates (const int &statusWord)
 timer to update GUI in specific intervals.In this case 25ms. More...
 

Private Attributes

Ui::MainWindow * ui
 
int argc_
 
char ** argv_
 
const QString blue_style_sheet_
 
const QString sdo_style_sheet_
 
const QString red_style_sheet
 
QTimer my_timer
 
std::shared_ptr< GuiNodegui_node_
 
VideoCaptureopencv_video_cap
 
std::thread ros_spin_thread_
 
uint8_t em_state_ =0
 

Constructor & Destructor Documentation

◆ MainWindow()

MainWindow::MainWindow ( int  argc,
char **  argv,
QWidget *  parent = nullptr 
)

◆ ~MainWindow()

MainWindow::~MainWindow ( )

Member Function Documentation

◆ CallActiveStateUI()

void MainWindow::CallActiveStateUI ( )
private

This function will update UI style (enable-disable buttons) based on active state style.

Note
In this state only Emergency Mode and Stop Cyclic Exchange buttons will be enabled.

◆ CallInactiveStateUI()

void MainWindow::CallInactiveStateUI ( )
private

This function will update UI style (enable-disable buttons) based on inactive state style.

Note
In this state state only Initialize/Reinitialize Ethercat buttons and STOP Cyclic Exchange button will be disabled other will be enabled.

◆ CallUnconfiguredStateUI()

void MainWindow::CallUnconfiguredStateUI ( )
private

This function will update UI style (enable-disable buttons) based on unconfigured state style.

Note
In unconfigured state only Initialize Ethercat button will be enabled.
That this state naming comes from lifecycle node in ROS2.

◆ GetDriveErrorMessage()

QString MainWindow::GetDriveErrorMessage ( const int &  err_code)
private

◆ GetDriveStates()

int MainWindow::GetDriveStates ( const int &  statusWord)
private

timer to update GUI in specific intervals.In this case 25ms.

◆ GetReadableStatusWord()

QString MainWindow::GetReadableStatusWord ( int  index)
private

Reads status word and turns it to readable string format.

Parameters
indexslave index
Returns
QString readable status word format.

◆ on_b_disable_drives_clicked

void MainWindow::on_b_disable_drives_clicked ( )
privateslot

◆ on_b_emergency_mode_clicked

void MainWindow::on_b_emergency_mode_clicked ( )
privateslot

◆ on_b_enable_cyclic_pos_clicked

void MainWindow::on_b_enable_cyclic_pos_clicked ( )
privateslot

◆ on_b_enable_cylic_vel_clicked

void MainWindow::on_b_enable_cylic_vel_clicked ( )
privateslot

◆ on_b_enable_drives_clicked

void MainWindow::on_b_enable_drives_clicked ( )
privateslot

◆ on_b_enable_pos_clicked

void MainWindow::on_b_enable_pos_clicked ( )
privateslot

◆ on_b_enable_vel_clicked

void MainWindow::on_b_enable_vel_clicked ( )
privateslot

◆ on_b_enter_cyclic_pdo_clicked

void MainWindow::on_b_enter_cyclic_pdo_clicked ( )
privateslot

◆ on_b_init_ecat_clicked

void MainWindow::on_b_init_ecat_clicked ( )
privateslot

◆ on_b_reinit_ecat_clicked

void MainWindow::on_b_reinit_ecat_clicked ( )
privateslot

◆ on_b_send_clicked

void MainWindow::on_b_send_clicked ( )
privateslot

◆ on_b_stop_cyclic_pdo_clicked

void MainWindow::on_b_stop_cyclic_pdo_clicked ( )
privateslot

◆ ResetControlButtonValues

void MainWindow::ResetControlButtonValues ( unsigned char &  button_val)
privateslot

◆ rosSpinThread()

void MainWindow::rosSpinThread ( )
private

To use ROS2 spinining functionality in our specific thread.

◆ SetDisabledStyleSheet()

void MainWindow::SetDisabledStyleSheet ( QPushButton *  button)
private

Sets GUI appearance for disabled buttons.

◆ SetEnabledStyleSheetPDO()

void MainWindow::SetEnabledStyleSheetPDO ( QPushButton *  button)
private

◆ SetEnabledStyleSheetSDO()

void MainWindow::SetEnabledStyleSheetSDO ( QPushButton *  button)
private

Sets GUI appearance for enabled buttons.

◆ ShowAllMotorStatus()

void MainWindow::ShowAllMotorStatus ( )
private

Shows motor status in GUI.

◆ ShowComStatus()

void MainWindow::ShowComStatus ( )
private

Shows communication status in GUI.

◆ ShowEmergencyStatus()

void MainWindow::ShowEmergencyStatus ( )
private

Shows emergency button and switch status in GUI.

◆ ShowOperationMode()

void MainWindow::ShowOperationMode ( )
private

◆ UpdateGUI

void MainWindow::UpdateGUI ( )
privateslot

Member Data Documentation

◆ argc_

int MainWindow::argc_
private

◆ argv_

char** MainWindow::argv_
private

◆ blue_style_sheet_

const QString MainWindow::blue_style_sheet_
private
Initial value:
="QPushButton:pressed {background-color: rgb(5, 153, 44);}"
"QPushButton {color: rgb(255, 255, 255);"
"selection-background-color: rgb(238, 238, 236);"
"selection-color: rgb(238, 238, 236);"
"background-color: rgb(19, 61, 128);"
"alternate-background-color: rgb(0, 0, 0);"
"font: bold 75 16pt \"Noto Sans\";}"

◆ em_state_

uint8_t MainWindow::em_state_ =0
private

◆ gui_node_

std::shared_ptr<GuiNode> MainWindow::gui_node_
private

◆ my_timer

QTimer MainWindow::my_timer
private

◆ opencv_video_cap

VideoCapture* MainWindow::opencv_video_cap
private

◆ red_style_sheet

const QString MainWindow::red_style_sheet
private
Initial value:
= "QPushButton:pressed {background-color: rgb(252, 186, 3);}"
"QPushButton {color: rgb(255, 255, 255);"
"background-color: rgb(252, 0, 0);"
"font: bold 75 15pt \"Noto Sans\";}"

◆ ros_spin_thread_

std::thread MainWindow::ros_spin_thread_
private

◆ sdo_style_sheet_

const QString MainWindow::sdo_style_sheet_
private
Initial value:
= "QPushButton:pressed {background-color: rgb(5, 153, 44);}"
"QPushButton {color: rgb(255, 255, 255);"
"background-color: rgb(252, 119, 3);"
"font: bold 75 15pt \"Noto Sans\";}"

◆ ui

Ui::MainWindow* MainWindow::ui
private

The documentation for this class was generated from the following files: