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

📄 distribute.lst

📁 一整套电梯控制器源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 242   1      	uchar cBottomFloor	= pEleData->cZuiDiCeng-1;	//可到最底层(-1是因为楼层计数从1开始)
 243   1      
 244   1      	uchar count=0;
 245   1      	uchar cIsExistNeiXuan=0;
 246   1          
 247   1      	for(i=0; i<m_cENum; i++){
 248   2      		pEleData    = &(m_pE_InputData->mDianTi[i]); 
 249   2      		pXiangYing  = &(m_pE_OutputData->mXiangYing[i]);	//外呼分配数据
 250   2      		if(updown_flg==1){						//上呼
 251   3                  if(GetArrayData(pXiangYing->bShang, cLIdx)==1){
 252   4                      m_cEleIdx=i;
 253   4                  }
 254   3              }else if(updown_flg==0){                //下呼
 255   3                  if(GetArrayData(pXiangYing->bXia, cLIdx)==1){
 256   4                      m_cEleIdx=i;
 257   4                  }
 258   3              }
 259   2          }
 260   1          
 261   1          if(m_cEleIdx==0xFF){    //尚未分配给任意一部电梯
 262   2              return 0;
 263   2          }
 264   1          
 265   1      	pEleData    = &(m_pE_InputData->mDianTi[m_cEleIdx]); 
 266   1      	pXiangYing  = &(m_pE_OutputData->mXiangYing[m_cEleIdx]);	//外呼分配数据
 267   1      	pFangXiang  = &(pEleData->FangXiang);				        //方向数据
 268   1      	cCurFloorIdx = pEleData->cDangQianCeng-1;			        //当前层
 269   1      	cTopFloor	= pEleData->cZuiGaoCeng-1;	//可到最高层(-1是因为楼层计数从1开始)
 270   1      	cBottomFloor= pEleData->cZuiDiCeng-1;	//可到最底层(-1是因为楼层计数从1开始)
 271   1          
 272   1          //计算该部电梯的已有外呼分配数目
 273   1          count=0;
 274   1      	for(j=0; j<m_cLNum; j++){
 275   2      		if(GetArrayData(pXiangYing->bShang, j)==1)
 276   2      			count++;
 277   2      		if(GetArrayData(pXiangYing->bXia, j)==1)
 278   2      			count++;
 279   2      	}
 280   1          //判断是否是最后一个外呼分配
 281   1          if(count!=1)
 282   1              return 0;
 283   1      /*	 else{
 284   1      	 	  if(pEleData->bDongOrJing==1)
 285   1      	 	  		return 1;
 286   1      		  else
 287   1      		  		return 0;
 288   1      	 }
 289   1      
 290   1      	 return 1;
 291   1      */
 292   1      
 293   1          cIsExistNeiXuan=0;
 294   1          //判断是否在当前层与外呼之间存在内选
 295   1          if(updown_flg==1){       //上呼
 296   2      		//当前层沿着运行方向是否有内选
 297   2      		if((pFangXiang->bShang==1)&&(pXiangYing->bXia==0)){
C51 COMPILER V6.12  DISTRIBUTE                                                             06/05/2005 15:44:44 PAGE 19  

 298   3      			if(cCurFloorIdx>cLIdx){
 299   4      //				if(cCurFloorIdx==cTopFloor){
 300   4      //					cIsExistNeiXuan=0;
 301   4      //				}else{
 302   4      					for(j=(cCurFloorIdx+1); j<=cTopFloor; j++){    
 303   5      						if(GetArrayData(pEleData->bNeiXuan, j)==1)
 304   5      							cIsExistNeiXuan=1;
 305   5      					}
 306   4      //				}
 307   4      			}else if(cCurFloorIdx<cLIdx){
 308   4      				for(j=(cCurFloorIdx+1); j<=(cLIdx-1); j++){
 309   5      					if(GetArrayData(pEleData->bNeiXuan, j)==1)
 310   5      						cIsExistNeiXuan=1;
 311   5      				}
 312   4      			}else{
 313   4      				cIsExistNeiXuan=0;
 314   4      			}
 315   3      		}else if((pFangXiang->bShang==0)&&(pFangXiang->bXia==1)){
 316   3      			if(cCurFloorIdx>cLIdx){
 317   4      				for(j=(cLIdx+1); j<=(cCurFloorIdx-1); j++){
 318   5      					if(GetArrayData(pEleData->bNeiXuan, j)==1)
 319   5      						cIsExistNeiXuan=1;
 320   5      				}
 321   4      			}else if(cCurFloorIdx<cLIdx){
 322   4      //				if(cIsExistNeiXuan==cBottomFloor){
 323   4      //					cIsExistNeiXuan=0;
 324   4      //				}else{
 325   4      					for(j=cBottomFloor; j<=(cCurFloorIdx-1); j++){
 326   5      						if(GetArrayData(pEleData->bNeiXuan, j)==1)
 327   5      							cIsExistNeiXuan=1;
 328   5      					}
 329   4      //				}
 330   4      			}else{
 331   4      				cIsExistNeiXuan=0;
 332   4      			}
 333   3      		}else{
 334   3      			cIsExistNeiXuan=0;
 335   3      		}
 336   2          }else if(updown_flg==0){
 337   2      		//当前层与外呼层之间是否有内选
 338   2      		if((pFangXiang->bShang==1)&&(pFangXiang->bXia==0)){
 339   3      			if(cCurFloorIdx>cLIdx){
 340   4      //				if(cCurFloorIdx==cTopFloor){
 341   4      //					cIsExistNeiXuan=0;
 342   4      //				}else{
 343   4      					for(j=(cCurFloorIdx+1); j<=cTopFloor; j++){
 344   5      						if(GetArrayData(pEleData->bNeiXuan, j)==1)
 345   5      							cIsExistNeiXuan=1;
 346   5      					}
 347   4      //				}
 348   4      			}else if(cCurFloorIdx<cLIdx){
 349   4      				for(j=(cCurFloorIdx+1); j<=(cLIdx-1); j++){
 350   5      					if(GetArrayData(pEleData->bNeiXuan, j)==1)
 351   5      						cIsExistNeiXuan=1;
 352   5      				}
 353   4      			}else{
 354   4      				cIsExistNeiXuan=0;
 355   4      			}
 356   3      
 357   3      		}else if((pFangXiang->bShang==0)&&(pFangXiang->bXia==1)){
 358   3      //					for(j=cBottomFloor; j<=(cLIdx-1); j++){
 359   3      			if(cCurFloorIdx>cLIdx){
C51 COMPILER V6.12  DISTRIBUTE                                                             06/05/2005 15:44:44 PAGE 20  

 360   4      				for(j=(cLIdx+1); j<=(cCurFloorIdx-1); j++){
 361   5      					if(GetArrayData(pEleData->bNeiXuan, j)==1){
 362   6      						cIsExistNeiXuan=1;
 363   6      					}
 364   5      				}
 365   4      			}else if(cCurFloorIdx<cLIdx){
 366   4      //				if(cCurFloorIdx==cBottomFloor){
 367   4      //					cIsExistNeiXuan=0;
 368   4      //				}else{
 369   4      					for(j=cBottomFloor; j<=(cCurFloorIdx-1); j++){
 370   5      						if(GetArrayData(pEleData->bNeiXuan, j)==1)
 371   5      							cIsExistNeiXuan=1;
 372   5      					}
 373   4      //				}
 374   4      			}else{
 375   4      				cIsExistNeiXuan=0;
 376   4      			}
 377   3      		}else{
 378   3      			cIsExistNeiXuan=0;
 379   3      		}
 380   2          }
 381   1      
 382   1          if(cIsExistNeiXuan==1)
 383   1              return 0;   //不是"最后一个外呼分配且"中间"无内选"
 384   1          else
 385   1              return 1;   //最后一个外呼分配且"中间"无内选
 386   1      
 387   1          return 1;   //仅为语法检查
 388   1      
 389   1      }
 390          
 391          /*
 392          //外呼是否是某电梯最后一个外呼分配(当前层与最后一个外呼之间无内选)
 393          uchar IsLastOneDistribution(uchar cLIdx, uchar updown_flg)
 394          {
 395          	uchar m_cLNum = LNum_MAX;
 396          	uchar m_cENum = m_pL_Data->cENum;
 397          	uchar i=0,j=0;
 398          	uchar count=0;
 399          
 400          	E_DianTi	*pEleData; 
 401          	E_FangXiang	*pFangXiang;				//方向数据
 402          	E_XiangYing *pXiangYing;	//外呼分配数据
 403          	uchar       cCurFloorIdx;			//当前层
 404          	uchar cTopFloor		= pEleData->cZuiGaoCeng-1;	//可到最高层(-1是因为楼层计数从1开始)
 405          	uchar cBottomFloor	= pEleData->cZuiDiCeng-1;	//可到最底层(-1是因为楼层计数从1开始)
 406          
 407          	uchar cJudgeStart=0;
 408          	uchar cJudgeEnd=0;
 409          	uchar cIsExistNeiXuan=0;
 410          
 411          	for(i=0; i<m_cENum; i++){
 412          		pEleData    = &(m_pE_InputData->mDianTi[i]); 
 413          		pFangXiang  = &(pEleData->FangXiang);				//方向数据
 414          		pXiangYing  = &(m_pE_OutputData->mXiangYing[i]);	//外呼分配数据
 415          		cCurFloorIdx = pEleData->cDangQianCeng-1;			//当前层
 416          		cTopFloor	= pEleData->cZuiGaoCeng-1;	//可到最高层(-1是因为楼层计数从1开始)
 417          		cBottomFloor= pEleData->cZuiDiCeng-1;	//可到最底层(-1是因为楼层计数从1开始)
 418          
 419          		cIsExistNeiXuan=0;
 420          		if(updown_flg ==D_Up){						//上呼
 421          //			if(pXiangYing->bShang[cLIdx]==1){
C51 COMPILER V6.12  DISTRIBUTE                                                             06/05/2005 15:44:44 PAGE 21  

 422          			if(GetArrayData(pXiangYing->bShang, cLIdx)==1){
 423          				count=0;
 424          				//第i部电梯的外呼分配数
 425          				for(j=0; j<m_cLNum; j++){
 426          //					if(pXiangYing->bShang[j]==1)
 427          					if(GetArrayData(pXiangYing->bShang, j)==1)
 428          						count++;
 429          //					if(pXiangYing->bXia[j]==1)
 430          					if(GetArrayData(pXiangYing->bXia, j)==1)
 431          						count++;
 432          				}
 433          
 434          				//当前层沿着运行方向是否有内选
 435          				if((pFangXiang->bShang==1)&&(pXiangYing->bXia==0)){
 436          					if(cCurFloorIdx>cLIdx){
 437          						if(cCurFloorIdx==cTopFloor){
 438          							cIsExistNeiXuan=0;
 439          						}else{
 440          							for(j=cCurFloorIdx; j<=cTopFloor; j++){
 441          								if(GetArrayData(pEleData->bNeiXuan, j)==1)
 442          									cIsExistNeiXuan=1;
 443          							}
 444          						}
 445          					}else if(cCurFloorIdx<cLIdx){
 446          						for(j=cCurFloorIdx; j<=(cLIdx-1); j++){
 447          							if(GetArrayData(pEleData->bNeiXuan, j)==1)
 448          								cIsExistNeiXuan=1;
 449          						}
 450          					}else{
 451          						cIsExistNeiXuan=0;
 452          					}
 453          
 454          				}else if((pFangXiang->bShang==0)&&(pFangXiang->bXia==1)){
 455          					if(cCurFloorIdx>cLIdx){
 456          						for(j=(cLIdx-1); j<=cCurFloorIdx; j++){
 457          							if(GetArrayData(pEleData->bNeiXuan, j)==1)
 458          								cIsExistNeiXuan=1;
 459          						}
 460          					}else if(cCurFloorIdx<cLIdx){
 461          						if(cIsExistNeiXuan==cBottomFloor){
 462          							cIsExistNeiXuan=0;
 463          						}else{
 464          							for(j=cBottomFloor; j<=cCurFloorIdx; j++){
 465          								if(GetArrayData(pEleData->bNeiXuan, j)==1)
 466          									cIsExistNeiXuan=1;
 467          							}
 468          						}
 469          					}else{
 470          						cIsExistNeiXuan=0;
 471          					}
 472          				}
 473          
 474          				if((count==1) && (cIsExistNeiXuan==0))	//最后一个外呼分配(当前层与最后一个外呼之间无内选)
 475          					return 1;
 476          //				else
 477          //					return 0;
 478          			}
 479          		}else{									//下呼
 480          //			if(pXiangYing->bXia[cLIdx]==1){
 481          			if(GetArrayData(pXiangYing->bXia, cLIdx)==1){
 482          				count=0;
 483          				//第i部电梯的外呼分配数
C51 COMPILER V6.12  DISTRIBUTE                                                             06/05/2005 15:44:44 PAGE 22  

 484          				for(j=0; j<m_cLNum; j++){
 485          //					if(pXiangYing->bShang[j]==1)
 486          					if(GetArrayData(pXiangYing->bShang, j)==1)
 487          						count++;
 488          //					if(pXiangYing->bXia[j]==1)
 489          					if(GetArrayData(pXiangYing->bXia, j)==1)
 490          						count++;
 491          				}
 492          
 493          				//当前层与外呼层之间是否有内选
 494          				if((pFangXiang->bShang==1)&&(pFangXiang->bXia==0)){
 495          					if(cCurFloorIdx>cLIdx){
 496          						if(cCurFloorIdx==cTopFloor){
 497          							cIsExistNeiXuan=0;
 498          						}else{
 499          							for(j=cCurFloorIdx; j<=cTopFloor; j++){
 500          								if(GetArrayData(pEleData->bNeiXuan, j)==1)
 501          									cIsExistNeiXuan=1;
 502          							}
 503          						}
 504          					}else if(cCurFloorIdx<cLIdx){
 505          						for(j=cCurFloorIdx; j<=(cLIdx-1); j++){
 506          							if(GetArrayData(pEleData->bN

⌨️ 快捷键说明

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