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

📄 com_sub.cpp

📁 《WinCE.NET嵌入式工业用控制器及自动控制系统设计》的源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	bitno= addr%8;
	dd= 0;
	switch(type)
	{
	case DI_BARE_TYPE:
		cptr= &Coil.DI_BARE[bytes];
		break;
	case DI_SOFT_TYPE:
		cptr= &Coil.DI_SOFT[bytes];
		break;
	case DI_PLON_TYPE:
		cptr= &Coil.DI_PLON[bytes];
		break;
	case DI_PLOFF_TYPE:
		cptr= &Coil.DI_PLOFF[bytes];
		break;
	case DO_BARE_TYPE:
		cptr= &Coil.DO_BARE[bytes];
		break;
	case DO_SOFT_TYPE:
		cptr= &Coil.DO_SOFT[bytes];
		break;
	case DO_PLON_TYPE:
		cptr= &Coil.DO_PLON[bytes];
		break;
	case DO_PLOFF_TYPE:
		cptr= &Coil.DO_PLOFF[bytes];
		break;
	case AI_HH_BIT_TYPE:
	case AI_ENG_HH_BIT_TYPE:
		cptr= &Coil.AI_HH[bytes];
		break;
	case AI_H_BIT_TYPE:
	case AI_ENG_H_BIT_TYPE:
		cptr= &Coil.AI_H[bytes];
		break;
	case AI_L_BIT_TYPE:
	case AI_ENG_L_BIT_TYPE:
		cptr= &Coil.AI_L[bytes];
		break;
	case AI_LL_BIT_TYPE:
	case AI_ENG_LL_BIT_TYPE:
		cptr= &Coil.AI_LL[bytes];
		break;
	case AI_SOFT_HH_BIT_TYPE:
		bytes= (addr+ED_MAX)/8;
		bitno= (addr+ED_MAX)%8;
		cptr= &Coil.AI_HH[bytes];
		break;
	case AI_SOFT_H_BIT_TYPE:
		bytes= (addr+ED_MAX)/8;
		bitno= (addr+ED_MAX)%8;
		cptr= &Coil.AI_H[bytes];
		break;
	case AI_SOFT_L_BIT_TYPE:
		bytes= (addr+ED_MAX)/8;
		bitno= (addr+ED_MAX)%8;
		cptr= &Coil.AI_L[bytes];
		break;
	case AI_SOFT_LL_BIT_TYPE:
		bytes= (addr+ED_MAX)/8;
		bitno= (addr+ED_MAX)%8;
		cptr= &Coil.AI_LL[bytes];
		break;
	case AO_HH_BIT_TYPE:
	case AO_ENG_HH_BIT_TYPE:
		cptr= &Coil.AO_HH[bytes];
		break;
	case AO_H_BIT_TYPE:
	case AO_ENG_H_BIT_TYPE:
		cptr= &Coil.AO_H[bytes];
		break;
	case AO_L_BIT_TYPE:
	case AO_ENG_L_BIT_TYPE:
		cptr= &Coil.AO_L[bytes];
		break;
	case AO_LL_BIT_TYPE:
	case AO_ENG_LL_BIT_TYPE:
		cptr= &Coil.AO_LL[bytes];
		break;
	case AO_SOFT_HH_BIT_TYPE:
		bytes= (addr+ED_MAX)/8;
		bitno= (addr+ED_MAX)%8;
		cptr= &Coil.AO_HH[bytes];
		break;
	case AO_SOFT_H_BIT_TYPE:
		bytes= (addr+ED_MAX)/8;
		bitno= (addr+ED_MAX)%8;
		cptr= &Coil.AO_H[bytes];
		break;
	case AO_SOFT_L_BIT_TYPE:
		bytes= (addr+ED_MAX)/8;
		bitno= (addr+ED_MAX)%8;
		cptr= &Coil.AO_L[bytes];
		break;
	case AO_SOFT_LL_BIT_TYPE:
		bytes= (addr+ED_MAX)/8;
		bitno= (addr+ED_MAX)%8;
		cptr= &Coil.AO_LL[bytes];
		break;
	case TM_BIT_TYPE:
		cptr= &Coil.TM_BIT[bytes];
		break;
	case CN_BIT_TYPE:
		cptr= &Coil.CN_BIT[bytes];
		break;
	default:
		return(-1);
	}

    dd= Coil_Bit_Read(cptr, bitno);
	return(dd);
}
/*...........................................................................*/
/* get Register data                                       */
/*...........................................................................*/
float get_Register(int type, int addr)
{
	switch(type)
	{
	case AI_BARE_TYPE:
		return(Reg.AI_BARE[addr]);
		break;
	case AI_ENG_TYPE:
		return(Reg.AI_ENG[addr]);
		break;
	case AI_SOFT_TYPE:
		return(Reg.AI_SOFT[addr]);
		break;
	case AI_RH_TYPE:
		return(Reg.AI_RH[addr]);
		break;
	case AI_RL_TYPE:
		return(Reg.AI_RL[addr]);
		break;
	case AI_BH_TYPE:
		return(Reg.AI_BH[addr]);
		break;
	case AI_BL_TYPE:
		return(Reg.AI_BL[addr]);
		break;
	case AI_FL_TYPE:
		return(Reg.AI_FL[addr]);
		break;
	case AI_HH_TYPE:
	case AI_ENG_HH_TYPE:
		return(Reg.AI_HH[addr]);
		break;
	case AI_H_TYPE:
	case AI_ENG_H_TYPE:
		return(Reg.AI_H[addr]);
		break;
	case AI_L_TYPE:
	case AI_ENG_L_TYPE:
		return(Reg.AI_L[addr]);
		break;
	case AI_LL_TYPE:
	case AI_ENG_LL_TYPE:
		return(Reg.AI_LL[addr]);
		break;
	case AI_DEAD_TYPE:
		return(Reg.AI_DEAD[addr]);
		break;
	case AI_SOFT_HH_TYPE:
		return(Reg.AI_HH[addr+ED_MAX]);
		break;
	case AI_SOFT_H_TYPE:
		return(Reg.AI_H[addr+ED_MAX]);
		break;
	case AI_SOFT_L_TYPE:
		return(Reg.AI_L[addr+ED_MAX]);
		break;
	case AI_SOFT_LL_TYPE:
		return(Reg.AI_LL[addr+ED_MAX]);
		break;
	case AI_SOFT_DEAD_TYPE:
		return(Reg.AI_DEAD[addr+ED_MAX]);
		break;
	case AO_BARE_TYPE:
		return(Reg.AO_BARE[addr]);
		break;
	case AO_ENG_TYPE:
		return(Reg.AO_ENG[addr]);
		break;
	case AO_SOFT_TYPE:
		return(Reg.AO_SOFT[addr]);
		break;
	case AO_RH_TYPE:
		return(Reg.AO_RH[addr]);
		break;
	case AO_RL_TYPE:
		return(Reg.AO_RL[addr]);
		break;
	case AO_BH_TYPE:
		return(Reg.AO_BH[addr]);
		break;
	case AO_BL_TYPE:
		return(Reg.AO_BL[addr]);
		break;
	case AO_FL_TYPE:
		return(Reg.AO_FL[addr]);
		break;
	case AO_HH_TYPE:
	case AO_ENG_HH_TYPE:
		return(Reg.AO_HH[addr]);
		break;
	case AO_H_TYPE:
	case AO_ENG_H_TYPE:
		return(Reg.AO_H[addr]);
		break;
	case AO_L_TYPE:
	case AO_ENG_L_TYPE:
		return(Reg.AO_L[addr]);
		break;
	case AO_LL_TYPE:
	case AO_ENG_LL_TYPE:
		return(Reg.AO_LL[addr]);
		break;
	case AO_SOFT_HH_TYPE:
		return(Reg.AO_HH[addr+ED_MAX]);
		break;
	case AO_SOFT_H_TYPE:
		return(Reg.AO_H[addr+ED_MAX]);
		break;
	case AO_SOFT_L_TYPE:
		return(Reg.AO_L[addr+ED_MAX]);
		break;
	case AO_SOFT_LL_TYPE:
		return(Reg.AO_LL[addr+ED_MAX]);
		break;
	case AO_SOFT_DEAD_TYPE:
		return(Reg.AO_DEAD[addr+ED_MAX]);
		break;
	case TM_PSET_TYPE:
		return(Reg.TM_PSET[addr]);
		break;
	case TM_CURR_TYPE:
		return(Reg.TM_CURR[addr]);
		break;
	case CN_PSET_TYPE:
		return(Reg.CN_PSET[addr]);
		break;
	case CN_CURR_TYPE:
		return(Reg.CN_CURR[addr]);
		break;
	default:
		return(0);
	}

}
/*...........................................................................*/
/* get Plus On Coil state                                       */
/*...........................................................................*/
int get_Plus_on(int type, int addr)
{
	int addr_1, type_1, dd;

	switch(type)
	{
	case DI_BARE_TYPE:
		addr_1= addr + DI_BARE_PTR;
		type_1= DI_PLON_TYPE;
		break;
	case DI_SOFT_TYPE:
		addr_1= addr + DI_SOFT_PTR;
		type_1= DI_PLON_TYPE;
		break;
	case DO_BARE_TYPE:
		addr_1= addr + DO_BARE_PTR;
		type_1= DO_PLON_TYPE;
		break;
	case DO_SOFT_TYPE:
		addr_1= addr + DO_SOFT_PTR;
		type_1= DO_PLON_TYPE;
		break;
	case AI_HH_BIT_TYPE:
	case AI_ENG_HH_BIT_TYPE:
		addr_1= addr + AI_HH_BIT_PTR;
		type_1= DO_PLON_TYPE;
		break;
	case AI_H_BIT_TYPE:
	case AI_ENG_H_BIT_TYPE:
		addr_1= addr + AI_H_BIT_PTR;
		type_1= DO_PLON_TYPE;
		break;
	case AI_L_BIT_TYPE:
	case AI_ENG_L_BIT_TYPE:
		addr_1= addr + AI_L_BIT_PTR;
		type_1= DO_PLON_TYPE;
		break;
	case AI_LL_BIT_TYPE:
	case AI_ENG_LL_BIT_TYPE:
		addr_1= addr + AI_LL_BIT_PTR;
		type_1= DO_PLON_TYPE;
		break;
	case AO_HH_BIT_TYPE:
	case AO_ENG_HH_BIT_TYPE:
		addr_1= addr + AO_HH_BIT_PTR;
		type_1= DO_PLON_TYPE;
		break;
	case AO_H_BIT_TYPE:
	case AO_ENG_H_BIT_TYPE:
		addr_1= addr + AO_H_BIT_PTR;
		type_1= DO_PLON_TYPE;
		break;
	case AO_L_BIT_TYPE:
	case AO_ENG_L_BIT_TYPE:
		addr_1= addr + AO_L_BIT_PTR;
		type_1= DO_PLON_TYPE;
		break;
	case AO_LL_BIT_TYPE:
	case AO_ENG_LL_BIT_TYPE:
		addr_1= addr + AO_LL_BIT_PTR;
		type_1= DO_PLON_TYPE;
		break;
	case AI_SOFT_HH_BIT_TYPE:
		addr_1= addr + AI_HH_BIT_PTR + ED_MAX;
		type_1= DO_PLON_TYPE;
		break;
	case AI_SOFT_H_BIT_TYPE:
		addr_1= addr + AI_H_BIT_PTR + ED_MAX;
		type_1= DO_PLON_TYPE;
		break;
	case AI_SOFT_L_BIT_TYPE:
		addr_1= addr + AI_L_BIT_PTR + ED_MAX;
		type_1= DO_PLON_TYPE;
		break;
	case AI_SOFT_LL_BIT_TYPE:
		addr_1= addr + AI_LL_BIT_PTR + ED_MAX;
		type_1= DO_PLON_TYPE;
		break;
	case AO_SOFT_HH_BIT_TYPE:
		addr_1= addr + AO_HH_BIT_PTR + ED_MAX;
		type_1= DO_PLON_TYPE;
		break;
	case AO_SOFT_H_BIT_TYPE:
		addr_1= addr + AO_H_BIT_PTR + ED_MAX;
		type_1= DO_PLON_TYPE;
		break;
	case AO_SOFT_L_BIT_TYPE:
		addr_1= addr + AO_L_BIT_PTR + ED_MAX;
		type_1= DO_PLON_TYPE;
		break;
	case AO_SOFT_LL_BIT_TYPE:
		addr_1= addr + AO_LL_BIT_PTR + ED_MAX;
		type_1= DO_PLON_TYPE;
		break;
	case TM_BIT_TYPE:
		addr_1= addr + TM_BIT_PTR;
		type_1= DO_PLON_TYPE;
		break;
	case CN_BIT_TYPE:
		addr_1= addr + CN_BIT_PTR;
		type_1= DO_PLON_TYPE;
		break;
	default:
		return(-1);
	}

	dd= get_Coil(type_1, addr_1);
	return(dd);
}
/*...........................................................................*/
/* get Plus Off Coil state                                       */
/*...........................................................................*/
int get_Plus_off(int type, int addr)
{
	int addr_1, type_1, dd;

	switch(type)
	{
	case DI_BARE_TYPE:
		addr_1= addr + DI_BARE_PTR;
		type_1= DI_PLOFF_TYPE;
		break;
	case DI_SOFT_TYPE:
		addr_1= addr + DI_SOFT_PTR;
		type_1= DI_PLOFF_TYPE;
		break;
	case DO_BARE_TYPE:
		addr_1= addr + DO_BARE_PTR;
		type_1= DO_PLOFF_TYPE;
		break;
	case DO_SOFT_TYPE:
		addr_1= addr + DO_SOFT_PTR;
		type_1= DO_PLOFF_TYPE;
		break;
	case AI_HH_BIT_TYPE:
	case AI_ENG_HH_BIT_TYPE:
		addr_1= addr + AI_HH_BIT_PTR;
		type_1= DO_PLOFF_TYPE;
		break;
	case AI_H_BIT_TYPE:
	case AI_ENG_H_BIT_TYPE:
		addr_1= addr + AI_H_BIT_PTR;
		type_1= DO_PLOFF_TYPE;
		break;
	case AI_L_BIT_TYPE:
	case AI_ENG_L_BIT_TYPE:
		addr_1= addr + AI_L_BIT_PTR;
		type_1= DO_PLOFF_TYPE;
		break;
	case AI_LL_BIT_TYPE:
	case AI_ENG_LL_BIT_TYPE:
		addr_1= addr + AI_LL_BIT_PTR;
		type_1= DO_PLOFF_TYPE;
		break;
	case AO_HH_BIT_TYPE:
	case AO_ENG_HH_BIT_TYPE:
		addr_1= addr + AO_HH_BIT_PTR;
		type_1= DO_PLOFF_TYPE;
		break;
	case AO_H_BIT_TYPE:
	case AO_ENG_H_BIT_TYPE:
		addr_1= addr + AO_H_BIT_PTR;
		type_1= DO_PLOFF_TYPE;
		break;
	case AO_L_BIT_TYPE:
	case AO_ENG_L_BIT_TYPE:
		addr_1= addr + AO_L_BIT_PTR;
		type_1= DO_PLOFF_TYPE;
		break;
	case AO_LL_BIT_TYPE:
	case AO_ENG_LL_BIT_TYPE:
		addr_1= addr + AO_LL_BIT_PTR;
		type_1= DO_PLOFF_TYPE;
		break;
	case AI_SOFT_HH_BIT_TYPE:
		addr_1= addr + AI_HH_BIT_PTR + ED_MAX;
		type_1= DO_PLOFF_TYPE;
		break;
	case AI_SOFT_H_BIT_TYPE:
		addr_1= addr + AI_H_BIT_PTR + ED_MAX;
		type_1= DO_PLOFF_TYPE;
		break;
	case AI_SOFT_L_BIT_TYPE:
		addr_1= addr + AI_L_BIT_PTR + ED_MAX;
		type_1= DO_PLOFF_TYPE;
		break;
	case AI_SOFT_LL_BIT_TYPE:
		addr_1= addr + AI_LL_BIT_PTR + ED_MAX;
		type_1= DO_PLOFF_TYPE;
		break;
	case AO_SOFT_HH_BIT_TYPE:
		addr_1= addr + AO_HH_BIT_PTR + ED_MAX;
		type_1= DO_PLOFF_TYPE;
		break;
	case AO_SOFT_H_BIT_TYPE:
		addr_1= addr + AO_H_BIT_PTR + ED_MAX;
		type_1= DO_PLOFF_TYPE;
		break;
	case AO_SOFT_L_BIT_TYPE:
		addr_1= addr + AO_L_BIT_PTR + ED_MAX;
		type_1= DO_PLOFF_TYPE;
		break;
	case AO_SOFT_LL_BIT_TYPE:
		addr_1= addr + AO_LL_BIT_PTR + ED_MAX;
		type_1= DO_PLOFF_TYPE;
		break;
	case TM_BIT_TYPE:
		addr_1= addr + TM_BIT_PTR;
		type_1= DO_PLOFF_TYPE;
		break;
	case CN_BIT_TYPE:
		addr_1= addr + CN_BIT_PTR;
		type_1= DO_PLOFF_TYPE;
		break;
	default:
		return(-1);
	}

	dd= get_Coil(type_1, addr_1);
	return(dd);
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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