1 void PISV10_CalculateRedSignalWatingTimeOfSignal()
2 {
3 UNIT8 ucSum = 0;
4 UNIT8 ucRemain = 0;
5 UNIT8 ucIndex = 0;
6 UNIT8 ucFlag = TRUE;
7 UNIT8 ucTotalCount = 0;
8 UNIT8 ucRedAcc = 0;
9 UNIT8 ucCurSig = 0, ucNextSig = 0;
10 UNIT8 ucRemainFlag = 0;
11
12
13
14
15
16
17
18 for (ucIndex = 0; ucIndex < ucASignalNum; ucIndex++)
19 {
20 ucSum += ucASignalGreenTime[ucIndex];
21 if (ucCurFreq <= ucSum)
22 {
23 if (ucCurFreq == ucSum)
24 {
25 ucRemainFlag = 1;
26 }
27 ucRemain = ucSum - ucCurFreq;
28 ucCurSig = ucIndex;
29 break;
30 }
31 }
32
33
34
35 ucTotalCount = ucASignalNum;
36 ucRedAcc = ucRemain;
37 if (ucCurSig == ucTotalCount)
38 {
39 ucNextSig = 0;
40 }
41 else
42 {
43 ucNextSig = ucCurSig +1;
44 }
45
46
47 do {
48
49
50
51 if (ucNextSig == ucCurSig)
52 {
53 if (ucRemainFlag == 1)
54 {
55 ucARedWaitingTime[ucNextSig] = ucRedAcc;
56 }
57 else
58 {
59 ucARedWaitingTime[ucNextSig] = 0;
60 }
61 ucFlag = FALSE;
62 }
63 else
64 {
65 ucARedWaitingTime[ucNextSig] = ucRedAcc;
66 ucRedAcc += ucASignalGreenTime[ucNextSig];
67 }
68
69
70 ucNextSig++;
71 if (ucNextSig >= ucASignalNum)
72 {
73 ucNextSig = 0;
74 }
75 } while (ucFlag == TRUE);
76
77
78
79
80
81 ucSum = 0;
82 ucFlag = TRUE;
83 ucRemainFlag = 0;
84
85 for (ucIndex = 0; ucIndex < ucBSignalNum; ucIndex++)
86 {
87 ucSum += ucBSignalGreenTime[ucIndex];
88 if (ucCurFreq <= ucSum)
89 {
90 if (ucCurFreq == ucSum)
91 {
92 ucRemainFlag = 1;
93 }
94 ucRemain = ucSum - ucCurFreq;
95 ucCurSig = ucIndex;
96 break;
97 }
98 }
99
100
101
102 ucTotalCount = ucBSignalNum;
103 ucRedAcc = ucRemain;
104 ucNextSig = (ucCurSig != ucTotalCount) ? ucCurSig+1 : 0;
105
106
107 do {
108
109
110 if (ucNextSig == ucCurSig)
111 {
112 ucBRedWaitingTime[ucNextSig] = (ucRemainFlag == 1) ? ucRedAcc : 0;
113 ucFlag = FALSE;
114 }
115 else
116 {
117 ucBRedWaitingTime[ucNextSig] = ucRedAcc;
118 ucRedAcc += ucBSignalGreenTime[ucNextSig];
119 }
120
121 ucNextSig = (ucNextSig < ucBSignalNum-1) ? ucNextSig+1 : 0;
122 } while(ucFlag == TRUE);
123 }
ZbmonWiki: PISV10_CalculateRedSignalWatingTimeOfSignal (2009-12-22 16:33:35에 zbmon가(이) 마지막으로 수정)