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

📄 server1.cpp

📁 DCOM 上位机和嵌入式系统通信
💻 CPP
📖 第 1 页 / 共 5 页
字号:
							}
						}
					}//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 + -