📄 distribute.lst
字号:
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 + -