156 lines
6.0 KiB
C++
156 lines
6.0 KiB
C++
#ifndef AFX_DIALREALTIMEMEASUREDATA_H__CA946FA9_52D2_4B68_92E2_30C065867518__INCLUDED_
|
|
#define AFX_DIALREALTIMEMEASUREDATA_H__CA946FA9_52D2_4B68_92E2_30C065867518__INCLUDED_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
// DialMeasureData.h : header file
|
|
//
|
|
#include "DialListRealTimeMeasuData.h"
|
|
#include "TaskDataOper.h"
|
|
//#include "RingBuffer.h"
|
|
#include "DialListRealTimeMeasuGR.h"
|
|
#include "CtrlProtocolDef.h"
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDialRealTimeMeasureData dialog
|
|
|
|
#define MAX_REPEAT_SND_CNT 90000
|
|
// enum EN_DEVICE_TYPE
|
|
// {
|
|
// EN_DEV_GD10 = 0,
|
|
// EN_DEV_PLC
|
|
// };
|
|
#include "cpp\socket\NetRequestDialog.h"
|
|
class CDialRealTimeMeasureData : public CNetRequestDialog
|
|
{
|
|
// Construction
|
|
public:
|
|
CDialRealTimeMeasureData(CWnd* pParent = NULL); // standard constructor
|
|
void SetTaksID(CString strTaskCN){ m_strTaskCN = strTaskCN; }
|
|
void SetTaksID(int iTaskID){m_iTaskID = iTaskID;}
|
|
void SetSptType(int iSptType){ m_iSptType = iSptType; }
|
|
void SetDeviceID(UINT uiDevID){m_uiDevID = uiDevID;}
|
|
void SetTaskListSelectItem(STTaskListItem* pSelectTaskItem = NULL);
|
|
void SetTestingTaskID(CString strTestingTaskID){ m_strTestingTaskID = strTestingTaskID; }
|
|
void SetBtnStatus(BYTE ucBtnStatus);
|
|
int GetMeasureType(){ return m_iMeasuType; }
|
|
//获取正在测量的方式,单点测量、从当前位置开始测量、全部测量
|
|
// EN_TASK_TESTING_METHOD GetTestingMethod()
|
|
// {
|
|
// return m_eTestingMethod;
|
|
// }
|
|
bool InitGrList(CListCtrl &tdGrList, CString strTaskCN);
|
|
// Dialog Data
|
|
//{{AFX_DATA(CDialRealTimeMeasureData)
|
|
enum { IDD = IDD_DIALOG_REAL_TIME_MEASURE_DATA };
|
|
CTabCtrl m_tabChange;
|
|
//}}AFX_DATA
|
|
|
|
|
|
// Overrides
|
|
// ClassWizard generated virtual function overrides
|
|
//{{AFX_VIRTUAL(CDialRealTimeMeasureData)
|
|
protected:
|
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
|
//}}AFX_VIRTUAL
|
|
// Implementation
|
|
protected:
|
|
|
|
// Generated message map functions
|
|
//{{AFX_MSG(CDialRealTimeMeasureData)
|
|
virtual BOOL OnInitDialog();
|
|
afx_msg void OnMeasureAll();
|
|
afx_msg void OnMeasureCurPt();
|
|
//afx_msg void OnMeasureDownloadMeasuCfg();
|
|
afx_msg void OnMeasureFromCur();
|
|
afx_msg void OnShowDetailMeasureData();
|
|
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);
|
|
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);
|
|
public:
|
|
CDialListRealTimeMeasureData m_dialListMeasuTask;//改为公有访问
|
|
CDialListRealTimeMeasuGR m_dialListMeasuGR;
|
|
STTaskListItem m_stTaskItem;
|
|
STRemTaskArg m_stTaskArg;
|
|
UINT32 m_uiDevID;
|
|
UINT32 m_uiPlcID;
|
|
protected:
|
|
// 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是指接地电阻
|
|
int m_iTaskID; //测试任务ID
|
|
bool m_bIsDownLoadTask; //是否已经下发了任务配置
|
|
BYTE m_ucCmd; //正在进行通信的命令字
|
|
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;
|
|
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;
|
|
// BYTE m_ucDevType; //正在通信的设备类型 0代表GD10, 1代表PLC
|
|
CString m_strTaskCN; //同云端taskID
|
|
CString m_strTestingTaskID; //保存当前正在测量的任务ID
|
|
int m_iSptType;
|
|
//EN_TASK_TESTING_METHOD m_eTestingMethod;//保存正在测量的方式,单点测量、从当前位置开始测量、全部测量
|
|
};
|
|
|
|
//{{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_)
|