/******************************motorcontroll.h文件说明**********************************
* Descript	:头文件，包含主窗口的头文件引用，以及宏定义
* Author    :caitiancheng
* Date      :2021_12_19
*******************************************************************************/
#ifndef MOTORCONTROLL_H
#define MOTORCONTROLL_H


/***********************************头文件****************************************/
#include <QMainWindow>
#include <Base.h>
#include  "XnetConnect.h"
#include "Addpar.h"
#include "moretypemovement.h"
#include <QTimer>
#include <QTableWidgetItem>
#include <QMessageBox>



/***********************************类的声明和继承****************************************/
namespace Ui {
class MotorControll;
}

class MotorControll : public QMainWindow,public Base
{
    Q_OBJECT

public:
    explicit MotorControll(QWidget *parent = 0);
    ~MotorControll();

signals:
    void CloseWin();

protected:
    void closeEvent(QCloseEvent *event=NULL);

private slots:

    void Slot_Status();
    void Slot_ShowWin();
    void Slot_Monitor();

    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

    void on_pushButton_4_clicked();

    void on_DotStepUpdataBtn_clicked();

    void on_DotSpeedUpdataBtn_clicked();

    void on_DotPositiveBtn_clicked();

    void on_DotReverseBtn_clicked();

    void on_DotStopRunBtn_clicked();

    void on_DotKeepRunBtn_clicked();

    void on_RunPlaceUpdataBtn_clicked();

    void on_RunSpeedUpdataBtn_clicked();

    void on_RunTimeUpdataBtn_clicked();

    void on_RunStartPlaceModifyBtn_clicked();

    void on_RunStartAbsolutBtn_clicked();

    void on_RunStartRelativeBtn_clicked();

    void on_RunStopBtn_clicked();

    void on_RunKeepBtn_clicked();

    void on_RunMoreAddRunBtn_clicked();

    void on_RunMoreDataUpdataBtn_clicked();

    void on_RunMoreStartBtn_clicked();

private:
    Ui::MotorControll *ui;
    XnetConnect Xcon;
    AddPar Apar;
    MoreTypeMovement Movement;

    //定义时间显示定时器
    QTimer *TimeShow;
    //定义监视栏定时器
    QTimer *Monitor;

    //监视栏初始化函数
    void InitMonitor();

    //控件连接的信号和槽函数
    void InitConnect();

    //状态栏界面设置初始化函数
    void InitBarStatus();


    //声明表格控件对象
    QList<QTableWidgetItem *> TableHeadItem;

    //状态栏
    //定义连接状态定时器
    QTimer *StatuTimer;
    const QString m_red_SheetStyle = "min-width: 16px; min-height: 16px;max-width:16px; max-height: 16px;border-radius: 8px;  border:1px solid black;background:red";
    const QString m_green_SheetStyle = "min-width: 16px; min-height: 16px;max-width:16px; max-height: 16px;border-radius: 8px;  border:1px solid black;background:green";
    QLabel *ConStatusText;
    QLabel *ConStatusImg;
    QLabel *SalveStatusText;
    QLabel *SalveStatusShow;



    //监控的值对象
    //用于记录一些不需要操作的数据，但需要释放
    QList<QTableWidgetItem *> MonitorLogs;
    //运动标识
    QTableWidgetItem *MonitorSM2001;
    //使能标识
    QTableWidgetItem *MonitorSM2010;
    //正向点动标识
     QTableWidgetItem *MonitorSM2011;
    //方向点动标识
     QTableWidgetItem *MonitorSM2012;
    //点动速度
     QTableWidgetItem *MonitorSD2042;
     //点动步长
     QTableWidgetItem *MonitorSD2040;
    //运行模式
    QTableWidgetItem *MonitorSD2001;
    //监控速度
    QTableWidgetItem *MonitorSD2010;
    //抽位置
    QTableWidgetItem *MonitorSD2008;
    //位置设定
    QTableWidgetItem *MonitorSD2030;
    //速度设定
    QTableWidgetItem *MonitorSD2032;
    //加速时间设定
    QTableWidgetItem *MonitorSD2034;
    //减速时间设定
    QTableWidgetItem *MonitorSD2036;
    //添加监控值函数
    void AddMonitorVal(QTableWidgetItem **Item,QString Value,QString QStrName,QString QStrVal);
    //加入监控槽
    void SetMonitorVal(QTableWidgetItem *Item,bool Type,int addr);

};

#endif // MOTORCONTROLL_H
