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

📄 outlight.c

📁 一整套电梯控制器源程序
💻 C
字号:
#include "global.h"

void SetOutCallLight(uchar cLIdx, uchar updown_flg, uchar bVal)
{
	uchar 		m_cENum	= m_pL_Data->cENum;
	uchar		i=0;
	
	for(i=0; i<m_cENum; i++){
		E_Deng	 *pDeng = &(m_pE_OutputData->mDeng[i]); 
		E_DianTi *pEleData = &(m_pE_InputData->mDianTi[i]); 
		if((updown_flg==D_Up)){	//上呼
			if(bVal==1){ 
//				if(GetArrayData(pEleData->bShangHuKeTing, cLIdx)==1)	//只有楼层可停,才有可能点灯
					SetArrayData(pDeng->bShang, cLIdx, bVal);
//				else
//					SetArrayData(pDeng->bShang, cLIdx, 0);
			}else{		 //确保没有点灯
//				if(GetArrayData(pDeng->bShang, cLIdx) == 1)
					SetArrayData(pDeng->bShang, cLIdx, bVal);
			}
		}
		else{					//下呼
			if(bVal==1){ 
//				if(GetArrayData(pEleData->bXiaHuKeTing, cLIdx)==1)	//只有楼层可停,才有可能点灯
					SetArrayData(pDeng->bXia, cLIdx, bVal);
//				else
//					SetArrayData(pDeng->bXia, cLIdx, 0);
			}else{		 //确保没有点灯
//				if(GetArrayData(pDeng->bXia, cLIdx) == 1)
					SetArrayData(pDeng->bXia, cLIdx, bVal);
			}
		}
	}
}

//说明:该函数实际上仅用于撤销外呼分配
void SetOutCallDistribution(uchar cLIdx, uchar updown_flg, uchar bVal)
{
	uchar 		m_cENum	= m_pL_Data->cENum;
	uchar		i=0;
	E_XiangYing	 *pXiangYing = 0;
	E_DianTi	 *pEleData = 0;

	for(i=0; i<m_cENum; i++){
		pXiangYing = &(m_pE_OutputData->mXiangYing[i]); 
		pEleData = &(m_pE_InputData->mDianTi[i]); 
		if((updown_flg==D_Up)){	//上呼
			if(bVal==1){ 
				if(GetArrayData(pEleData->bShangHuKeTing, cLIdx)==1)	//该分支永远都不会执行到
					SetArrayData(pXiangYing->bShang, cLIdx, bVal);
			}
			else{		 //确保没有点灯
				if(GetArrayData(pXiangYing->bShang, cLIdx) == 1)
					SetArrayData(pXiangYing->bShang, cLIdx, bVal);
			}
		}
		else{					//下呼
			if(bVal==1){ 
				if(GetArrayData(pEleData->bXiaHuKeTing, cLIdx)==1)	//该分支永远都不会执行到
					SetArrayData(pXiangYing->bXia, cLIdx, bVal);
			}
			else{		 //确保没有点灯
				if(GetArrayData(pXiangYing->bXia, cLIdx) == 1)
					SetArrayData(pXiangYing->bXia, cLIdx, bVal);
			}
		}
	}
}
//若有一部电梯恰好到达外呼层,顺向,零速信号为1或运行停止信号为0,则撤销外呼点灯
uchar IsWithdrawOutLight(uchar cLIdx, uchar updown_flg)
{
	uchar 		m_cENum	= m_pL_Data->cENum;
	uchar		i=0;
	uchar    cCurFloorIdx=0;
	E_XiangYing	 *pXiangYing = 0;
	E_DianTi	 *pEleData = 0;

	for(i=0; i<m_cENum; i++){
		pXiangYing = &(m_pE_OutputData->mXiangYing[i]); 
		pEleData = &(m_pE_InputData->mDianTi[i]); 
		cCurFloorIdx = pEleData->cDangQianCeng-1;

		if(e_online[i]==1){

			if(updown_flg==1){
				if(cCurFloorIdx==cLIdx)
				if((pEleData->FangXiang.bShang==1)&&(pEleData->FangXiang.bXia==0))
				if((pEleData->bLingSuXinHao==1)||(pEleData->bDongOrJing==0)){
				 return 1;
				}
			}else{
				if(cCurFloorIdx==cLIdx)
				if((pEleData->FangXiang.bShang==0)&&(pEleData->FangXiang.bXia==1))
				if((pEleData->bLingSuXinHao==1)||(pEleData->bDongOrJing==0)){
				 return 1;
				}
			}

		}
	}
	return 0;
}

//2004.11.25 added by LHM循环设置点灯数据(对应三状态切换为正常时的点灯处理)
void LoopSetCallLightData(uchar cCalUpLIdx, uchar cCalDownLIdx)
{
	uchar 	m_cENum	= m_pL_Data->cENum;
	uchar	i=0;
    uchar   j=0;
    uchar   cVal=0;
    uchar   cUpExistFlg=0;
    uchar   cDownExistFlg=0;
    for(i=0; i<m_cENum; i++){
        //上呼点灯(若有一个外呼点灯亮,则所有正常梯子外呼灯应全亮)
        if(GetArrayData(mE_OutputData.mDeng[i].bShang, cCalUpLIdx) == 1){
            cUpExistFlg=1;
        }
        //下呼点灯(若有一个外呼点灯亮,则所有正常梯子外呼灯应全亮)
        if(GetArrayData(mE_OutputData.mDeng[i].bXia, cCalDownLIdx) == 1){
            cDownExistFlg=1;
        }
    }
    for(i=0; i<m_cENum; i++){
        if( (mE_InputData.mDianTi[i].TeBie.bJianXiu==0)&&
            (mE_InputData.mDianTi[i].TeBie.bSuoTi==0)&&
            (mE_InputData.mDianTi[i].TeBie.bXiaoFang==0)){
            if(cUpExistFlg==1){
                SetArrayData(mE_OutputData.mDeng[i].bShang, cCalUpLIdx, 1);
            }
            if(cDownExistFlg==1){
                SetArrayData(mE_OutputData.mDeng[i].bXia, cCalDownLIdx, 1);
            }
        }else{
            SetArrayData(mE_OutputData.mDeng[i].bShang, cCalUpLIdx, 0);
            SetArrayData(mE_OutputData.mDeng[i].bXia, cCalDownLIdx, 0);
        }

    }
}

⌨️ 快捷键说明

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