資源簡介
IEC104協(xié)議服務(wù)器從站MFC源碼,可直接運(yùn)行。104協(xié)議測試客戶端,輔助協(xié)議測試。
代碼片段和文件信息
#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計(jì)數(shù)變量
int ?timer_T2?=?0; //?t2計(jì)數(shù)變量
int ?timer_T3?=?0; //?t3計(jì)數(shù)變量
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幀響應(yīng)
//定義結(jié)構(gòu)體類型;
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計(jì)數(shù)變量
timer_T2 =?0; //?t2計(jì)數(shù)變量
timer_T3 =?0; //?t3計(jì)數(shù)變量
}
CIEC104::~CIEC104()
{
}
DWORD?WINAPI?CIEC104::DealNOiframeResponseS(LPVOID?lpParam)??????//?未被確認(rèn)的?I?幀最大數(shù)目?k
{
/*
while(isDealNoiframeResponseS)
{
if((iec104slave->TxCounter?-?iec104slave->LastAckTx)?>=?(iec104slave->K)*2)? ?//?發(fā)送的需要與最后響應(yīng)的序號比較差值大于K
{
iec104slave->Iec104Disconnect(); ?//?斷開連接
iec104slave->Iec104StartListen(); ?//?重新啟動監(jiān)聽
iec104slave->TxCounter?=?0;
iec104slave->LastAckTx?=?0;
}
}
*/
if(hDealNOSResponse?!=?NULL)
{
CloseHandle(hDealNOSResponse);
hDealNOSResponse?=?NULL;
}
return?0;
}
BOOL?CIEC104::GetSockConnectStatus()
{
return?Connected;
}
/*?解析I格式報(bào)文*/
int?CIEC104::ProcessFormatI(BYTE?*msgbuf?unsigned?int?len)
{
//?應(yīng)該將整個(gè)ASDU傳輸過來,而不應(yīng)該只是一個(gè)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: //?單點(diǎn)遙信
if(cause?==?5)
Iec104YXACK(msgbuf?len)
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件?????246272??2019-02-12?14:58??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\Debug\IEC104Slave.exe
?????文件???????1266??2019-01-11?16:44??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\Debug\IEC104Slave.exe.CodeAnalysisLog.xm
?????文件??????????0??2019-01-11?16:44??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\Debug\IEC104Slave.exe.lastcodeanalysissucceeded
?????文件????1639796??2019-02-12?14:58??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\Debug\IEC104Slave.ilk
?????文件????5590016??2019-02-12?14:58??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\Debug\IEC104Slave.pdb
?????文件??????29652??2019-01-15?14:29??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104.cpp
?????文件???????7107??2019-01-11?11:35??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104.h
?????文件??????20438??2019-02-12?14:58??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\cl.command.1.tlog
?????文件?????315554??2019-02-12?14:58??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\CL.read.1.tlog
?????文件??????28072??2019-02-12?14:58??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\CL.write.1.tlog
?????文件??????10685??2019-01-11?16:43??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\IEC104Slave.Build.CppClean.log
?????文件????????667??2019-01-11?16:44??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\IEC104Slave.exe.em
?????文件????????732??2019-01-30?17:09??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\IEC104Slave.exe.em
?????文件????????381??2019-02-12?14:58??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\IEC104Slave.exe.intermediate.manifest
?????文件????????124??2019-02-12?14:59??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\IEC104Slave.lastbuildstate
?????文件???????3096??2019-02-12?14:59??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\IEC104Slave.log
?????文件??????33796??2019-02-12?11:40??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\IEC104Slave.obj
?????文件???33882112??2019-01-30?17:09??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\IEC104Slave.pch
?????文件???34013184??2019-01-11?16:44??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\IEC104Slave.pch.codeanalysis
?????文件???94896128??2019-01-11?16:44??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\IEC104Slave.pch.codeanalysisast
?????文件??????71772??2019-02-12?14:19??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\IEC104Slave.res
?????文件????????713??2019-01-14?09:09??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\IEC104Slave.vcxprojResolveAssemblyReference.cache
?????文件??????????0??2019-01-11?16:43??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\IEC104Slave.write.1.tlog
?????文件?????147960??2019-02-12?11:40??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\IEC104SlaveDlg.obj
?????文件????????212??2019-01-11?16:44??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\IEC104Slave_manifest.rc
?????文件??????????2??2019-02-12?14:59??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\li
?????文件??????????2??2019-02-12?14:59??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\li
?????文件??????????2??2019-02-12?14:59??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\li
?????文件??????????2??2019-02-12?14:59??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\li
?????文件??????????2??2019-02-12?14:59??IEC104SlaveV1.1?-完成手動發(fā)送?-?副本\IEC104Slave\Debug\li
............此處省略200個(gè)文件信息
評論
共有 條評論