22 _firmware_files_tree =
new QTreeWidget();
23 _firmware_files_tree->setColumnCount(2);
24 _firmware_files_tree->setHeaderLabels({
"Firmware files",
""});
25 _firmware_files_tree->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
26 _firmware_files_tree->header()->setMinimumSectionSize(0);
27 _firmware_files_tree->header()->resizeSection(1,0);
28 _firmware_files_tree->header()->setStretchLastSection(
false);
31 auto firmware_manager =
new QDialogButtonBox(QDialogButtonBox::RestoreDefaults |
32 QDialogButtonBox::Ignore |
33 QDialogButtonBox::Retry |
34 QDialogButtonBox::Save );
37 auto select_files = firmware_manager->button(QDialogButtonBox::RestoreDefaults);
38 select_files->setText(
"Select all bin or config files");
39 connect(select_files, &QPushButton::released,
this, &EcGuiFirmware::onSelectFilesReleased);
41 auto copy_files_btn = firmware_manager->button(QDialogButtonBox::Ignore);
42 copy_files_btn->setText(
"Copy files to embedded PC");
43 _firmware_update_btns.push_back(copy_files_btn);
45 auto open_config_btn = firmware_manager->button(QDialogButtonBox::Retry);
46 open_config_btn->setText(
"Open firmware configuration file");
47 _firmware_update_btns.push_back(open_config_btn);
49 auto start_update_btn = firmware_manager->button(QDialogButtonBox::Save);
50 start_update_btn->setText(
"Start firmware update");
51 _firmware_update_btns.push_back(start_update_btn);
53 QVBoxLayout *layout =
new QVBoxLayout;
54 layout->addWidget(_firmware_files_tree);
55 layout->addWidget(firmware_manager);
56 QHBoxLayout *layout_page =
new QHBoxLayout;
57 QLabel *firmware_image=
new QLabel;
58 QPixmap firmware_logo_pic;
59 firmware_logo_pic.load(
":/icon/firmware.png");
60 firmware_image->setPixmap(firmware_logo_pic);
61 layout_page->addWidget(firmware_image);
62 layout_page->addLayout(layout);
64 QWizardPage *firmware_wizard_page =
new QWizardPage();
65 firmware_wizard_page->setTitle(
"Firmware update wizard");
66 firmware_wizard_page->setLayout(layout_page);
67 this->addPage(firmware_wizard_page);
68 this->setFixedSize(layout_page->geometry().width(),layout_page->geometry().height());
69 this->setWindowFlags(Qt::Window);
70 this->setAttribute(Qt::WA_QuitOnClose,
false);
76 std::vector<QPushButton *> get_firmware_update_btns(){
77 return _firmware_update_btns;
80 QStringList get_files_list(){
85 if(!this->isVisible()){
86 _firmware_files_tree->clear();
90 this->setWindowState(Qt::WindowActive);
95 void onSelectFilesReleased(){
97 QStringList fileNames = QFileDialog::getOpenFileNames(
99 "Select one or more files",
101 "Bin files (*.bin);;Config files (*.csv)");
102 for(
const auto& file_path:fileNames){
103 if(!file_listed(file_path)){
104 QTreeWidgetItem * file_item =
new QTreeWidgetItem();
105 file_item->setText(0,file_path);
106 _firmware_files_tree->addTopLevelItem(file_item);
107 _files_list.append(file_path);
113 QTreeWidget *_firmware_files_tree;
114 QStringList _files_list;
115 std::vector<QPushButton *> _firmware_update_btns;
116 bool file_listed(
const QString &file_name){
117 for(
int i=0;i<_firmware_files_tree->topLevelItemCount();i++){
118 auto topLevel =_firmware_files_tree->topLevelItem(i);
119 if(topLevel->text(0)==file_name){
133 explicit EcGuiStart(QWidget *parent =
nullptr);
138 void onEcMasterProcessChanged(
int index);
139 void onStartEtherCATSystem();
140 void onStopEtherCATSystem();
141 void onScanDeviceReleased();
142 void ExpertUserPassChanged();
143 void onFirmwareUpdateReleased();
144 void onFirmwareUpdateCopyFiles();
145 void onFirmwareUpdateOpenConfig();
146 void onFirmwareUpdateStart();
147 void onFirmwarewizardClosed(
int ret);
152 EcGuiWrapper::Ptr _ec_gui_wrapper;
153 EcGuiNet::Ptr _ec_gui_net;
154 QPushButton *_ec_sys_start,*_ec_sys_stop,*_firmware_update_btn;
155 QLabel *_ec_system_status;
156 bool _ec_sys_started;
158 QTreeWidget * _net_tree_wid;
159 QLineEdit *_expert_user;
161 QComboBox *_master_process_type;
163 void error_on_scannig();
167 void read_sdo_info(
const int32_t device_id,
168 const std::vector<std::string> sdo_name,
169 std::vector<float> &sdo_info);
173 bool create_ec_iface();
174 void stopping_ec_sys();
175 void disable_ec_system();
176 void enable_ec_system();