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

153 lines
5.5 KiB
C++

#if !defined(AFX_DIALMEASUREDATA_H__CA946FA9_52D2_4B68_92E2_30C065867518__INCLUDED_)
#define AFX_DIALMEASUREDATA_H__CA946FA9_52D2_4B68_92E2_30C065867518__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// DialMeasureData.h : header file
//
#include "DialListMeasuData.h"
#include "TaskDataOper.h"
//#include "RingBuffer.h"
#include "DialListMeasuGR.h"
#include "CtrlProtocolDef.h"
#include "cpp/socket/NetRequestDialog.h"
/////////////////////////////////////////////////////////////////////////////
// CDialMeasureData dialog
enum EN_TEST_TYPE
{
EN_CMD_MEASURE_NO =0, //未测试
EN_CMD_MEASURE_ALL=1, //全部测试
EN_CMD_MEASURE_FROM_CUR_POINT =2, //从当前开始测试
EN_CMD_MEASURE_ONE_POINT=3 //单点测试
};
// enum EN_DEVICE_TYPE
// {
// EN_DEV_GD10 = 0,
// EN_DEV_PLC
// };
class CDialMeasureData : public CNetRequestDialog
{
// Construction
public:
CDialMeasureData(CWnd* pParent = NULL); // standard constructor
~CDialMeasureData();
void SetTaskID(CString strTaskCN){ m_strTaskCN = strTaskCN; }
void SetTaksID(int iTaskID){m_iTaskID = iTaskID;}
void SetDeviceID(UINT uiDevID){m_uiDevID = uiDevID;}
virtual BOOL DestroyWindow();
// Dialog Data
//{{AFX_DATA(CDialMeasureData)
enum { IDD = IDD_DIALOG_MEAUSRE_DATA };
CTabCtrl m_tabChange;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDialMeasureData)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CDialMeasureData)
virtual BOOL OnInitDialog();
afx_msg void OnMeasureAll();
afx_msg void OnMeasureCurPt();
//afx_msg void OnMeasureDownloadMeasuCfg();
BOOL OnMeasureDownloadMeasuCfg();
afx_msg void OnMeasureFromCur();
afx_msg void OnSelchangeTabChg(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnMeasureSuspendMeau();
afx_msg void OnClose();
virtual void OnCancel();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnSelchangingTabChg(NMHDR* pNMHDR, LRESULT* pResult);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
protected:
//static void NotifyResFunc(LPARAM lOperType, LPARAM lOperRes, LPVOID lpWnd);
bool MeasureAllGR();
// void ClearMeasuGRInfo();
void ClearRecvBuffer();
bool RecvMeasureGRData();
bool ProcRcvGrData();
void StopMeasuDataInfo(bool bIsNormalExit = true);
int ProcRcvMeasuData();
// void RegisterBuffer(RingBuffer* pReadBuf, RingBuffer* pWriteBuf){m_pReadBuf = pReadBuf; m_pWriteBuf = pWriteBuf;}
// bool SendData(const BYTE* pData, int iLen);
void SetBtnStatus(BYTE ucBtnStatus);
int GetNeedMeasuData(char* pData,int &iLen, int iMaxLen);
int GetSigNeedMeasuData(char* pData,int &iLen, int iMaxLen);
int GetNeedMeasuGR(char* pData,int &iLen, int iMaxLen, int iAddtionalVal=0);
void ProcRcvData(const STCtrlProtoHeader& stCtrlInfo, const char* pData);
void ProcGD10Data(const STCtrlProtoHeader& stCtrlHeader, const char* pPayload);
void ProcPLCData(const STCtrlProtoHeader& stCtrlHeader, const char* pPayload);
static UINT StartMeasuData(LPVOID pInfo);
void ThreadJoin();
void PreNetResponse(WPARAM wParam, LPARAM lParam);
bool InitGrList(CListCtrl &tdGrList, CString strTaskCN);
protected:
CDialListMeasuData m_dialListMeasuTask;
CDialListMeasuGR m_dialListMeasuGR;
// int m_iStartElec;
// int m_iEndElec;
// bool m_bIsNetOper; //是否正在网络操作
bool m_bIsSigMeasuring; //是否正在进行数据测量
bool m_bIsSuspend; //是否进行暂停
int m_iRecvElecID; //已经接受了的电极ID
BYTE m_ucData[MAX_RECV_MEASURE]; //接收数据缓冲区
int m_iRecvDataLen;
int m_iMeasuType; //测量数据类型,1是指测量数据,2是指接地电阻
CString m_strTaskCN; //云端Task id
int m_iTaskID; //测试任务ID
bool m_bIsDownLoadTask; //是否已经下发了任务配置
BYTE m_ucCmd; //正在进行通信的命令字
EN_TEST_TYPE m_enTestTypeCmd; //单点测试、从当前测试、全部测试
STQueryTaskBasicInfo m_stQueryTdInfo;
CTaskDataOper m_TaskdDBOper;
bool m_bIsOpenTbData; //是否已经打开具体的数据表
// int m_iMeasuMethod; //测量方法:0:不测量 1:全部测量,2:只测量当前点 3:从当前点开始测量
int m_iMeasureDataID;
int m_iSigDataMeasuTimeout;
int m_iCurTsn; //当前点的TSN
// int m_iListDataID; //测量数据列表的ID
// bool m_bIsSuspend; //是否暂停测量
STTaskDetailBasicData m_stTaskBasicData;
BYTE m_ucMeasuBtnStatus[2]; //分别代表测量数据和接地电阻测量按钮此时所处的状态
// BOOL m_bIsSuspenMeasu[2];
bool m_bIsRunning;
// RingBuffer *m_pReadBuf;
// RingBuffer *m_pWriteBuf;
CWinThread* m_pThread;
CRITICAL_SECTION m_MutexSec;
BYTE m_ucPayLoad[MAX_SND_DATA];
// BYTE m_ucDevType;
UINT m_uiDevID;
int m_iRepeatSndCnt;
std::vector<STSigSndDataInfo> m_vtMeasureData;
bool m_bIsThreadFinshed;
int m_iSelMeasuIndex;
int m_iGRAttionalVal;//用于在测量当前位置的时候用
//////////////////////////////////////////////////////////////////////////
int m_iLoopCnt;
int m_iCurLoop;
BYTE m_ucLastBtnStatus;
CRITICAL_SECTION m_dbSec;
// BYTE m_ucDevType; //正在通信的设备类型 0代表GD10, 1代表PLC
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_DIALMEASUREDATA_H__CA946FA9_52D2_4B68_92E2_30C065867518__INCLUDED_)