• 大小: 58.87MB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2022-05-24
  • 语言: C/C++
  • 标签: 104  C++  源码  MFC  协议  

资源简介

IEC104协议服务器从站MFC源码,可直接运行。104协议测试客户端,辅助协议测试。

资源截图

代码片段和文件信息

#include “stdafx.h“
#include “IEC104.h“
#include “IEC104Slave.h“
#include “IEC104SlaveDlg.h“

#define IPADRESS “127.0.0.1“
#define PORT 2404
#define CLIENT_NUM 10
#define MAX_NUM_WORD 1024
#define MAX_ASDU_LENGTH 249

#define NA_TRIP 1
#define NA_CLOSE 0

BOOL isYKACK = false;

BOOL isT1Start = false;
BOOL isT2Start = false;
BOOL isT3Start = false;

BOOL isRevI = false;

int  timer_T1 = 0; // t1计数变量
int  timer_T2 = 0; // t2计数变量
int  timer_T3 = 0; // t3计数变量

int  IMsgLen; // 遥测帧ASDU的长度
BYTE IMsg[249];


#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

CIEC104 *iec104;

BOOL IsTimerHandler = TRUE;
BOOL isDealiframeHandler = TRUE;
BOOL isDealNoiframeResponseS = TRUE;

HANDLE      hTrThread   = NULL;
HANDLE hDealiframeThread = NULL; //处理I帧线程lwu
HANDLE      hDealNOSResponse  = NULL; //处理I帧返回S帧响应

//定义结构体类型;
typedef struct ClientInfo
{
Socket sock;

}ClientInfomation;


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CIEC104::CIEC104()
{
iec104 = this;
this->Connected = false;

SetParams();

hTrThread = 0;

RxCounter = 0;
TxCounter = 0;
LastAckRx = 0;
LastAckTx = 0;

isT1Start = false;
isT2Start = false;
isT3Start = false;

timer_T1 = 0; // t1计数变量
timer_T2 = 0; // t2计数变量
timer_T3 = 0; // t3计数变量
}

CIEC104::~CIEC104()
{


}


DWORD WINAPI CIEC104::DealNOiframeResponseS(LPVOID lpParam)      // 未被确认的 I 帧最大数目 k
{
/*
while(isDealNoiframeResponseS)
{
if((iec104slave->TxCounter - iec104slave->LastAckTx) >= (iec104slave->K)*2)   // 发送的需要与最后响应的序号比较差值大于K
{
iec104slave->Iec104Disconnect();  // 断开连接
iec104slave->Iec104StartListen();  // 重新启动监听
iec104slave->TxCounter = 0;
iec104slave->LastAckTx = 0;
}
}
*/
if(hDealNOSResponse != NULL)
{
CloseHandle(hDealNOSResponse);
hDealNOSResponse = NULL;
}
return 0;
}


BOOL CIEC104::GetSockConnectStatus()
{
return Connected;
}

/* 解析I格式报文*/
int CIEC104::ProcessFormatI(BYTE *msgbuf unsigned int len)
{
// 应该将整个ASDU传输过来,而不应该只是一个ASDU头
unsigned short i;
AsduQualifier = msgbuf[STARTQUALIFIER];

ASDU_header *header=NULL;
unsigned char num=0 cause=0 n=0;
bool seq=false;
int  asdu=0;

header = (ASDU_header*)msgbuf;

num = header->qual & 0x7F;            // number of objects.
if(header->qual & 0x80)            // sequence of objects ?
seq = true;

cause = header->tx_cause_1;            // cause of tx.
asdu = header->commom_asdu_2 << 8;
asdu |= header->commom_asdu_1;

// actual time
SYSTEMTIME st;
FILETIME ft;
GetSystemTime(&st);
SystemTimeToFileTime(&st&ft);

// type identification
switch(header->type)
{
case 1: // 单点遥信
if(cause == 5)
Iec104YXACK(msgbuf len)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     246272  2019-02-12 14:58  IEC104SlaveV1.1 -完成手动发送 - 副本\Debug\IEC104Slave.exe

     文件       1266  2019-01-11 16:44  IEC104SlaveV1.1 -完成手动发送 - 副本\Debug\IEC104Slave.exe.CodeAnalysisLog.xml

     文件          0  2019-01-11 16:44  IEC104SlaveV1.1 -完成手动发送 - 副本\Debug\IEC104Slave.exe.lastcodeanalysissucceeded

     文件    1639796  2019-02-12 14:58  IEC104SlaveV1.1 -完成手动发送 - 副本\Debug\IEC104Slave.ilk

     文件    5590016  2019-02-12 14:58  IEC104SlaveV1.1 -完成手动发送 - 副本\Debug\IEC104Slave.pdb

     文件      29652  2019-01-15 14:29  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104.cpp

     文件       7107  2019-01-11 11:35  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104.h

     文件      20438  2019-02-12 14:58  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\cl.command.1.tlog

     文件     315554  2019-02-12 14:58  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\CL.read.1.tlog

     文件      28072  2019-02-12 14:58  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\CL.write.1.tlog

     文件      10685  2019-01-11 16:43  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\IEC104Slave.Build.CppClean.log

     文件        667  2019-01-11 16:44  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\IEC104Slave.exe.embed.manifest

     文件        732  2019-01-30 17:09  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\IEC104Slave.exe.embed.manifest.res

     文件        381  2019-02-12 14:58  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\IEC104Slave.exe.intermediate.manifest

     文件        124  2019-02-12 14:59  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\IEC104Slave.lastbuildstate

     文件       3096  2019-02-12 14:59  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\IEC104Slave.log

     文件      33796  2019-02-12 11:40  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\IEC104Slave.obj

     文件   33882112  2019-01-30 17:09  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\IEC104Slave.pch

     文件   34013184  2019-01-11 16:44  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\IEC104Slave.pch.codeanalysis

     文件   94896128  2019-01-11 16:44  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\IEC104Slave.pch.codeanalysisast

     文件      71772  2019-02-12 14:19  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\IEC104Slave.res

     文件        713  2019-01-14 09:09  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\IEC104Slave.vcxprojResolveAssemblyReference.cache

     文件          0  2019-01-11 16:43  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\IEC104Slave.write.1.tlog

     文件     147960  2019-02-12 11:40  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\IEC104SlaveDlg.obj

     文件        212  2019-01-11 16:44  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\IEC104Slave_manifest.rc

     文件          2  2019-02-12 14:59  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\link-cvtres.read.1.tlog

     文件          2  2019-02-12 14:59  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\link-cvtres.write.1.tlog

     文件          2  2019-02-12 14:59  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\link.10296-cvtres.read.1.tlog

     文件          2  2019-02-12 14:59  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\link.10296-cvtres.write.1.tlog

     文件          2  2019-02-12 14:59  IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\link.10296.read.1.tlog

............此处省略200个文件信息

评论

共有 条评论