📄 hmk.cpp
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -