Files
coco df489d5640 a
2026-07-03 16:05:30 +08:00

160 lines
5.9 KiB
C++

#if !defined(AFX_DIALTASKMANAGER_H__99FCE339_720B_4418_B1D4_62CB2C1AE99E__INCLUDED_)
#define AFX_DIALTASKMANAGER_H__99FCE339_720B_4418_B1D4_62CB2C1AE99E__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// CDialTaskManager.h : header file
//
//#include "Dial1DTaskTree.h"
#include "Dial2DTaskTree.h"
#include "Dial3DTaskTree.h"
#include "TaskDataOper.h"
#include "TdManager.h"
#include "DialRealTimeMeasureData.h"
#include "DialNew1DTask.h"
#include "DialNew2DTask.h"
#include "DialNew3DTask.h"
#include "cpp\socket\NetRequestDialog.h"
/////////////////////////////////////////////////////////////////////////////
// CDialTaskManager dialog
class CDialTaskManager : public CNetRequestDialog
{
// Construction
public:
CDialTaskManager(CWnd* pParent = NULL); // standard constructor
~CDialTaskManager();
virtual BOOL DestroyWindow();
void SetDeviceID(DWORD dwDeviceID)
{
m_dwDeviceSN = dwDeviceID;
}
void SetPLCID(DWORD dwPLCID)
{
m_dwPLCID = dwPLCID;
}
afx_msg void OnButtonCreateTask();
afx_msg void OnButtonDelTask();
//void OnCmdTaskInfoSyn(); //任务信息同步
void OnCmdTaskCancelTest(); //取消测试
// Dialog Data
//{{AFX_DATA(CDialTaskManager)
enum { IDD = IDD_DIALOG_TASK_MANAGER };
CListCtrl m_listTaskAttr;
CListCtrl m_listTaskData;
CTabCtrl m_tabTaskChg;
//}}AFX_DATA
bool m_bThreadIsRunning;
bool m_bThreadIsPause;
bool m_bThreadIsExit;
void SetPauseThread(bool bFlg) { m_bThreadIsPause = bFlg; };
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDialTaskManager)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CDialTaskManager)
virtual BOOL OnInitDialog();
afx_msg LRESULT OnClickTaskTree(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnMsgDeleteTask(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnMsgTaskListTaskDataSyn(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnMsgTaskRefreshList(WPARAM wParam, LPARAM lParam); //刷新列表
afx_msg LRESULT OnMsgUpdateRealTimeWndBtnStatus(WPARAM wParam, LPARAM lParam);//更新实时窗口按钮状态
afx_msg LRESULT OnMsgSetCurrentSelectTask(WPARAM wParam, LPARAM lParam);
afx_msg void OnSelchangeTabTaskChg(NMHDR* pNMHDR, LRESULT* pResult);
// afx_msg void OnButtonExpTask();
afx_msg void OnButtonMeasureTask();
afx_msg void OnBtnDataDownload();
afx_msg void OnBtnCreateTimerTask();
afx_msg void OnBtnManageTimerTask();
afx_msg void OnBtnQueryTaskList();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
static UINT DealTaskDataSynThread(LPVOID pParam); //非测试中同步50个点线程
static UINT DealTaskTestingSynThread(LPVOID pParam);//测试中同步显示线程
void UpdateRealTimeTaskListData(STRemTaskArg* ptTaskArg, STTaskListItem* pTaskItem);//更新实时窗口测试任务数据
void InitialTaskListAttr();
//void InitialTaskListData(int iTestType);
void PreNetResponse(WPARAM wParam, LPARAM lParam);
//删除任务响应
BOOL OnDeleteTaskResponse(WPARAM wParam, LPARAM lParam);
//同步任务信息
BOOL OnSynCouldTaskInfoRequest(std::vector<STTaskListItem> vtSynTaskID);
BOOL OnSynCouldTaskInfoResponse(WPARAM wParam, LPARAM lParam);
//正在测试中,实时窗口数据显示
afx_msg LRESULT OnRecvRealTimeDataResponse(WPARAM wParam, LPARAM lParam);
UINT DeleteTask();
void InitTaskTree();
void SelectShowTaskTree(int iSelType);
protected:
//CDial1DTaskTree m_Dial1DTaskTree;
CDial2DTaskTree m_Dial2DTaskTree;
CDial3DTaskTree m_Dial3DTaskTree;
ITaskTree* m_iTaskTree;
int m_iSelTaskType;//任务的维度
int m_iTestType; //任务的测量类型
CTaskDataOper m_taskOper;
CString m_strTitle;
CDialRealTimeMeasureData m_dialRealTimeMeasuData;//实时刷新数据窗口
//用于标志是不是最后一个取消测试的任务
BOOL m_bLastCancelTask;
//用于删除数据库Task
std::vector<CString> m_vtNeedDelLocalTaskID;
//用于删除云端的Task
std::vector<CString> m_vtNeedDelClounTaskID;
//用于保存删除失败的Task
std::vector<CString> m_vtFailedDelTaskID; //保存删除失败 未知错误
std::vector<CString> m_vtDelNoCancelTest;//保存删除失败 循环任务未取消测试的taskID
//std::vector<CString> m_vtDelTaskRunning;//保存删除失败 此任务正在测试的taskID
//用于删除树形控件上的Task
//std::vector<HTREEITEM> m_vtNeedDelTreeItem;
std::vector<CString> m_CurDelTaskID;
HTREEITEM m_CurDelTreeItem;
//用于保存需要任务信息同步的taskID
std::vector<STTaskListItem> m_vtNeedSynTaskID;//目前只同步一个,如果需要同步多个,另加判断
//用于保存从云端获取到的任务参数
//std::vector<STRemTaskArg> m_vtSaveSynTaskArg;
//未测试状态任务获取的任务点数据
//std::vector<STTaskDetailBasicData> m_vtTdSynData;
//用户保存同步信息的任务信息,查看实时数据50个点,记录上一次任务以防任务变更
STRemTaskArg m_stRealTimeTaskArg;
//用于上传任务
STRemTaskArg m_TaskArg;
CDialNew1DTask m_dialNew1DTask;
CDialNew2DTask m_dialNew2DTask;
CDialNew3DTask m_dialNew3DTask;
CRITICAL_SECTION m_cs;
BOOL m_bCancelTestingTask;// 取消正在测试中的Task
//保存正在测试中的任务,用于实时窗口全部测量,如果不等于当前任务则不能,理论上同一时刻只有一个任务正在测试,
//CString m_strSaveTestingTaskID;
CString m_strDeleteTaskTips;//正在测试中的任务,删除任务失败提示
CString m_strTaskStatusTips;
CDateTimeCtrl m_StartTime;
CDateTimeCtrl m_EndTime;
DWORD m_dwDeviceSN; //DeviceSN/Device ID
DWORD m_dwPLCID; //PLC ID
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_DIALTASKMANAGER_H__99FCE339_720B_4418_B1D4_62CB2C1AE99E__INCLUDED_)