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

📄 processselectline.cpp

📁 这是一个变电站的监控程序
💻 CPP
字号:
#include "stdafx.h"
#include "fert2000.h"
#include "process.h"
#include "fert2000Dlg.h"

extern ADDR *Addr;

BYTE SelectLine_Xor(BYTE * buf,int iLen)
{  
	BYTE Val=buf[0];
	for(int i=1;i<iLen;i++)
		Val^=buf[i];
	return Val;
}

void SelectLine(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]=0xf0;
	SendBuf[1]=0x0d;
	SendBuf[2]=0x00;
	SendBuf[3]=0x01;
	SendBuf[4]=0x07;
	SendBuf[5]=SelectLine_Xor(SendBuf,5);
	SendLen=0x06;
	ChanBufRead(iChNo,RecBuf,1024);
	ChanBufWrite(iChNo,SendBuf,SendLen);
	DispBufData(iChNo,iRtuNo,0,SendBuf,SendLen,0);
	Sleep(2000);
	iRet=ChanBufRead(iChNo,RecBuf,12);
	int iStatus = 2;
	if(iRet==12)
	{
		iStatus = 0;
		RecLen=iRet;
//		DispBufData(iChNo,iRtuNo,1,RecBuf,RecLen);
		for(int i=0;i<7;i++)
			for(int j=0;j<8;j++)
				rtupara->YxValue[i*8+j]=(RecBuf[4+i]>>j)&0x01;
		if (rtupara->bWorking == false)
				ChannelEvent(iRtuNo,2);
		rtupara->bWorking = true;
		rtupara->bFault = false;
		rtupara->AskTimers = 0;
		if (rtupara->RecFullYx == 255)
			rtupara->RecFullYx = 0;
		else if (rtupara->RecFullYx == 0)
			rtupara->RecFullYx = 1;
	}
	else
	{
		iStatus = 1;
		rtupara->AskTimers++;
	}
	DispBufData(iChNo,iRtuNo,1,RecBuf,RecLen,iStatus);

	if(rtupara->AskTimers > 5)
	{
		rtupara->bWorking = false;
		if (rtupara->bFault == false)
		{
			ChannelEvent(iRtuNo,1);
			rtupara->bFault = true;
		}
		if (rtupara->AskTimers > 250)
			rtupara->AskTimers = 5;
	}
}

⌨️ 快捷键说明

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