M3KTE_TERM/M3KTE_TERM/m3kte.h

121 lines
2.8 KiB
C++

#ifndef M3KTE_H
#define M3KTE_H
#include <QMainWindow>
#include <QModbusDataUnit>
#include <qprogressbar.h>
#include <QtSerialBus/QModbusDataUnit>
#include "writeregistermodel.h"
#include "devicesettingsdialog.h"
#include "multiplesettings.h"
#include "scanboard.h"
#include <QModbusTcpClient>
#include <QModbusRtuSerialMaster>
#include <QTimer>
#include <QMessageBox>
#include <QProgressDialog>
#include <QErrorMessage>
#include <QPushButton>
#include <QGroupBox>
#include <QtSerialBus/qtserialbusglobal.h>
#if QT_CONFIG(modbus_serialport)
#include <QSerialPort>
#endif
#define MODBUS_REQUEST_PROTOCOL_INFO_LENGTH 8
QT_BEGIN_NAMESPACE
namespace Ui { class M3KTE; class SettingsDialog;}
QT_END_NAMESPACE
class SettingsDialog;
class WriteRegisterModel;
class M3KTE : public QMainWindow
{
Q_OBJECT
private:
void initActions();
QModbusDataUnit readRequest() const;
QModbusDataUnit writeRequest() const;
void changeTable(int board, int tabletype);
void errorAdrChange();
bool event(QEvent* event);
bool pingNetworkDevices();
void beginScanBoards();
void displayResultOfScan(QModbusReply *reply, int boardID);
void applySettingsFromScan(QModbusReply *reply);
void multipleRegWrite();
void multipleRegSend();
bool autoBaudRateScan();
void selectPositionOnTree(unsigned index);
private slots:
void slotmultipleRegWrite();
void slotmultipleRegWriteAndSend();
void onConnectClicked();
void onReadButtonClicked();
void onReadReady();
void checkAdrChange(QModbusReply *reply, unsigned boardNum);
void onWriteButtonClicked();
void onSelectedBoardChanged(int index);
void onWriteTableChanged(int index);
void onSpeedUpdate();
void onParityUpdate();
void boardScan(unsigned boardID);
public:
M3KTE(QWidget *parent = nullptr);
~M3KTE();
private:
Ui::M3KTE *ui;
int CurrentConnectedDevice = 0;
//int DeviceOnNetwork[4];
QProgressBar *m_ProgressBar[320];
QPushButton *ThePhantomMenace[320];
QModbusReply *lastRequest = nullptr;
QModbusClient *modbusDevice = nullptr;
DeviceSettingsDialog *m_deviceSettingsDialog = nullptr;
SettingsDialog *m_settingsDialog = nullptr;
MultipleSettings *m_regMultipleSettings = nullptr;
ScanBoard *m_scanBoard = nullptr;
QGroupBox *Boards_Fields[4];
//WriteRegisterModel *writeModel = nullptr;
struct StatusM3KTE{
bool Warnings[4];
bool Accidents[4];
}statusM3KTE;
struct BoardModbusRegisters
{
bool isActive = false;
int adr;
int _tmp_adr;
bool coil[85];
unsigned HR[170];
WriteRegisterModel *ModbusModelCoil;
WriteRegisterModel *ModbusModelHoldingReg;
QTimer *boardScanners;
}Boards[4];
};
#endif // M3KTE_H