#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 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_)