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

📄 netweb.cpp

📁 DCOM 上位机和嵌入式系统通信
💻 CPP
字号:
// netweb.cpp : Implementation of Cnetweb
#include "stdafx.h"
#include "ComServer.h"
#include "netweb.h"
#include "server1.h"
/////////////////////////////////////////////////////////////////////////////
// Cnetweb
STDMETHODIMP Cnetweb::getNetTraceCT(short *count)
{
	// TODO: Add your implementation code here
    *count=net_trc_ct;
	return S_OK;
}

STDMETHODIMP Cnetweb::getNetTrace(short count, short *wno, short *idno, short *rno, DATE *dt, short *addr)
{
	// TODO: Add your implementation code here
 int i;
     for(i=0;i<count;i++)
	 {
       wno[i]=net_trace[i].workno;
	   idno[i]=net_trace[i].personID;
	   rno[i]=net_trace[i].reno;
	   dt[i]=net_trace[i].dt;
	   addr[i]=net_trace[i].addrno;
	 }
	 net_trc_ct-=count;
     if(net_trc_ct!=0)
	 {
        for(i=0;i<net_trc_ct;i++)
		  net_trace[i]=net_trace[count+i];
	 }
	return S_OK;
}

STDMETHODIMP Cnetweb::getNetAlarmtraceCT(short *count)
{
	// TODO: Add your implementation code here
     *count=net_alm_ct;
	return S_OK;
}

STDMETHODIMP Cnetweb::getNetAlarmtrace(short count, short *wno, short *idno, short *rno, DATE *dt, short *addr)
{
	// TODO: Add your implementation code here
 int i;
     for(i=0;i<count;i++)
	 {
       wno[i]=net_alarm[i].workno;
	   idno[i]=net_alarm[i].personID;
	   rno[i]=net_alarm[i].reno;
	   dt[i]=net_alarm[i].dt;
	   addr[i]=net_alarm[i].addrno;
	 }
	 net_alm_ct-=count;
     if(net_alm_ct!=0)
	 {
        for(i=0;i<net_alm_ct;i++)
		  net_alarm[i]=net_alarm[count+i];
	 }
	return S_OK;
}

STDMETHODIMP Cnetweb::getNetUptjCT(short *count)
{
	// TODO: Add your implementation code here
    *count=net_uptj_ct;
	return S_OK;
}

STDMETHODIMP Cnetweb::getNetUptj(short count, short *wno, short *idno, DATE *downdt, DATE *updt,short *dw_rno, short *up_rno,short *tag)
{
	// TODO: Add your implementation code here
   int i;

     for(i=0;i<count;i++)
	 {
		  wno[i]=net_uptj[i].workno;
		  idno[i]=net_uptj[i].personID;
		  downdt[i]=net_uptj[i].downdtm;
		  updt[i]=net_uptj[i].updtm;
		  dw_rno[i]=net_uptj[i].dw_rno;
		  up_rno[i]=net_uptj[i].up_rno;
		  tag[i]=net_uptj[i].tag;
	 }
	 net_uptj_ct-=count;
	 for(i=0;i<net_uptj_ct;i++)
		 net_uptj[i]=net_uptj[count+i];
	return S_OK;
}

STDMETHODIMP Cnetweb::getNetLocalCT(short *count)
{
	// TODO: Add your implementation code here
   int i,j=0;
      for(i=0;i<4096;i++)
	  {
		if((perstmb[i].entrytm!=0)||(perstmb[i].exittm!=0))
           j++;
	  }
	  *count=j;
	return S_OK;
}

STDMETHODIMP Cnetweb::getNetLocal(short count,short *rid, short *addr,DATE *loctm,DATE *entm,DATE *extm,
								  short *dw_rno,short *up_rno, short *lastrno,short *tag)
{
	// TODO: Add your implementation code here
   int i,j=0;
      for(i=0;i<4096;i++)
	  {
		if((perstmb[i].entrytm!=0)||(perstmb[i].exittm!=0))
		{
			rid[j]=i;
            addr[j]=perstmb[i].addrno;
            loctm[j]=perstmb[i].localtm;
            entm[j]=perstmb[i].entrytm;
            extm[j]=perstmb[i].exittm;
            dw_rno[j]=perstmb[i].dw_rno;
            up_rno[j]=perstmb[i].up_rno;
            lastrno[j]=perstmb[i].lastreno;
            tag[j]=perstmb[i].tag;
			j++;
		}
	  }

	return S_OK;
}

STDMETHODIMP Cnetweb::gethotuse(short *rb)
{
	// TODO: Add your implementation code here
    *rb=comsertype;
	return S_OK;
}


STDMETHODIMP Cnetweb::getfzstate(short *st)
{
	// TODO: Add your implementation code here
   int i;
    for(i=0;i<255;i++)
	  st[i]=stinfo.stinfo[i];
	return S_OK;
}

STDMETHODIMP Cnetweb::setfzstate(short *st)
{
	// TODO: Add your implementation code here
   int i;
	for(i=0;i<255;i++)
		stinfo.stinfo[i]=st[i];
	return S_OK;
}

int Cnetweb::if_leapyear(int year)
{
	int leap_year;
	if(year % 4==0)
	{
		if(year%100==0)
		{
			if(year%400==0)
				leap_year=1;
			else
				leap_year=0;
		}
		else leap_year=1;
	}
	else
		leap_year=0;
	return leap_year;
}
DATE Cnetweb::dateCal(int year,int month,int day,int hour,int minute,int second)
{
	int i;
	DATE tmpdate=0;
	for(i=1900;i<year;i++)
	{
		if (if_leapyear(i)==1)
			tmpdate+=366;
		else
			tmpdate+=365;
	}
	tmpdate+=1;
	tmpdate+=day;
	for(i=1;i<month;i++)
	{
		if((i==1) || (i==3) || (i==5) || (i==7) || (i==8) || (i==10))
			tmpdate+=31;
		else if(i==2) 
		{
			if(if_leapyear(year)==1)
			    tmpdate+=29;
			else
				tmpdate+=28;
		}
		else
			tmpdate+=30;
	}
	tmpdate+=(double)hour/24;
    tmpdate+=(double)minute/(24*60);
	tmpdate+=(double)second/(24*60*60);
	return tmpdate;
}

STDMETHODIMP Cnetweb::getNetPasstime(short count, short *wno, short *idno, DATE *downdt, short *dwrno, short *Addr, DATE *localdt, short *rno)
{
	// TODO: Add your implementation code here
     int i,j;
     SYSTEMTIME pdt;
     DATE currentdt;
     short rfid,rfidbak;

    j=0;
   	GetLocalTime(&pdt);
	currentdt=dateCal(pdt.wYear,pdt.wMonth,pdt.wDay,pdt.wHour,pdt.wMinute,pdt.wSecond);
    for(i=0;i<prst.count;i++)
	{
	   rfid=prst.pl[i].rfid;
	   rfidbak=prst.pl[i].rfidbak;
	   if(perstmb[rfid].entrytm!=0)
	   {
		   double ddt=currentdt-perstmb[rfid].entrytm;
		   if(ddt>=(double)prst.pl[i].validtime/24.0)
		   {
				wno[j]=prst.pl[i].workno;
				idno[j]=rfid;
				downdt[j]=perstmb[rfid].entrytm;
				dwrno[j]=perstmb[rfid].dw_rno;
				Addr[j]=perstmb[rfid].addrno;
				rno[j]=perstmb[rfid].lastreno;
				localdt[j]=perstmb[rfid].localtm;
				j++;
		   }
	   }
	   if((perstmb[rfidbak].entrytm!=0)&&(rfidbak!=0))
	   {
		   double ddt=currentdt-perstmb[rfidbak].entrytm;
		   if(ddt>=(double)prst.pl[i].validtime/24.0)
		   {
				wno[j]=prst.pl[i].workno;
				idno[j]=rfidbak;
				downdt[j]=perstmb[rfidbak].entrytm;
				dwrno[j]=perstmb[rfidbak].dw_rno;
				Addr[j]=perstmb[rfidbak].addrno;
				rno[j]=perstmb[rfidbak].lastreno;
				localdt[j]=perstmb[rfidbak].localtm;
				j++;
		   }
	   }
	}
	return S_OK;
}

STDMETHODIMP Cnetweb::getNetPasstimeCT(short *count)
{
	// TODO: Add your implementation code here
    *count=passtmct;
	return S_OK;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -