📄 server1.cpp
字号:
}
}
}//4
break;
case 3:
if(Get_st_state(yddds.yddds[i].st)==0)
{//5
if(Timedata.NowdataRec[j].nowdata==yddds.yddds[i].offvalue)
{//4
dd_fd_flag[yddds.yddds[i].st][yddds.yddds[i].kckzk]=1;
yddd_flag[yddds.yddds[i].st]=1;
}//4
else if(Timedata.NowdataRec[j].nowdata==yddds.yddds[i].onvalue)
{//4
if(PanFZOut(yddds.yddds[i].st, yddds.yddds[i].kckzk)==0) //贺加 2004-12-22 判断本地断电
yddd_flag[yddds.yddds[i].st]=1;
}//4
//5
}
break;
}
}//3
}//2
}//1
for(i=0;i<yddds.num;i++)
{
if(yddd_flag[yddds.yddds[i].st]==1)
{
if(dd_fd_flag[yddds.yddds[i].st][yddds.yddds[i].kckzk]==1)
{
if(((kckz[yddds.yddds[i].st]) & (1<<yddds.yddds[i].kckzk))==0)
kckzword[yddds.yddds[i].st]=kckzword[yddds.yddds[i].st] | (1<<yddds.yddds[i].kckzk);
}else{
if(((kckz[yddds.yddds[i].st]) & (1<<yddds.yddds[i].kckzk))!=0)
kckzword[yddds.yddds[i].st]=kckzword[yddds.yddds[i].st] & (~(1<<yddds.yddds[i].kckzk));
}
}
}
for(i=0;i<yddds.num;i++)
{
if(kckzword[yddds.yddds[i].st]!=kckz[yddds.yddds[i].st]){ //break;
if(yddd_flag[yddds.yddds[i].st]==1)
{
if (send_flag[yddds.yddds[i].st]==0)
{
yddd_time_flag[yddds.yddds[i].st]=GetTickCount();
for(k=0;k<20;k++)
{
if(ctrout[k].flag==false)
{
ctrout[k].length=2;
ctrout[k].stno=yddds.yddds[i].st;
ctrout[k].kc[0]=kckzword[yddds.yddds[i].st] & 0xff;
ctrout[k].kc[1]=(kckzword[yddds.yddds[i].st] & 0xff00)/256;
yddd_flag[yddds.yddds[i].st]=0;
send_flag[yddds.yddds[i].st]=1;
ctrout[k].flag=true;
break;
}
}
}
else
{
if(abs(GetTickCount()-yddd_time_flag[yddds.yddds[i].st])>=5000)
send_flag[yddds.yddds[i].st]=0;
}
}
}
}
return S_OK;
}
STDMETHODIMP Server1::Get_trace_notice(int *notice)
{
// TODO: Add your implementation code here
if(1)
*notice=1;
else
*notice=0;
return S_OK;
}
STDMETHODIMP Server1::Get_ryjc_trace_tab(short tjNo, BSTR *name, short *workno, BSTR *depart, DATE *dt, short *reno, short *perID,short *addrno)
{
// TODO: Add your implementation code here
/* char ee[20]="软件工程项目科室";
char tt[16]="吕鹏飞";
signed_To_unsigned(ee,trctjb[tjNo].depart);
signed_To_unsigned(tt,trctjb[tjNo].name);*/
*name=NULL;
*depart=NULL;
char lpstr[34]="";
char mpstr[30]="";
*workno=trctjb[tjNo].workno;
*dt=trctjb[tjNo].dt;
*reno=trctjb[tjNo].reno;
*addrno=trctjb[tjNo].addrno;
*perID=trctjb[tjNo].personID;
unsigned_To_signed(trctjb[tjNo].name,lpstr);
unsigned_To_signed(trctjb[tjNo].depart,mpstr);
LPOLESTR str=NULL;
AnsiToUnicode(lpstr,&str);//转化成宽字节字符串
*name=SysAllocString(str);//分配字符串
CoTaskMemFree(str);//释放内存空间
AnsiToUnicode(mpstr,&str);
*depart=SysAllocString(str);
CoTaskMemFree(str);//释放内存空间
return S_OK;
}
STDMETHODIMP Server1::Get_ryjc_trace_num(int *trace_num,int *updown_num,int *alarm_num,int *fieldalarm_num,int *fieldrecord_num,int *flag)
{
// TODO: Add your implementation code here
*trace_num=traceNum;
*updown_num=up_ct;
*alarm_num=alm_ct;
*fieldalarm_num=rjalarm_ct;
*fieldrecord_num=fieldlist_ct;
*flag=trac_flg;
return S_OK;
}
STDMETHODIMP Server1::Set_ryjc_trace_Num(int trace_num,int updown_num,int alarm_num,int fieldalarm_num,int fieldrecord_num,int flag)
{
// TODO: Add your implementation code here
traceNum=trace_num;
trac_flg=flag;
up_ct=updown_num;
alm_ct=alarm_num;
rjalarm_ct=fieldalarm_num;
fieldlist_ct=fieldrecord_num;
return S_OK;
}
STDMETHODIMP Server1::Get_notice_flag(int *notice)
{
// TODO: Add your implementation code here
*notice=trace_notice;
return S_OK;
}
STDMETHODIMP Server1::Set_notice_flag(int notice)
{
// TODO: Add your implementation code here
trace_notice=notice;
return S_OK;
}
void Server1::signed_To_unsigned(char *str1,unsigned char *str2)
{
int i;
int count =strlen(str1);
for(i=0;i<count;i++)
str2[i]=str1[i];
}
void Server1::unsigned_To_signed(unsigned char *str1,char *str2)
{
int i;
int count =_mbslen(str1);
for(i=0;i<(count*2);i++)
str2[i]=str1[i];
}
STDMETHODIMP Server1::SetCurrentDirectory(LPSTR path)
{
// TODO: Add your implementation code here
char tmp1[50];
unsigned char tmp2[50]="";
strcpy(tmp1,path);
signed_To_unsigned(tmp1,tmp2);
_mbscpy(Curpath,tmp2);
return S_OK;
}
STDMETHODIMP Server1::initsys()
{
// TODO: Add your implementation code here
termhd=CreateSemaphore(NULL,0,10,"TermProc");
copy_flag=1;
return S_OK;
}
STDMETHODIMP Server1::ReleaseSys()
{
// TODO: Add your implementation code here
bool bl;
long ct;
bl=ReleaseSemaphore(termhd,10,&ct);
return S_OK;
}
STDMETHODIMP Server1::SetLoadflg(int flg)
{
// TODO: Add your implementation code here
load_flg=flg;
return S_OK;
}
void Server1::ryjc_fz_err_dj(int stNo)
{
// TODO: Add your implementation code here
int j;
int ErrNum=errorrecord.ErrorNum;
for (j=0;j<ErrNum;j++)
{
if (errorrecord.ErrorRec[j].errorflag==2)
{
if (errorrecord.ErrorRec[j].addr_sensor==stNo)
break;
}
}
/***********************登记分站故障********************/
if (j==ErrNum)
{
ErrNum=ErrNum+1;
errorrecord.ErrorNum=ErrNum;
errorrecord.ErrorRec[ErrNum-1].fz_cd_num=stNo;
errorrecord.ErrorRec[ErrNum-1].errorflag=2;
errorrecord.ErrorRec[ErrNum-1].error_type=0;
SYSTEMTIME start_time;
GetLocalTime(&start_time); // address of system time structure
errorrecord.ErrorRec[ErrNum-1].start_time=dateCal(start_time.wYear,start_time.wMonth,start_time.wDay,start_time.wHour,start_time.wMinute,start_time.wSecond);
errorrecord.ErrorRec[ErrNum-1].addr_sensor = stNo;
errorrecord.ErrorRec[ErrNum-1].val=0;
unsigned char temp[60];
signed_To_unsigned("",temp);
_mbscpy(errorrecord.ErrorRec[ErrNum-1].name,temp);
_mbscpy(errorrecord.ErrorRec[ErrNum-1].describe,temp);
}
}
STDMETHODIMP Server1::Get_ryjc_ErrNum(int *Num)
{
// TODO: Add your implementation code here
int i,status;
for(i=1;i<255;i++)
{
status=Get_st_state(i);
if(status==2)
ryjc_fz_err_dj(i);
}
*Num=errorrecord.ErrorNum;
return S_OK;
}
STDMETHODIMP Server1::cd_alarm_mnl_db(int cdNo)
{
// TODO: Add your implementation code here
int j;
float tmp;
int AlarmNum=alarmrecord.AlarmNum;
for (j=0;j<AlarmNum;j++)
{
tmp=alarmrecord.AlarmRec[j].avgv;
if(Timedata.NowdataRec[cdNo].addr_sensor==alarmrecord.AlarmRec[j].addr_sensor)
{
if(Timedata.NowdataRec[cdNo].nowdata<alarmrecord.AlarmRec[j].minv)
{
alarmrecord.AlarmRec[j].minv=Timedata.NowdataRec[cdNo].nowdata;
}
if(Timedata.NowdataRec[cdNo].nowdata>alarmrecord.AlarmRec[j].maxv)
{
alarmrecord.AlarmRec[j].maxv=Timedata.NowdataRec[cdNo].nowdata;
}
if(Alarm_Flag[cdNo]!=Timedata.NowdataRec[cdNo].nowdata)
{
Alarm_Flag[cdNo]=Timedata.NowdataRec[cdNo].nowdata;
alarmrecord.AlarmRec[j].avgv=(tmp+Timedata.NowdataRec[cdNo].nowdata)/2;
}
break;
}
}
return S_OK;
}
STDMETHODIMP Server1::Get_rjerr(int errNo, int *fzNo, BYTE *errtype, DATE *start_time, DATE *end_time, BSTR *name, BSTR *describe, int *val)
{
// TODO: Add your implementation code here
char *lpstr="test";
char *mpstr="test";
*fzNo=erroroldrecord.ErroroldRec[errNo].addr_sensor;
*errtype=erroroldrecord.ErroroldRec[errNo].errorflag;
*start_time=erroroldrecord.ErroroldRec[errNo].start_time;
*end_time=erroroldrecord.ErroroldRec[errNo].end_time;
*val=0;
// unsigned_To_signed(erroroldrecord.ErroroldRec[errNo].name,lpstr);
// unsigned_To_signed(erroroldrecord.ErroroldRec[errNo].describe,mpstr);
LPOLESTR str=NULL;
AnsiToUnicode(lpstr,&str);//转化成宽字节字符串
*name=SysAllocString(str);//分配字符串
CoTaskMemFree(str);//释放内存空间
AnsiToUnicode(mpstr,&str);
*describe=SysAllocString(str);
CoTaskMemFree(str);//释放内存空间
return S_OK;
}
STDMETHODIMP Server1::Get_Save_NowData(int i, int *addr_sensor, float *nowdata, float *data1, float *data2, float *data3, float *data4, int *timeflag, int *rcdw)
{
// TODO: Add your implementation code here
*addr_sensor=Timedata.NowdataRec[i].addr_sensor;
*nowdata=Timedata.NowdataRec[i].nowdata;
*data1=Timedata.NowdataRec[i].data1;
*data2=Timedata.NowdataRec[i].data2;
*data3=Timedata.NowdataRec[i].data3;
*data4=Timedata.NowdataRec[i].data4;
*timeflag=Timedata.NowdataRec[i].timeflag;
*rcdw=Timedata.NowdataRec[i].rcdw;
return S_OK;
}
STDMETHODIMP Server1::Get_NowBj_Num(int *num)
{
// TODO: Add your implementation code here
*num=alarmrecord.AlarmNum;
return S_OK;
}
STDMETHODIMP Server1::Get_NowGz_Num(int *num)
{
// TODO: Add your implementation code here
*num=errorrecord.ErrorNum;
return S_OK;
}
STDMETHODIMP Server1::Get_NowBj(int alarNo, int *addr_sensor, DATE *start_time, float *maxv, float *minv, float *avgv)
{
// TODO: Add your implementation code here
*addr_sensor=alarmrecord.AlarmRec[alarNo].addr_sensor;
*start_time=alarmrecord.AlarmRec[alarNo].start_time;
*maxv=alarmrecord.AlarmRec[alarNo].maxv;
*minv=alarmrecord.AlarmRec[alarNo].minv;
*avgv=alarmrecord.AlarmRec[alarNo].avgv;
return S_OK;
}
STDMETHODIMP Server1::Get_NowGz(int errNo, BYTE *errorflag, int *addr_sensor, DATE *start_time, BYTE *error_type)
{
// TODO: Add your implementation code here
*errorflag=errorrecord.ErrorRec[errNo].errorflag;
*addr_sensor=errorrecord.ErrorRec[errNo].addr_sensor;
*start_time=errorrecord.ErrorRec[errNo].start_time;
*error_type=errorrecord.ErrorRec[errNo].error_type;
return S_OK;
}
STDMETHODIMP Server1::Get_Fz_State(int num, byte *test)
{
// TODO: Add your implementation code here
int i;
for(i=0; i<num;i++)
{
if(stinfo.stinfo[i]==2)
test[i]=0;
else
test[i]=6;
}
return S_OK;
}
STDMETHODIMP Server1::Get_Kckz(int num,long *kckzz)
{
// TODO: Add your implementation code here
int i;
for(i=0;i<num;i++)
{
kckzz[i]=kckz[i];
}
return S_OK;
}
STDMETHODIMP Server1::clearscan()
{
// TODO: Add your implementation code here
scanflg=false;
return S_OK;
}
STDMETHODIMP Server1::Get_ErrInfo(int Addr_Sensor, int *State)
{
// TODO: Add your implementation code here
int stNo;
*State=-1;
int index=Addr_Sensor/50;
int sensor=Addr_Sensor%50;
if(File3.file3[Addr_Sensor % 50].property==0x11)// 导出模拟量
return S_OK;
stNo=File6.file6[sensor][index].addr;
//if(Get_st_state(stNo)==2)
// *State=2;于改
*State=Get_st_state(stNo);
if((File4.flag[stNo]&0x80)!=0) //分站休眠
*State=3;
return S_OK;
}
STDMETHODIMP Server1::Get_ryjc_alarm_tab(short tjNo, BSTR *name, short *workno, BSTR *depart, DATE *dt, short *reno, short *perID, short *addrno)
{
// TODO: Add your implementation code here
*name=NULL;
*depart=NULL;
char lpstr[34]="";
char mpstr[30]="";
*workno=almtj[tjNo].workno;
*dt=almtj[tjNo].dt;
*reno=almtj[tjNo].reno;
*addrno=almtj[tjNo].addrno;
*perID=almtj[tjNo].personID;
unsigned_To_signed(almtj[tjNo].name,lpstr);
unsigned_To_signed(almtj[tjNo].depart,mpstr);
LPOLESTR str=NULL;
AnsiToUnicode(lpstr,&str);//转化成宽字节字符串
*name=SysAllocString(str);//分配字符串
CoTaskMemFree(str);//释放内存空间
AnsiToUnicode(mpstr,&str);
*depart=SysAllocString(str);
CoTaskMemFree(str);//释放内存空间
return S_OK;
}
STDMETHODIMP Server1::Get_ryjc_updown_tab(short tjNo, BSTR *name, short *workno, BSTR *depart, DATE *updtm, DATE *downdtm, short *up_rno, short *dw_rno, short *personID, short *tag)
{
// TODO: Add your implementation code here
*name=NULL;
*depart=NULL;
char lpstr[34]="";
char mpstr[30]="";
*workno=uptj[tjNo].workno;
*updtm=uptj[tjNo].updtm;
*downdtm=uptj[tjNo].downdtm;
*dw_rno=uptj[tjNo].dw_rno;
*up_rno=uptj[tjNo].up_rno;
*personID=uptj[tjNo].personID;
*tag=uptj[tjNo].tag;
unsigned_To_signed(uptj[tjNo].name,lpstr);
unsigned_To_signed(uptj[tjNo].depart,mpstr);
LPOLESTR str=NULL;
AnsiToUnicode(lpstr,&str);//转化成宽字节字符串
*name=SysAllocString(str);//分配字符串
CoTaskMemFree(str);//释放内存空间
AnsiToUnicode(mpstr,&str);
*depart=SysAllocString(str);
CoTaskMemFree(str);//释放内存空间
return S_OK;
}
STDMETHODIMP Server1::setcopy_flag(int flag)
{
// TODO: Add your implementation code here
copy_flag=flag;
return S_OK;
}
STDMETHODIMP Server1::Get_ryjc_fieldalarm_tab(short tjno, short *stno, short *addrno, DATE *time, short *tag)
{
// TODO: Add your implementation code here
*stno=rjalarmtj[tjno].stno;
*addrno=rjalarmtj[tjno].addrno;
*time=rjalarmtj[tjno].time;
*tag=rjalarmtj[tjno].tag;
return S_OK;
}
STDMETHODIMP Server1::Get_ryjc_Fieldxx_tab(short tjno, short *rfid, short *addrno, DATE *intime, DATE *outtime)
{
// TODO: Add your implementation code here
*rfid=fieldtj[tjno].rfid;
*addrno=field
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -