M3KTE_TERM/M3KTE_TERM/m3kte.h

150 lines
4.3 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 "lineringer.h"
#include <QModbusTcpClient>
#include <QModbusRtuSerialMaster>
#include <QHBoxLayout>
#include <QTimer>
#include <QMessageBox>
#include <QProgressDialog>
#include <QErrorMessage>
#include <QPushButton>
#include <QGroupBox>
#include <QTableWidget>
#include <QTime>
#include <QElapsedTimer>
#include <QtSerialBus/qtserialbusglobal.h>
#if QT_CONFIG(modbus_serialport)
#include <QSerialPort>
#endif
#define MODBUS_REQUEST_PROTOCOL_INFO_LENGTH 8
extern "C" __declspec(dllexport) QWidget* init(QWidget *parent);
QT_BEGIN_NAMESPACE
namespace Ui { class M3KTE; class SettingsDialog;}
QT_END_NAMESPACE
#define LOCAL_STATE_POLL 0
#define LOCAL_STATE_WARN 1
#define LOCAL_STATE_ERR 2
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);
bool event(QEvent* event);
bool pingNetworkDevices();
void beginScanBoards();
void stopScanBoard();
void displayResultOfScan(QModbusReply *reply, int boardID, int status);
void applySettingsFromScan(QModbusReply *reply);
void multipleRegWrite();
void multipleRegSend();
bool autoBaudRateScan();
void selectPositionOnTree(unsigned index);
signals:
void successAtCheckBoards();
void errorAtCheckBoards();
private slots:
void clearLogger();
void logError(const QString &errorPlace, const QString &errorString, unsigned errorCount, const QString &description);
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 checkBoards();
void onSpeedUpdate();
void revertToOldSpeedAndRestart();
void onParityUpdate();
void boardScan(unsigned boardID);
public:
M3KTE(QWidget *parent = nullptr);
~M3KTE();
private:
Ui::M3KTE *ui;
QTableWidget *loggerTable = nullptr;
int CurrentConnectedDevice = 0;
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;
LineRinger *m_lineRinger = nullptr;
QGroupBox *Boards_Fields[4];
struct StatusM3KTE{
bool Warnings[4];
bool Accidents[4];
}statusM3KTE;
unsigned error_terminal;
struct BoardModbusRegisters {
bool isActive = false;
bool pollIsActive = true;
int adr;
int _tmp_adr;
bool coil[85];
unsigned HR[170];
unsigned error_W = 0;
unsigned error_A = 0;
unsigned error_modbus = 0;
unsigned error_baud_change = 0;
unsigned error_parity_change = 0;
unsigned error_RX = 0;
unsigned error_TX = 0;
unsigned error_adr_change = 0;
unsigned error_cmd_change = 0;
QLabel *timerData = nullptr;
QLabel *timerStatus = nullptr;
QLabel *localError = nullptr;
QCheckBox *localState[3] = {nullptr, nullptr, nullptr};
WriteRegisterModel *ModbusModelCoil;
WriteRegisterModel *ModbusModelHoldingReg;
QTimer *boardScanners;
bool isScan = false;
QElapsedTimer timerToStatusResponse;
QElapsedTimer timerToDataResponse;
}Boards[4];
union statusreg {
struct parsingFields {
unsigned accident:1;
unsigned warning:1;
unsigned poll_allowed:1;
unsigned mzkte_status:2;
unsigned reserv:3;
unsigned mzkte_error:8;
}ParsingReg;
unsigned AllReg:16;
};
};
#endif // M3KTE_H