📄 103device.h
字号:
#ifndef DEVICE103_H#define DEVICE103_H#include "ASDU.h"#include <qfile.h>#include "communication.h"#include <qdatetime.h> #include <qvaluelist.h> typedef QValueList<CommParam> COMMPARAM;class C103Device{ public: C103Device(st_deviceinfo DevInfo);//顶级设备 ~C103Device(); public: bool InitClass();//初始化类信息 bool SendCommand(BYTE* pData, int iSize); bool GI();//总召唤(总查询) bool GGI();//通用分类总召唤(总查询) bool XunJian();//巡检 bool GetDingZhi();//申请定值 bool GetSector();//申请定值区号 bool GetAnalog();//申请模拟量 bool GetSwitch();//申请开关量 bool GetYaBan();//申请软压板 bool CheckTime();//申请校时 bool RequireDistrubt();//申请扰动波形列表 void SendMsgToMain(int iResult, CString szMsg = ""); void SendCommStateToMain(int istate); bool RequestLinkStatus();//请求链路状态 bool ResetFCB();//复位帧计数位 bool ResetCU();//复位通信单元 private: void ProcessData();//处理接收到的数据数据 void ProcessAsdu1(); void ProcessAsdu2(); void ProcessAsdu3(); void ProcessAsdu4(); void ProcessAsdu6(); void ProcessAsdu8(); void ProcessAsdu9(); void ProcessAsdu10(); void ProcessAsdu23(); void ProcessAsdu26(); void ProcessAsdu27(); void ProcessAsdu28(); void ProcessAsdu29(); void ProcessAsdu30(); void ProcessAsdu31(); void ProcessWave(WORD wNof, CString szFileName); bool SendAsdu21(BYTE iGroup, BYTE iEntry, BYTE iKod); bool SendAsdu24(WORD iFAN, BYTE iTOO, BYTE iTOV, BYTE iACC); bool SendAsdu25(WORD iFAN, BYTE iTOO, BYTE iTOV, BYTE iACC); bool GetGroupData(CAsdu10& a10, BYTE iGroup, BYTE iEntry, BYTE iKod); void ExplainGroupData(CAsdu10& a10); bool RequestL1UserData();//请求一级用户数据 bool RequestL2UserData();//请求二级用户数据 bool SendConfirm(CByteArray& sData);//发送确认 bool SendNoConfirm(CByteArray& sData);//发送无确认 bool SendData(CByteArray& sData); bool ReceData(CByteArray& rData); BYTE CalCheckSum(const CByteArray& Data, bool bSend = false); void FlibFCB(); bool GetDistrubData(); void SortDDTable(); bool BuildDistrubtData(); int TimeSpan(CP56Time2a FaultTime, CP56Time2a LastTime); void BuildCfgFile(CString szFileName, int& iNoe, int& iInt); void BuildDatFile(CString szFileName, int iFirstTime, int iNoe, int iInt); void BuildHdrFile(CString szFileName, CWordArray& FanArray); void printData(QString prifix,BYTE* addr,int length); public: int m_iCpuNum; bool m_bCommError; bool m_bSendState3; bool m_bSendState0; st_nodeinfo m_CmdInfo; long m_iThreadId; CCommunication* m_pComm; QDateTime m_GITime; CString m_szConFile; CXMLReader* m_pxml; private: QFile m_File;//存储通信报文 st_deviceinfo m_DevInfo; int m_iWaveFlag; int m_iSaveFlag;//是否把串口的数据存成文件 DWORD m_iTimesOut; DWORD m_iWaitTime; CString m_szSysPath; bool m_bHaveL1UserData;//是否有一级用户数据 bool m_bGIFinished; CByteArray m_ReceData; BYTE m_SendAddress; BYTE m_AsduAddress; BYTE m_FrameHead; BYTE m_FrameLength; BYTE m_ReceAddress; BYTE m_FrameCS; BYTE m_FrameEnd; CString m_szDpi1; CString m_szDpi2; CString m_szSDpi1; CString m_szSDpi2; CMyArray<st_switchvalue, st_switchvalue> m_SwitchValue; bool m_bSwitch; int m_iFaultNo;//算法待考虑 int m_iFixTime; CString m_szLastWaveTime; CString m_szWaveFileName; CMyArray<DistrubDataTable, DistrubDataTable&> m_DDTable; CMyArray<CFaultExplain, CFaultExplain> m_FaultExplain; CDistrubData m_DistrubData; int m_DDStatus;//一个扰动数据传输状态 int m_ACCNum;//扰动数据通道数 BYTE m_iTOV;//扰动数据类型 int m_iHaveWaveFile; CP56Time2a m_LastTimeFTime; CP56Time2a m_ThisTimeFTime; CP56Time2a m_LastFaultTime; int m_iWavType; int m_iPrimary; COMMPARAM m_CommParam; COMMPARAM::iterator it;};inline void C103Device::FlibFCB(){ (*it).CCD.CtrlToDev.FCB = !(*it).CCD.CtrlToDev.FCB;};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -