📄 dblink.cpp
字号:
#include "stdafx.h"
#include "\nsa2000\dev\env\inc\fjrlibdef.h" //读写开关状态
#include "\nsa2000\dev\env\inc\FjMsgDef.h" //消息定义
#include "dblink.h"
extern HWND hWndScada;
class YKTRANSDEFINE ykTrans;
void YKTRANSDEFINE::DoYkProc()
{
WORD wParam;
DWORD lParam;
times++;
if (times<10) return;
times=0;
if (needTransYkNum==0) return;
wParam=(transBuf[0].CmdCode << 8) + transBuf[0].FunCode;
lParam = (transBuf[0].RtuNO <<16) + transBuf[0].Obj;
::PostMessage(hWndScada,FJD_MSG_SCD_PIC_YKYT, wParam, lParam);
DeleteOneYkProc();
}
void VqcPutMsgProc(int rtu, char *pMsg)
{
FJS_MSG_STRUCT Msg;
CTime ct = CTime::GetCurrentTime();
time_t ht;
Msg.type=FJD_MSG_TYPE_ASCII;
Msg.alrm=FJD_ALRM_NORMAL; //深绿
ht= ct.GetTime();
Msg.msg.asc.tim=ht+28800;
Msg.msg.asc.type=FJD_MSG_ASC_TYPE_ALRM; //FJD_MSG_ASC_TYPE_NONE;
Msg.msg.asc.asc[0] = 0;
if (rtu>=0) FjLibGetRtuName(rtu,Msg.msg.asc.asc);
lstrcat(Msg.msg.asc.asc, " ");
lstrcat(Msg.msg.asc.asc, pMsg);
FjLibPutMsg(Msg);
}
void CmdOutScada(WORD RtuNO, WORD CmdCode,WORD FunCode, short Obj) //FunCode=FJD_MSG_PIC_YK_ON, FJD_MSG_PIC_YK_OFF
{
ykTrans.AppendOneYkProc(RtuNO, CmdCode,FunCode, Obj);
}
//保护接口函数
int GetBhUintNumProc(int rtuNo)
{
if ((rtuNo<0)||(rtuNo>255)) return 0;
char head[12];
wsprintf(head, "Relay%02d", rtuNo);
return (GetPrivateProfileInt(head,"UnitNum",0,RELAY_INIT_FILE));
}
void GetBhNameProc(int rtu,int dot,char *name)
{
char fileName[64], head[12];
if ((rtu<0)||(rtu>255)) return;
if ((dot<0)||(dot>6000)) return;
wsprintf(fileName, "\\nsa2000\\init\\rly%02d.ini", rtu);
wsprintf(head, "Unit%02d", dot);
GetPrivateProfileString(head,"Name", NULL, (LPSTR)name, 64, fileName);
}
void DATABH_DEF::GetName(char *name)
{
if ((rtu<0)||(rtu>255)) return;
if ((dot<0)||(dot>6000)) return;
GetBhNameProc(rtu,dot,name);
}
void DATABH_DEF::SetActStatus(int rtuNo, int dotNo)
{
if (rtu!=rtuNo) return;
if (dot!=dotNo) return;
actStat = TRUE;
}
BOOL DATABH_DEF::GetActStatus()
{
return actStat;
}
void DATABH_DEF::ClearActStatus()
{
actStat = FALSE;
}
//遥信接口函数
void DATAYX_DEF::GetName(char *name)
{
if ((rtu<0)||(rtu>255)) return;
if (idType==ID_TYPE_RTU){
FjLibGetRtuName(rtu, name);
return;
}
if (idType==ID_TYPE_WORKSTATION){
FjLibGetWsName(rtu, name);
return;
}
if ((dot<0)||(dot>6000)) return;
if (idType==ID_TYPE_ADEV){
FjLibGetADevName(rtu, dot, name);
return;
}
if (idType==ID_TYPE_YX){
FjLibGetYxName(rtu, dot, name);
return;
}
}
WORD DATAYX_DEF::GetStatusWord()
{
if ((rtu<0)||(rtu>255)) return 0;
if (idType==ID_TYPE_RTU) return (FjLibGetRtuRunState(rtu));
if (idType==ID_TYPE_WORKSTATION) return (FjLibGetWsState(rtu, NULL));
if ((dot<0)||(dot>6000)) return 0;
if (idType==ID_TYPE_ADEV) return (FjLibGetADevState(rtu, dot));
if (idType==ID_TYPE_YX) return (FjLibGetYxState(rtu,dot));
return 0;
}
BOOL DATAYX_DEF::GetStatus()
{
WORD stat;
stat = GetStatusWord();
if (stat & FJD_YXDEV_ON) return TRUE;
return FALSE;
}
void DATAYX_DEF::SetWfStatus(BOOL status)
{
if ((rtu<0)||(rtu>255)) return;
if ((dot<0)||(dot>6000)) return;
char szText[128];
if (status){
if (GetStatus()) return;
GetName(szText);
strcat(szText, " 动作");
}
else{
if (!GetStatus()) return;
GetName(szText);
strcat(szText, " 复归");
}
int facNo;
facNo = rtu;
if (facNo>64) facNo = 0;
VqcPutMsgProc(facNo, szText);
FjLibPutYxState(rtu,dot, (BYTE)status);
}
short DATAYX_DEF::GetYkObjNo()
{
FJS_PARAM_YX yxPar;
if ((rtu<0)||(rtu>255)) return -1;
if ((dot<0)||(dot>6000)) return -1;
if (idType!=ID_TYPE_YX) return -1;
FjLibGetYxPar(rtu,dot, yxPar);
return yxPar.objYxYk;
}
BOOL DATAYX_DEF::DoYkProc(BOOL bClose)
{
WORD CmdCode, FunCode;
short ObjNO;
if ((rtu<0)||(rtu>255)) return FALSE;
if ((dot<0)||(dot>6000)) return FALSE;
if (idType!=ID_TYPE_YX) return FALSE;
CmdCode = FJD_MSG_PIC_YT_EXE;
if (bClose)
FunCode = FJD_MSG_PIC_YT_UP;
else FunCode = FJD_MSG_PIC_YT_DOWN;
ObjNO = GetYkObjNo();
char msg[128];
strcpy(msg,"VQC动作,");
if (bClose) strcat(msg, "合上:");
else strcat(msg, "分开:");
GetName(&msg[strlen(msg)]);
VqcPutMsgProc(rtu,msg);
CmdOutScada(rtu, CmdCode, FunCode, ObjNO); //-> ZyScada
return TRUE;
}
//遥调接口函数
void DATAYT_DEF::GetName(char *name)
{
if ((rtu<0)||(rtu>255)) return;
if ((dot<0)||(dot>6000)) return;
FjLibGetYtName(rtu, dot, name);
}
short DATAYT_DEF::GetYtObjNo(BOOL bUp)
{
FJS_PARAM_YT ytPar;
if ((rtu<0)||(rtu>255)) return -1;
if ((dot<0)||(dot>6000)) return -1;
FjLibGetYtPar(rtu,dot, ytPar);
if (bUp) return ytPar.objYtUp;
else return ytPar.objYtDown;
}
float DATAYT_DEF::GetYtValue()
{
return ((float)FjLibGetYtValue(rtu, dot));
}
short DATAYT_DEF::GetYtJTObjNo()
{
FJS_PARAM_YT ytPar;
if ((rtu<0)||(rtu>255)) return -1;
if ((dot<0)||(dot>6000)) return -1;
FjLibGetYtPar(rtu,dot, ytPar);
return ytPar.objYtStop;
}
BOOL DATAYT_DEF::DoYtProc(BOOL bUp)
{
WORD CmdCode, FunCode;
short ObjNO;
if ((rtu<0)||(rtu>255)) return FALSE;
if ((dot<0)||(dot>6000)) return FALSE;
CmdCode = FJD_MSG_PIC_YT_EXE;
if (bUp)
FunCode = FJD_MSG_PIC_YT_UP;
else FunCode = FJD_MSG_PIC_YT_DOWN;
ObjNO = GetYtObjNo(bUp);
char msg[128];
strcpy(msg,"VQC动作,");
if (bUp) strcat(msg, "升档:");
else strcat(msg, "降档:");
GetName(&msg[strlen(msg)]);
VqcPutMsgProc(rtu,msg);
CmdOutScada(rtu, CmdCode, FunCode, ObjNO); //-> ZyScada
return TRUE;
}
BOOL DATAYT_DEF::DoYtStopProc()
{
WORD CmdCode, FunCode;
short ObjNO;
if ((rtu<0)||(rtu>255)) return FALSE;
if ((dot<0)||(dot>6000)) return FALSE;
CmdCode = FJD_MSG_PIC_YT_EXE;
FunCode = FJD_MSG_PIC_YT_STOP;
ObjNO = GetYtJTObjNo();
char msg[128];
strcpy(msg,"VQC判定滑档,分接头急停:");
GetName(&msg[strlen(msg)]);
VqcPutMsgProc(rtu,msg);
CmdOutScada(rtu, CmdCode, FunCode, ObjNO); //-> ZyScada
return TRUE;
}
//保遥测接口函数
void DATAYC_DEF::GetName(char *name)
{
if ((rtu<0)||(rtu>255)) return;
if ((dot<0)||(dot>6000)) return;
FjLibGetYcName(rtu, dot, name);
}
float DATAYC_DEF::GetValue()
{
return ((float)FjLibGetYcValue(rtu,dot));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -