📄 manualboard.lst
字号:
273 3 }
274 2 else if (SIGAL_DIRECTION == busInfo.lineAttr)
275 2 {
276 3 //单向
277 3 back_to_firststation(busInfo.direction);
278 3 }
279 2 play_stationsound(busInfo.displayCurStation, busInfo.attrStation);
280 2 set_stationdata_changed();
281 2 return OK;
282 2 }
283 1 //其他情况都不处理,播放上下坡信息
284 1 play_notitionsound(6);//6);
285 1
286 1 return KO;
287 1 }
288
289 code FUNCTION_STATIONKEY funcStation[7] =
290 {key_arrive_station,\
291 key_leave_station, \
292 key_repeat_station,\
293 key_last_station, \
294 key_next_station, \
295 key_change_direction,\
296 key_twotime_board};
C51 COMPILER V7.09 MANUALBOARD 09/17/2008 16:05:33 PAGE 6
297
298 //到站键处理
299
300
301 /***********与报站相关的按键处理***********/
302 /*type:按键类型,见pubstruct.h
303 /*返回OK表示当前站以及当前站模式有变化,返回KO表示没有变化
304 /********************************/
305 Byte key_process_station(KEY_TYPE type)
306 {
307 1 return funcStation[type]();
308 1 }
309
310
311 /*手动报站与中心的交互*/
312 /*action:0 进站、1 出站、2 发车*/
313 //07-08-15修改,手动报站不修改自动报站的参数
314 void hand_sound_report(unsigned char action, unsigned char station)
315 {
316 1 unsigned char tmp;
317 1 //同步界面与通信中的curStation
318 1 if (action == NEXT_STATION)
319 1 busInfo.tranCurStation = get_laststationNum(busInfo.displayCurStation);
320 1
321 1 tmp = station & 0x3F;
322 1
323 1 if( action == CURRENT_STATION)//0 )
324 1 {/*进站*/
325 2 // position_sound_record(tmp);//?是否需要///07-08-15
326 2 make_runmode_message(action, station);
327 2 }
328 1 else if( action == NEXT_STATION)//1)
329 1 {/*出站*/
330 2 tmp = position_last_station(tmp);
331 2
332 2 // position_sound_record(tmp|0x40);//07-08-15
333 2 make_runmode_message(action, tmp );
334 2 }
335 1 else if( action == FIRST_STATION)//2)
336 1 {/*发车*/
337 2 if( station < 64 )
338 2 tmp = 0;
339 2 else
340 2 tmp = 1;
341 2
342 2 set_cur_direction(tmp);
343 2 // position_sound_record(1);//07-08-15
344 2
345 2 }
346 1
347 1 }
348
349
350 /*判断当前站是否为第二站
351 返回值:OK 是第二站,KO 不是第二站*/
352 /*curNum:站点序号,值从1开始,dir:方向*/
353 Byte is_thesecondStation(Byte curNum, Byte dir)
354 {
355 1 Byte nTmp, i;
356 1 //判断本站是否是第二站
357 1 nTmp = OK;
358 1 if (BUS_UPWARD == dir)
C51 COMPILER V7.09 MANUALBOARD 09/17/2008 16:05:33 PAGE 7
359 1 {
360 2 for (i = (busInfo.firstStation[0]); i < (curNum-1); i++)
361 2 {
362 3 if (1 == positionMode[i])
363 3 {
364 4 nTmp = KO;//当前站不是第二站
365 4 break;
366 4 }
367 3 }
368 2 }
369 1 else
370 1 {
371 2 for (i = (busInfo.firstStation[1]); i < (curNum-1); i++)
372 2 {
373 3 if (1 == positionMode[i])
374 3 {
375 4 nTmp = KO;//当前站不是第二站
376 4 break;
377 4 }
378 3 }
379 2 }
380 1 return nTmp;
381 1 }
382
383 /*主要给自动报站模块来使用*/
384 void set_cur_direction(unsigned char value)
385 {
386 1 //同步界面与通信中的curStation
387 1 busInfo.tranCurStation = busInfo.displayCurStation;
388 1
389 1 busInfo.totalPassenger = 0;
390 1 busInfo.stationState = 0;
391 1 set_position_state(busInfo.direction, 0);
392 1 }
*** WARNING C280 IN LINE 384 OF MAIN\MANUALBOARD.C: 'value': unreferenced local variable
393
394 void back_to_firststation(Byte direction)
395 {
396 1 if (BUS_BACKWARD == direction)
397 1 {
398 2 busInfo.direction = BUS_BACKWARD;
399 2 busInfo.displayCurStation = busInfo.firstStation[1];
400 2 busInfo.stationName = stationTone[busInfo.displayCurStation-1].name;
401 2 }
402 1 else
403 1 {
404 2 busInfo.direction = BUS_UPWARD;
405 2 busInfo.displayCurStation = busInfo.firstStation[0];
406 2 busInfo.stationName = stationTone[busInfo.displayCurStation-1].name;
407 2 }
408 1 busInfo.attrStation = FIRST_STATION;
409 1 set_cur_direction(busInfo.direction);
410 1 }
411
412
413 #define DIRECTION_CHANGED 1
414 #define DIRECTION_NOCHANGE 0
415 #define NORMAL_CHANGE_TIMEOUT 60//1min
416 #define QUICK_CHANGE_TIMEOUT 30//30sec
417 #define CIRCUIT_CHANGE_TIMEOUT 60
418 bit directionFlag=0;
419 Byte dirChangeTimout;
C51 COMPILER V7.09 MANUALBOARD 09/17/2008 16:05:33 PAGE 8
420
421 void start_change_timeout()
422 {
423 1 directionFlag = 1;
424 1 if (SINGAL_LINE == busInfo.lineAttr)
425 1 dirChangeTimout = QUICK_CHANGE_TIMEOUT;
426 1 else if (CIRCUIT_LINE == busInfo.lineAttr)
427 1 dirChangeTimout = CIRCUIT_CHANGE_TIMEOUT;
428 1 else
429 1 dirChangeTimout = NORMAL_CHANGE_TIMEOUT;
430 1 }
431
432
433 //由主函数调用。每1s调用一次
434 void direction_change_timeout()
435 {
436 1 if (directionFlag == 1)
437 1 {
438 2 if (CURRENT_STATION == busInfo.attrStation)
439 2 {
440 3 dirChangeTimout--;
441 3 if (0 == dirChangeTimout)
442 3 {
443 4 //换方向
444 4 directionFlag = 0;
445 4
446 4 if ((NORMAL_LINE == busInfo.lineAttr) || (SINGAL_LINE == busInfo.lineAttr))
447 4 {
448 5 //常规线路以及单终点线路需要换方向
449 5 inform_station(133, 0);
450 5 }
451 4 else
452 4 {
453 5 ////如果为环线以及单方向车则不换方向,直接回首站
454 5 back_to_firststation(busInfo.direction);
455 5 }
456 4 set_stationdata_changed();
457 4 }
458 3 }
459 2 else
460 2 directionFlag = 0;
461 2 }
462 1 }
463
464 /************处理到站信息************/
465 /*curStation:1-64:上行车站号
466 65-128:下行车站号
467 129:上坡 130:下坡 131:拐弯,133:最后一站换方向
468 /*attrStation:0:本站
469 1:下一站
470 /********************************/
471 void inform_station(Uint8 curStation/*站点序号*/, Byte attrStation)
472 {
473 1 if (133 == curStation)
474 1 {
475 2 if (BUS_BACKWARD == busInfo.direction)
476 2 {
477 3 back_to_firststation(BUS_UPWARD);
478 3 }
479 2 else
480 2 {
481 3 back_to_firststation(BUS_BACKWARD);
C51 COMPILER V7.09 MANUALBOARD 09/17/2008 16:05:33 PAGE 9
482 3 }
483 2 set_stationdata_changed();
484 2 return;
485 2 }
486 1 if (130 == curStation)
487 1 {
488 2 //播放下坡,第6段服务短语
489 2 if (OK == is_playconner())
490 2 play_notitionsound(10);//6);
491 2
492 2 return;
493 2 }
494 1 if (131 == curStation)
495 1 {
496 2 //播放拐弯,第4段服务短语
497 2 if (OK == is_playconner())
498 2 play_notitionsound(9);//5);
499 2 else
500 2 add_play_queue(9);
501 2 return;
502 2 }
503 1 if (curStation >= 65)
504 1 {
505 2 if ((curStation > busInfo.lastStation[1]) || (curStation < busInfo.firstStation[1]))
506 2 {
507 3 //是不是应该发送一下线路状态改变报文?
508 3 return;
509 3 }
510 2 }
511 1 else
512 1 {
513 2 if ((curStation > busInfo.lastStation[0]) || (curStation < busInfo.firstStation[0]))
514 2 {
515 3 //是不是应该发送一下线路状态改变报文?
516 3 return;
517 3 }
518 2 }
519 1 if ((curStation == busInfo.firstStation[1]) || (curStation == busInfo.firstStation[0]))
520 1 busInfo.attrStation = FIRST_STATION;
521 1 else
522 1 busInfo.attrStation = attrStation;
523 1 busInfo.displayCurStation = curStation;
524 1 busInfo.stationName = stationTone[busInfo.displayCurStation-1].name;
525 1 if (CURRENT_STATION == busInfo.attrStation)
526 1 {
527 2 if ((busInfo.displayCurStation == busInfo.lastStation[0]) || (busInfo.displayCurStation == busInfo
-.lastStation[1]))
528 2 {
529 3 //需要换方向
530 3 // if (CIRCUIT_LINE != busInfo.lineAttr)
531 3 start_change_timeout();//8月10日改,换不换方向由timeout函数来确定
532 3 }
533 2 }
534 1 //语音报站
535 1 play_stationsound(busInfo.displayCurStation, busInfo.attrStation);
536 1 set_stationdata_changed();
537 1 if (attrStation != NEXT_STATION)
538 1 openLight();
539 1 }
540
C51 COMPILER V7.09 MANUALBOARD 09/17/2008 16:05:33 PAGE 10
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1476 ----
CONSTANT SIZE = 21 ----
XDATA SIZE = 1 8
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -