⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 103device.h

📁 电力系统Linux设备通讯程序 主要是为了各大电网通讯数据代码
💻 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 + -