📄 processselectline.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 + -