资源简介
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.xm
文件 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.em
文件 732 2019-01-30 17:09 IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\IEC104Slave.exe.em
文件 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\li
文件 2 2019-02-12 14:59 IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\li
文件 2 2019-02-12 14:59 IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\li
文件 2 2019-02-12 14:59 IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\li
文件 2 2019-02-12 14:59 IEC104SlaveV1.1 -完成手动发送 - 副本\IEC104Slave\Debug\li
............此处省略200个文件信息
相关资源
- OLED驱动源码
- tm1650+stm32f103源码(board_tm1650.c)
- 颜色识别形状识别STM103嵌入式代码
- cheat engine 7.2源码
- CrySearch内存搜索器源码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- MFC视频播放器源码(支持avi/wma/mp3等格
- CreatBitmap图片合成源码
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
- VC++基于OpenGL模拟的一个3维空间模型
- c++ 虚拟摄像头
- vs2008 can总线通讯源码
- 宠物管理系统课程设计(源码+数据库
- hook,捕获所有案件,查找所有窗口,
- C语言课设计算器
- Windows扩展命令程序(源码)
- c语言实现火车订票系统(控制台)源
- 鼠标连点器(附源码)
- c++ 简易贪吃蛇源码
- 杀毒软件源码
- 经典外汇智能交易程序Amazing3.1源码(
- 高精度加法(c++代码)
- C++调用百度地图案例
- 微型文件系统源码(FatFs)
- 北京化工大学计算方法(C/C++)讲义
- 基于VC++的SolidWorks二次开发SolidWorks
评论
共有 条评论