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