hmk.cpp

来自「这是一个变电站的监控程序」· C++ 代码 · 共 88 行

CPP
88
字号
#include "stdafx.h"
#include "fert2000.h"
#include "process.h"
#include "fert2000Dlg.h"

extern ADDR *Addr;

BYTE HMK_Check(BYTE *buf,int iLen)
{
	int sum = 0;
	for (int i = 0;i < iLen;i++)
		sum = sum + buf[i];
	return (sum % 256);
}

void HMK(int iChNo,int iRtuNo)
{
	int SendLen = 0,RecLen = 0,iRet = 0;
	STATION *station = Addr->Station_addr;
	CHANPARA *chanpara = Addr->ChanPara_addr + iChNo;
	RTUPARA *rtupara = GetRtuParaPt(Addr,iRtuNo);
	if (!rtupara) return;
	BYTE *SendBuf = &chanpara->SendBuffer[0];
	BYTE *RecBuf = &chanpara->RecBuffer[0];
	SendBuf[0]=0x0;
	SendBuf[1]=0x5;


	SendBuf[2]='T';
	SendBuf[3]='P';
	SendBuf[4]=HMK_Check(SendBuf,4);
	SendLen=5;
	ChanBufRead(iChNo,RecBuf,1024);
	ChanBufWrite(iChNo,SendBuf,SendLen);
	DispBufData(iChNo,iRtuNo,0,SendBuf,SendLen,0);
	Sleep(20);
	iRet=ChanBufRead(iChNo,RecBuf,5);
	int iStatus = 2;
	if (iRet == 5 && RecBuf[0] == 0 && RecBuf[4] == HMK_Check(RecBuf,4))
	{
		iStatus = 0;
		RecLen=iRet;
		rtupara->YcValue[0] = RecBuf[3];

		if (rtupara->bWorking == false)
				ChannelEvent(iRtuNo,2);
		rtupara->bWorking = true;
		rtupara->bFault = false;
		rtupara->AskTimers = 0;
	}
	else
	{
		iStatus = 1;
		rtupara->AskTimers++;
	}
	DispBufData(iChNo,iRtuNo,1,RecBuf,RecLen,iStatus);

	Sleep(10);
	SendBuf[2]='V';
	SendBuf[3]='T';
	SendBuf[4]=HMK_Check(SendBuf,4);
	SendLen=5;
	ChanBufRead(iChNo,RecBuf,1024);
	ChanBufWrite(iChNo,SendBuf,SendLen);
	DispBufData(iChNo,iRtuNo,0,SendBuf,SendLen,0);
	Sleep(20);
	iRet=ChanBufRead(iChNo,RecBuf,5);
	iStatus = 2;
	if (iRet == 5 && RecBuf[0] == 0 && RecBuf[4] == HMK_Check(RecBuf,4))
	{
		iStatus = 0;
		RecLen=iRet;
		rtupara->YcValue[1] = RecBuf[2] * 256 + RecBuf[3];

		if (rtupara->bWorking == false)
				ChannelEvent(iRtuNo,2);
		rtupara->bWorking = true;
		rtupara->bFault = false;
		rtupara->AskTimers = 0;
	}
	else
	{
		iStatus = 1;
		rtupara->AskTimers++;
	}
	DispBufData(iChNo,iRtuNo,1,RecBuf,RecLen,iStatus);

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?