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

📄 processpzdkdirect.cpp

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

extern bool bStopFlag;
extern RecSendThread RecSendThread1;
extern  CFert2000App theApp;
extern ADDR *Addr;

BYTE PZDKDirect_Check(BYTE * buf,int iLen)
{
 	WORD dwSum = 0;
	BYTE  wSum =0;
	for (int i = 0;i < iLen;i++)
	{
		dwSum += buf[i];
	}
    wSum=dwSum%0xff;     
	return wSum;  
}

void PZDKDirect(int i,int RtuNo)
{
	int iStatus = 2;
	int SendLen = 0,RecLen = 0;
	int iRet = 0;
    CHANPARA *chanpara=Addr->ChanPara_addr+i;
	RTUPARA * rtupara=GetRtuParaPt(Addr,RtuNo);
	if(!rtupara)
		return;
	BYTE *SendBuf=&chanpara->SendBuffer[0];
	BYTE *RecBuf=&chanpara->RecBuffer[0];
    
	SendBuf[0] = 0x50;
	SendLen=1;
	ChanBufRead(i,RecBuf,1024);
	ChanBufWrite(i,SendBuf,SendLen);
	Sleep(50);
	DispBufData(i,RtuNo,0,&SendBuf[0],SendLen,0);

    iRet=ChanBufRead(i,&RecBuf[0],18);
	if(iRet==18)
	{
        iStatus=0;
		for(int k=0;k<18;k++)
		{
			switch(k)
			{
			case 1:
				{
					rtupara->YcValue[0]=(RecBuf[1]+RecBuf[2]*256)/10;
					k++;
					break;
				}
			case 3:
				rtupara->YcValue[1]=RecBuf[3];
				break;
			case 4:
				rtupara->YcValue[2]=RecBuf[4];
				break;
			case 9:
			case 11:
			case 13:
				{
					if(k==9)
						rtupara->YcValue[3]=RecBuf[9];
					if(k==11)
						rtupara->YcValue[4]=RecBuf[11];
					if(k==13)
						rtupara->YcValue[5]=RecBuf[13];
					break;
				}
			case 5:
			case 6:
				{
					if(RecBuf[k]==0x0b)
						rtupara->YxValue[k-5]=1;
					else
						rtupara->YxValue[k-5]=0;
					break;
				}
			case 7:
				{
					if(RecBuf[7]==0x16)
						rtupara->YxValue[2]=1;
					break;
				}
			case 10:
				{
					if(RecBuf[10]==0x20)
						rtupara->YxValue[3]=1;
					else 
						rtupara->YxValue[3]=0;
					break;
				}
			case 12:
				{
					if(RecBuf[12]==0x20)
						rtupara->YxValue[4]=1;
					else 
						rtupara->YxValue[4]=0;
					break;
				}
			case 14:
				{
					if(RecBuf[14]==0x20)
						rtupara->YxValue[5]=1;
					else 
						rtupara->YxValue[5]=0;
					break;
				}
			}
		}
		DispBufData(i,RtuNo,1,RecBuf,18,iStatus);
	}
	else if(iRet>0)
	{
		iStatus=1;
		DispBufData(i,RtuNo,1,RecBuf,iRet,iStatus);
	}
	else
	{
		iStatus=2;
		DispBufData(i,RtuNo,1,RecBuf,iRet,iStatus);
	}

	if (rtupara->RecFullYx == 255)
		rtupara->RecFullYx = 0;
	else if (rtupara->RecFullYx == 0)
		rtupara->RecFullYx = 1;
}

⌨️ 快捷键说明

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