V1.3
This commit is contained in:
251
1train.txt
251
1train.txt
@@ -1,251 +0,0 @@
|
||||
1 Tick=283 Det=521=0
|
||||
2 Tick=283 Det=521=0
|
||||
3 Tick=283 Det=524=0
|
||||
4 Tick=283 Det=531=0
|
||||
5 Tick=283 Det=518=0
|
||||
6 Tick=283 Det=518=0
|
||||
7 Tick=283 Det=519=0
|
||||
8 Tick=283 Det=523=0
|
||||
9 Tick=283 Det=526=0
|
||||
10 Tick=283 Det=527=0
|
||||
11 Tick=283 Det=526=0
|
||||
12 Tick=283 Det=523=0
|
||||
13 Tick=283 Det=513=1
|
||||
14 Tick=283 Det=524=0
|
||||
15 Tick=283 Det=515=0
|
||||
16 Tick=283 Det=514=0
|
||||
17 Tick=283 Det=516=1
|
||||
18 Tick=283 Det=516=1
|
||||
19 Tick=283 Det=515=0
|
||||
20 Tick=283 Det=525=0
|
||||
21 Tick=283 Det=528=0
|
||||
22 Tick=283 Det=528=0
|
||||
23 Tick=283 Det=522=0
|
||||
24 Tick=283 Det=514=0
|
||||
25 Tick=283 Det=522=0
|
||||
26 Tick=283 Det=519=0
|
||||
27 Tick=283 Det=527=0
|
||||
28 Tick=283 Det=531=0
|
||||
29 Tick=283 Det=525=0
|
||||
30 Tick=283 Det=535=0
|
||||
31 Tick=283 Det=535=0
|
||||
32 Tick=283 Det=535=0
|
||||
33 Tick=283 Det=535=0
|
||||
34 Tick=284 Det=534=0
|
||||
35 Tick=284 Det=534=0
|
||||
36 Tick=284 Det=533=0
|
||||
37 Tick=284 Det=533=0
|
||||
38 Tick=284 Det=520=1
|
||||
39 Tick=284 Det=520=1
|
||||
40 Tick=284 Det=517=0
|
||||
41 Tick=284 Det=517=0
|
||||
42 Tick=284 Det=538=1
|
||||
43 Tick=284 Det=538=1
|
||||
44 Tick=284 Det=529=0
|
||||
45 Tick=284 Det=529=0
|
||||
46 Tick=284 Det=530=0
|
||||
47 Tick=284 Det=530=0
|
||||
48 Tick=284 Det=537=0
|
||||
49 Tick=284 Det=537=0
|
||||
50 Tick=284 Det=513=1
|
||||
51 Tick=285 Det=518=0
|
||||
52 Tick=285 Det=518=0
|
||||
53 Tick=285 Det=519=1
|
||||
54 Tick=285 Det=519=1
|
||||
55 Tick=285 Det=520=0
|
||||
56 Tick=285 Det=520=0
|
||||
57 Tick=285 Det=517=0
|
||||
58 Tick=285 Det=517=0
|
||||
59 Tick=297 Det=518=0
|
||||
60 Tick=297 Det=518=0
|
||||
61 Tick=297 Det=519=0
|
||||
62 Tick=297 Det=519=0
|
||||
63 Tick=297 Det=520=0
|
||||
64 Tick=297 Det=520=0
|
||||
65 Tick=297 Det=517=0
|
||||
66 Tick=297 Det=517=0
|
||||
67 Tick=354 Det=513=0
|
||||
68 Tick=354 Det=515=0
|
||||
69 Tick=354 Det=514=0
|
||||
70 Tick=354 Det=516=1
|
||||
71 Tick=354 Det=516=1
|
||||
72 Tick=354 Det=515=0
|
||||
73 Tick=354 Det=514=0
|
||||
74 Tick=354 Det=513=0
|
||||
75 Tick=381 Det=531=1
|
||||
76 Tick=381 Det=531=1
|
||||
77 Tick=381 Det=529=0
|
||||
78 Tick=381 Det=529=0
|
||||
79 Tick=381 Det=530=0
|
||||
80 Tick=381 Det=530=0
|
||||
81 Tick=385 Det=531=0
|
||||
82 Tick=385 Det=529=0
|
||||
83 Tick=385 Det=529=0
|
||||
84 Tick=385 Det=530=0
|
||||
85 Tick=385 Det=530=0
|
||||
86 Tick=390 Det=518=1
|
||||
87 Tick=390 Det=518=1
|
||||
88 Tick=390 Det=519=0
|
||||
89 Tick=390 Det=519=0
|
||||
90 Tick=390 Det=520=0
|
||||
91 Tick=390 Det=520=0
|
||||
92 Tick=390 Det=517=0
|
||||
93 Tick=390 Det=517=0
|
||||
94 Tick=399 Det=531=0
|
||||
95 Tick=417 Det=518=1
|
||||
96 Tick=417 Det=518=1
|
||||
97 Tick=417 Det=519=1
|
||||
98 Tick=417 Det=519=1
|
||||
99 Tick=417 Det=520=0
|
||||
100 Tick=417 Det=520=0
|
||||
101 Tick=417 Det=517=0
|
||||
102 Tick=417 Det=517=0
|
||||
103 Tick=419 Det=518=0
|
||||
104 Tick=419 Det=519=1
|
||||
105 Tick=419 Det=519=1
|
||||
106 Tick=419 Det=520=0
|
||||
107 Tick=419 Det=520=0
|
||||
108 Tick=419 Det=517=0
|
||||
109 Tick=419 Det=517=0
|
||||
110 Tick=423 Det=518=0
|
||||
111 Tick=423 Det=518=0
|
||||
112 Tick=423 Det=519=0
|
||||
113 Tick=423 Det=519=0
|
||||
114 Tick=423 Det=520=0
|
||||
115 Tick=423 Det=520=0
|
||||
116 Tick=423 Det=517=0
|
||||
117 Tick=423 Det=517=0
|
||||
118 Tick=439 Det=518=0
|
||||
119 Tick=442 Det=521=0
|
||||
120 Tick=442 Det=521=0
|
||||
121 Tick=442 Det=524=0
|
||||
122 Tick=442 Det=523=1
|
||||
123 Tick=442 Det=523=1
|
||||
124 Tick=442 Det=524=0
|
||||
125 Tick=442 Det=522=0
|
||||
126 Tick=442 Det=522=0
|
||||
127 Tick=479 Det=521=0
|
||||
128 Tick=479 Det=521=0
|
||||
129 Tick=479 Det=524=0
|
||||
130 Tick=479 Det=523=0
|
||||
131 Tick=479 Det=524=0
|
||||
132 Tick=479 Det=522=0
|
||||
133 Tick=479 Det=522=0
|
||||
134 Tick=482 Det=526=1
|
||||
135 Tick=482 Det=527=0
|
||||
136 Tick=482 Det=526=1
|
||||
137 Tick=482 Det=525=0
|
||||
138 Tick=482 Det=528=0
|
||||
139 Tick=482 Det=528=0
|
||||
140 Tick=482 Det=527=0
|
||||
141 Tick=482 Det=525=0
|
||||
142 Tick=493 Det=523=0
|
||||
143 Tick=521 Det=527=0
|
||||
144 Tick=521 Det=526=0
|
||||
145 Tick=521 Det=525=0
|
||||
146 Tick=521 Det=528=0
|
||||
147 Tick=521 Det=528=0
|
||||
148 Tick=521 Det=527=0
|
||||
149 Tick=521 Det=525=0
|
||||
150 Tick=534 Det=526=0
|
||||
151 Tick=583 Det=513=1
|
||||
152 Tick=583 Det=515=0
|
||||
153 Tick=583 Det=514=0
|
||||
154 Tick=583 Det=516=1
|
||||
155 Tick=583 Det=516=1
|
||||
156 Tick=583 Det=515=0
|
||||
157 Tick=583 Det=514=0
|
||||
158 Tick=583 Det=513=1
|
||||
159 Tick=607 Det=515=0
|
||||
160 Tick=607 Det=514=0
|
||||
161 Tick=607 Det=516=1
|
||||
162 Tick=607 Det=516=1
|
||||
163 Tick=607 Det=515=0
|
||||
164 Tick=607 Det=514=0
|
||||
165 Tick=607 Det=513=0
|
||||
166 Tick=618 Det=513=0
|
||||
167 Tick=631 Det=531=1
|
||||
168 Tick=631 Det=531=1
|
||||
169 Tick=631 Det=529=0
|
||||
170 Tick=631 Det=529=0
|
||||
171 Tick=631 Det=530=0
|
||||
172 Tick=631 Det=530=0
|
||||
173 Tick=636 Det=531=0
|
||||
174 Tick=636 Det=529=0
|
||||
175 Tick=636 Det=529=0
|
||||
176 Tick=636 Det=530=0
|
||||
177 Tick=636 Det=530=0
|
||||
178 Tick=640 Det=518=1
|
||||
179 Tick=640 Det=518=1
|
||||
180 Tick=640 Det=519=0
|
||||
181 Tick=640 Det=519=0
|
||||
182 Tick=640 Det=520=0
|
||||
183 Tick=640 Det=520=0
|
||||
184 Tick=640 Det=517=0
|
||||
185 Tick=640 Det=517=0
|
||||
186 Tick=645 Det=531=0
|
||||
187 Tick=668 Det=518=1
|
||||
188 Tick=668 Det=518=1
|
||||
189 Tick=668 Det=519=1
|
||||
190 Tick=668 Det=519=1
|
||||
191 Tick=668 Det=520=0
|
||||
192 Tick=668 Det=520=0
|
||||
193 Tick=668 Det=517=0
|
||||
194 Tick=668 Det=517=0
|
||||
195 Tick=670 Det=518=0
|
||||
196 Tick=670 Det=519=1
|
||||
197 Tick=670 Det=519=1
|
||||
198 Tick=670 Det=520=0
|
||||
199 Tick=670 Det=520=0
|
||||
200 Tick=670 Det=517=0
|
||||
201 Tick=670 Det=517=0
|
||||
202 Tick=672 Det=518=0
|
||||
203 Tick=672 Det=518=0
|
||||
204 Tick=672 Det=519=0
|
||||
205 Tick=672 Det=519=0
|
||||
206 Tick=672 Det=520=0
|
||||
207 Tick=672 Det=520=0
|
||||
208 Tick=672 Det=517=0
|
||||
209 Tick=672 Det=517=0
|
||||
210 Tick=690 Det=518=0
|
||||
211 Tick=692 Det=521=0
|
||||
212 Tick=692 Det=521=0
|
||||
213 Tick=692 Det=524=0
|
||||
214 Tick=692 Det=523=1
|
||||
215 Tick=692 Det=523=1
|
||||
216 Tick=692 Det=524=0
|
||||
217 Tick=692 Det=522=0
|
||||
218 Tick=692 Det=522=0
|
||||
219 Tick=730 Det=521=0
|
||||
220 Tick=730 Det=521=0
|
||||
221 Tick=730 Det=524=0
|
||||
222 Tick=730 Det=523=0
|
||||
223 Tick=730 Det=524=0
|
||||
224 Tick=730 Det=522=0
|
||||
225 Tick=730 Det=522=0
|
||||
226 Tick=733 Det=526=1
|
||||
227 Tick=733 Det=527=0
|
||||
228 Tick=733 Det=526=1
|
||||
229 Tick=733 Det=525=0
|
||||
230 Tick=733 Det=528=0
|
||||
231 Tick=733 Det=528=0
|
||||
232 Tick=733 Det=527=0
|
||||
233 Tick=733 Det=525=0
|
||||
234 Tick=744 Det=523=0
|
||||
235 Tick=772 Det=527=0
|
||||
236 Tick=772 Det=526=0
|
||||
237 Tick=772 Det=525=0
|
||||
238 Tick=772 Det=528=0
|
||||
239 Tick=772 Det=528=0
|
||||
240 Tick=772 Det=527=0
|
||||
241 Tick=772 Det=525=0
|
||||
242 Tick=785 Det=526=0
|
||||
243 Tick=857 Det=513=1
|
||||
244 Tick=857 Det=515=0
|
||||
245 Tick=857 Det=514=0
|
||||
246 Tick=857 Det=516=1
|
||||
247 Tick=857 Det=516=1
|
||||
248 Tick=857 Det=515=0
|
||||
249 Tick=857 Det=514=0
|
||||
250 Tick=857 Det=513=1
|
||||
|
||||
61
2 trains.txt
61
2 trains.txt
@@ -1,61 +0,0 @@
|
||||
départ depuis 2 trains en 523 et 526
|
||||
1 Tick=370 Det=523=1 BB
|
||||
2 Tick=370 Det=526=1 CC en tete
|
||||
3 Tick=370 Det=516=1 TGV en garage
|
||||
4 Tick=371 Det=520=1 ???
|
||||
-------------------------------
|
||||
5 Tick=505 Det=526=0 CC quitte
|
||||
6 Tick=550 Det=523=0 BB quitte
|
||||
7 Tick=559 Det=526=1 BB arrive
|
||||
8 Tick=578 Det=513=1 CC arrive
|
||||
9 Tick=606 Det=513=0 CC quitte
|
||||
10 Tick=638 Det=531=1 CC arrive
|
||||
11 Tick=638 Det=526=0 BB quitte
|
||||
12 Tick=643 Det=531=0 CC quitte
|
||||
13 Tick=649 Det=518=1 CC arrive
|
||||
14 Tick=649 Det=520=0 ???
|
||||
15 Tick=685 Det=518=0 CC quitte
|
||||
16 Tick=712 Det=513=1 BB arrive
|
||||
17 Tick=716 Det=523=1 CC arrive
|
||||
18 Tick=730 Det=513=0 BB quitte
|
||||
19 Tick=766 Det=531=1 BB arrive
|
||||
20 Tick=766 Det=523=0 CC quitte
|
||||
21 Tick=774 Det=531=0 BB quitte
|
||||
22 Tick=774 Det=526=1 CC arrive
|
||||
23 Tick=779 Det=518=1 BB arrive
|
||||
24 Tick=809 Det=518=0 BB quitte
|
||||
25 Tick=819 Det=526=0 CC quitte
|
||||
26 Tick=839 Det=523=1 BB arrive
|
||||
27 Tick=871 Det=523=0 BB quitte
|
||||
28 Tick=876 Det=526=1 BB arrive
|
||||
29 Tick=933 Det=513=1 CC arrive
|
||||
trains arretés
|
||||
BB CC
|
||||
1 523 1
|
||||
2 526 1
|
||||
5 526 0
|
||||
6 523 0
|
||||
7 526 1
|
||||
8 513 1
|
||||
9 513 0
|
||||
10 531 1
|
||||
11 526 0
|
||||
12 531 0
|
||||
13 518 1
|
||||
14 520???
|
||||
15 518 0
|
||||
16 513 1
|
||||
17 523 1
|
||||
18 513 0
|
||||
19 531 1
|
||||
20 523 0
|
||||
21 531 0
|
||||
22 526 1
|
||||
23 518 1
|
||||
24 518 0
|
||||
25 526 0
|
||||
26 523 1
|
||||
27 523 0
|
||||
28 526 1
|
||||
29 513 1
|
||||
|
||||
@@ -1,306 +0,0 @@
|
||||
1 Tick=1016 Det=521=0
|
||||
2 Tick=1016 Det=521=0
|
||||
3 Tick=1016 Det=524=0
|
||||
4 Tick=1016 Det=531=0
|
||||
5 Tick=1016 Det=518=0
|
||||
6 Tick=1016 Det=518=0
|
||||
7 Tick=1016 Det=519=0
|
||||
8 Tick=1016 Det=523=0
|
||||
9 Tick=1016 Det=526=1
|
||||
10 Tick=1016 Det=527=0
|
||||
11 Tick=1016 Det=526=1
|
||||
12 Tick=1016 Det=523=0
|
||||
13 Tick=1016 Det=513=0
|
||||
14 Tick=1016 Det=524=0
|
||||
15 Tick=1016 Det=515=0
|
||||
16 Tick=1016 Det=514=0
|
||||
17 Tick=1016 Det=516=1
|
||||
18 Tick=1016 Det=516=1
|
||||
19 Tick=1016 Det=515=0
|
||||
20 Tick=1016 Det=525=0
|
||||
21 Tick=1016 Det=528=1
|
||||
22 Tick=1016 Det=528=1
|
||||
23 Tick=1016 Det=522=0
|
||||
24 Tick=1017 Det=514=0
|
||||
25 Tick=1017 Det=522=0
|
||||
26 Tick=1017 Det=519=0
|
||||
27 Tick=1017 Det=527=0
|
||||
28 Tick=1017 Det=531=0
|
||||
29 Tick=1017 Det=525=0
|
||||
30 Tick=1017 Det=535=0
|
||||
31 Tick=1017 Det=535=0
|
||||
32 Tick=1017 Det=535=0
|
||||
33 Tick=1017 Det=535=0
|
||||
34 Tick=1017 Det=534=0
|
||||
35 Tick=1017 Det=534=0
|
||||
36 Tick=1017 Det=533=0
|
||||
37 Tick=1017 Det=533=0
|
||||
38 Tick=1017 Det=520=0
|
||||
39 Tick=1017 Det=520=0
|
||||
40 Tick=1017 Det=517=0
|
||||
41 Tick=1017 Det=517=0
|
||||
42 Tick=1017 Det=538=0
|
||||
43 Tick=1017 Det=538=0
|
||||
44 Tick=1017 Det=529=0
|
||||
45 Tick=1017 Det=529=0
|
||||
46 Tick=1017 Det=530=0
|
||||
47 Tick=1017 Det=530=0
|
||||
48 Tick=1017 Det=537=0
|
||||
49 Tick=1017 Det=537=0
|
||||
50 Tick=1017 Det=513=0
|
||||
51 Tick=1044 Det=526=0
|
||||
52 Tick=1044 Det=527=0
|
||||
53 Tick=1044 Det=526=0
|
||||
54 Tick=1044 Det=525=0
|
||||
55 Tick=1044 Det=528=1
|
||||
56 Tick=1044 Det=528=1
|
||||
57 Tick=1044 Det=527=0
|
||||
58 Tick=1044 Det=525=0
|
||||
59 Tick=1057 Det=526=0
|
||||
60 Tick=1057 Det=527=0
|
||||
61 Tick=1057 Det=526=0
|
||||
62 Tick=1057 Det=525=0
|
||||
63 Tick=1057 Det=528=0
|
||||
64 Tick=1057 Det=528=0
|
||||
65 Tick=1057 Det=527=0
|
||||
66 Tick=1057 Det=525=0
|
||||
67 Tick=1076 Det=531=1
|
||||
68 Tick=1076 Det=531=1
|
||||
69 Tick=1076 Det=529=0
|
||||
70 Tick=1076 Det=529=0
|
||||
71 Tick=1076 Det=530=0
|
||||
72 Tick=1076 Det=530=0
|
||||
73 Tick=1081 Det=531=0
|
||||
74 Tick=1081 Det=529=0
|
||||
75 Tick=1081 Det=529=0
|
||||
76 Tick=1081 Det=530=0
|
||||
77 Tick=1081 Det=530=0
|
||||
78 Tick=1086 Det=518=1
|
||||
79 Tick=1086 Det=518=1
|
||||
80 Tick=1086 Det=519=0
|
||||
81 Tick=1086 Det=519=0
|
||||
82 Tick=1086 Det=520=0
|
||||
83 Tick=1086 Det=520=0
|
||||
84 Tick=1086 Det=517=0
|
||||
85 Tick=1086 Det=517=0
|
||||
86 Tick=1097 Det=531=0
|
||||
87 Tick=1115 Det=518=0
|
||||
88 Tick=1115 Det=519=0
|
||||
89 Tick=1115 Det=519=0
|
||||
90 Tick=1115 Det=520=0
|
||||
91 Tick=1115 Det=520=0
|
||||
92 Tick=1115 Det=517=0
|
||||
93 Tick=1115 Det=517=0
|
||||
94 Tick=1121 Det=518=0
|
||||
95 Tick=1138 Det=521=0
|
||||
96 Tick=1138 Det=521=0
|
||||
97 Tick=1138 Det=524=0
|
||||
98 Tick=1138 Det=523=1
|
||||
99 Tick=1138 Det=523=1
|
||||
100 Tick=1138 Det=524=0
|
||||
101 Tick=1138 Det=522=0
|
||||
102 Tick=1138 Det=522=0
|
||||
103 Tick=1141 Det=513=1
|
||||
104 Tick=1141 Det=515=0
|
||||
105 Tick=1141 Det=514=0
|
||||
106 Tick=1141 Det=516=1
|
||||
107 Tick=1141 Det=516=1
|
||||
108 Tick=1141 Det=515=0
|
||||
109 Tick=1141 Det=514=0
|
||||
110 Tick=1141 Det=513=1
|
||||
111 Tick=1183 Det=521=0
|
||||
112 Tick=1183 Det=521=0
|
||||
113 Tick=1183 Det=524=0
|
||||
114 Tick=1183 Det=523=0
|
||||
115 Tick=1183 Det=524=0
|
||||
116 Tick=1183 Det=522=0
|
||||
117 Tick=1183 Det=522=0
|
||||
118 Tick=1191 Det=526=1
|
||||
119 Tick=1191 Det=527=0
|
||||
120 Tick=1191 Det=526=1
|
||||
121 Tick=1191 Det=525=0
|
||||
122 Tick=1191 Det=528=0
|
||||
123 Tick=1191 Det=528=0
|
||||
124 Tick=1191 Det=527=0
|
||||
125 Tick=1191 Det=525=0
|
||||
126 Tick=1194 Det=513=0
|
||||
127 Tick=1194 Det=515=0
|
||||
128 Tick=1194 Det=514=0
|
||||
129 Tick=1194 Det=516=1
|
||||
130 Tick=1194 Det=516=1
|
||||
131 Tick=1194 Det=515=0
|
||||
132 Tick=1194 Det=514=0
|
||||
133 Tick=1194 Det=513=0
|
||||
134 Tick=1214 Det=523=0
|
||||
135 Tick=1242 Det=531=1
|
||||
136 Tick=1242 Det=531=1
|
||||
137 Tick=1242 Det=529=0
|
||||
138 Tick=1242 Det=529=0
|
||||
139 Tick=1242 Det=530=0
|
||||
140 Tick=1242 Det=530=0
|
||||
141 Tick=1251 Det=531=0
|
||||
142 Tick=1251 Det=529=0
|
||||
143 Tick=1251 Det=529=0
|
||||
144 Tick=1251 Det=530=0
|
||||
145 Tick=1251 Det=530=0
|
||||
146 Tick=1260 Det=518=1
|
||||
147 Tick=1260 Det=518=1
|
||||
148 Tick=1260 Det=519=0
|
||||
149 Tick=1260 Det=519=0
|
||||
150 Tick=1260 Det=520=0
|
||||
151 Tick=1260 Det=520=0
|
||||
152 Tick=1260 Det=517=0
|
||||
153 Tick=1260 Det=517=0
|
||||
154 Tick=1272 Det=531=0
|
||||
155 Tick=1283 Det=527=0
|
||||
156 Tick=1283 Det=526=0
|
||||
157 Tick=1283 Det=525=0
|
||||
158 Tick=1283 Det=528=0
|
||||
159 Tick=1283 Det=528=0
|
||||
160 Tick=1283 Det=527=0
|
||||
161 Tick=1283 Det=525=0
|
||||
162 Tick=1290 Det=526=0
|
||||
163 Tick=1310 Det=518=0
|
||||
164 Tick=1310 Det=519=0
|
||||
165 Tick=1310 Det=519=0
|
||||
166 Tick=1310 Det=520=0
|
||||
167 Tick=1310 Det=520=0
|
||||
168 Tick=1310 Det=517=0
|
||||
169 Tick=1310 Det=517=0
|
||||
170 Tick=1321 Det=518=0
|
||||
171 Tick=1326 Det=513=0
|
||||
172 Tick=1326 Det=515=0
|
||||
173 Tick=1326 Det=514=1
|
||||
174 Tick=1326 Det=516=1
|
||||
175 Tick=1326 Det=516=1
|
||||
176 Tick=1326 Det=515=0
|
||||
177 Tick=1326 Det=514=1
|
||||
178 Tick=1326 Det=513=0
|
||||
179 Tick=1376 Det=513=1
|
||||
180 Tick=1376 Det=515=0
|
||||
181 Tick=1376 Det=514=1
|
||||
182 Tick=1376 Det=516=1
|
||||
183 Tick=1376 Det=516=1
|
||||
184 Tick=1376 Det=515=0
|
||||
185 Tick=1376 Det=514=1
|
||||
186 Tick=1376 Det=513=1
|
||||
187 Tick=1397 Det=521=0
|
||||
188 Tick=1397 Det=521=0
|
||||
189 Tick=1397 Det=524=0
|
||||
190 Tick=1397 Det=523=0
|
||||
191 Tick=1397 Det=523=0
|
||||
192 Tick=1397 Det=524=0
|
||||
193 Tick=1397 Det=522=1
|
||||
194 Tick=1397 Det=522=1
|
||||
195 Tick=1400 Det=515=0
|
||||
196 Tick=1421 Det=514=0
|
||||
197 Tick=1422 Det=513=0
|
||||
198 Tick=1437 Det=531=1
|
||||
199 Tick=1437 Det=531=1
|
||||
200 Tick=1437 Det=529=0
|
||||
201 Tick=1437 Det=529=0
|
||||
202 Tick=1437 Det=530=0
|
||||
203 Tick=1437 Det=530=0
|
||||
204 Tick=1441 Det=531=0
|
||||
205 Tick=1441 Det=531=0
|
||||
206 Tick=1441 Det=529=0
|
||||
207 Tick=1441 Det=529=0
|
||||
208 Tick=1441 Det=530=0
|
||||
209 Tick=1441 Det=530=0
|
||||
210 Tick=1446 Det=518=1
|
||||
211 Tick=1446 Det=518=1
|
||||
212 Tick=1446 Det=519=0
|
||||
213 Tick=1446 Det=519=0
|
||||
214 Tick=1446 Det=520=0
|
||||
215 Tick=1446 Det=520=0
|
||||
216 Tick=1446 Det=517=0
|
||||
217 Tick=1446 Det=517=0
|
||||
218 Tick=1475 Det=518=0
|
||||
219 Tick=1475 Det=519=0
|
||||
220 Tick=1475 Det=519=0
|
||||
221 Tick=1475 Det=520=0
|
||||
222 Tick=1475 Det=520=0
|
||||
223 Tick=1475 Det=517=0
|
||||
224 Tick=1475 Det=517=0
|
||||
225 Tick=1490 Det=518=0
|
||||
226 Tick=1491 Det=521=0
|
||||
227 Tick=1491 Det=521=0
|
||||
228 Tick=1491 Det=524=0
|
||||
229 Tick=1491 Det=523=0
|
||||
230 Tick=1491 Det=523=0
|
||||
231 Tick=1491 Det=524=0
|
||||
232 Tick=1491 Det=522=0
|
||||
233 Tick=1498 Det=521=0
|
||||
234 Tick=1498 Det=521=0
|
||||
235 Tick=1498 Det=524=0
|
||||
236 Tick=1498 Det=523=1
|
||||
237 Tick=1498 Det=523=1
|
||||
238 Tick=1498 Det=524=0
|
||||
239 Tick=1498 Det=522=0
|
||||
240 Tick=1498 Det=522=0
|
||||
241 Tick=1500 Det=522=0
|
||||
242 Tick=1541 Det=521=0
|
||||
243 Tick=1541 Det=521=0
|
||||
244 Tick=1541 Det=524=0
|
||||
245 Tick=1541 Det=526=0
|
||||
246 Tick=1541 Det=527=1
|
||||
247 Tick=1541 Det=526=0
|
||||
248 Tick=1541 Det=523=0
|
||||
249 Tick=1541 Det=524=0
|
||||
250 Tick=1541 Det=525=0
|
||||
251 Tick=1541 Det=528=0
|
||||
252 Tick=1541 Det=528=0
|
||||
253 Tick=1541 Det=522=0
|
||||
254 Tick=1541 Det=522=0
|
||||
255 Tick=1541 Det=527=1
|
||||
256 Tick=1541 Det=525=0
|
||||
257 Tick=1551 Det=526=1
|
||||
258 Tick=1551 Det=527=1
|
||||
259 Tick=1551 Det=526=1
|
||||
260 Tick=1551 Det=525=0
|
||||
261 Tick=1551 Det=528=0
|
||||
262 Tick=1551 Det=528=0
|
||||
263 Tick=1551 Det=527=1
|
||||
264 Tick=1551 Det=525=0
|
||||
265 Tick=1552 Det=523=0
|
||||
266 Tick=1598 Det=527=1
|
||||
267 Tick=1598 Det=526=0
|
||||
268 Tick=1598 Det=525=0
|
||||
269 Tick=1598 Det=528=0
|
||||
270 Tick=1598 Det=528=0
|
||||
271 Tick=1598 Det=527=1
|
||||
272 Tick=1598 Det=525=0
|
||||
273 Tick=1606 Det=526=0
|
||||
274 Tick=1606 Det=526=0
|
||||
275 Tick=1606 Det=525=0
|
||||
276 Tick=1606 Det=528=0
|
||||
277 Tick=1606 Det=528=0
|
||||
278 Tick=1606 Det=527=0
|
||||
279 Tick=1606 Det=525=0
|
||||
280 Tick=1643 Det=518=0
|
||||
281 Tick=1643 Det=518=0
|
||||
282 Tick=1643 Det=519=1
|
||||
283 Tick=1643 Det=519=1
|
||||
284 Tick=1643 Det=520=0
|
||||
285 Tick=1643 Det=520=0
|
||||
286 Tick=1643 Det=517=0
|
||||
287 Tick=1643 Det=517=0
|
||||
288 Tick=1645 Det=527=0
|
||||
289 Tick=1651 Det=526=0
|
||||
290 Tick=1708 Det=513=1
|
||||
291 Tick=1708 Det=515=0
|
||||
292 Tick=1709 Det=514=0
|
||||
293 Tick=1709 Det=516=1
|
||||
294 Tick=1709 Det=516=1
|
||||
295 Tick=1709 Det=515=0
|
||||
296 Tick=1709 Det=514=0
|
||||
297 Tick=1709 Det=513=1
|
||||
298 Tick=1709 Det=518=0
|
||||
299 Tick=1709 Det=518=0
|
||||
300 Tick=1709 Det=519=0
|
||||
301 Tick=1709 Det=519=0
|
||||
302 Tick=1709 Det=520=0
|
||||
303 Tick=1709 Det=520=0
|
||||
304 Tick=1709 Det=517=0
|
||||
305 Tick=1709 Det=517=0
|
||||
|
||||
Binary file not shown.
BIN
Signaux_complexes_GL.exe
Normal file
BIN
Signaux_complexes_GL.exe
Normal file
Binary file not shown.
BIN
UnitDebug.dcu
BIN
UnitDebug.dcu
Binary file not shown.
@@ -210,7 +210,7 @@ object FormDebug: TFormDebug
|
||||
Top = 96
|
||||
Width = 281
|
||||
Height = 17
|
||||
Caption = 'Affichage des trames '#233'chang'#233'es avec LENZ'
|
||||
Caption = 'Affichage des trames '#233'chang'#233'es avec l'#39'interface'
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clBlack
|
||||
Font.Height = -11
|
||||
|
||||
BIN
UnitPilote.dcu
BIN
UnitPilote.dcu
Binary file not shown.
BIN
UnitPrinc.dcu
BIN
UnitPrinc.dcu
Binary file not shown.
125
UnitPrinc.dfm
125
UnitPrinc.dfm
@@ -1,9 +1,10 @@
|
||||
object FormPrinc: TFormPrinc
|
||||
Left = 34
|
||||
Top = 494
|
||||
Left = 58
|
||||
Top = 238
|
||||
AutoSize = True
|
||||
BorderStyle = bsSingle
|
||||
Caption = 'Client TCP-IP CDM Rail ou USB - syst'#232'me LENZ'
|
||||
ClientHeight = 601
|
||||
ClientHeight = 606
|
||||
ClientWidth = 1196
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
@@ -13,7 +14,7 @@ object FormPrinc: TFormPrinc
|
||||
Font.Style = []
|
||||
Menu = MainMenu1
|
||||
OldCreateOrder = False
|
||||
Position = poDefault
|
||||
Position = poMainFormCenter
|
||||
ShowHint = True
|
||||
OnClose = FormClose
|
||||
OnCreate = FormCreate
|
||||
@@ -21,33 +22,33 @@ object FormPrinc: TFormPrinc
|
||||
TextHeight = 13
|
||||
object LabelTitre: TLabel
|
||||
Left = 8
|
||||
Top = 8
|
||||
Width = 204
|
||||
Height = 23
|
||||
Top = 16
|
||||
Width = 173
|
||||
Height = 18
|
||||
Caption = 'Signaux complexes GL'
|
||||
Font.Charset = ANSI_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -19
|
||||
Font.Height = -16
|
||||
Font.Name = 'Arial'
|
||||
Font.Style = [fsItalic]
|
||||
Font.Style = [fsBold, fsItalic]
|
||||
ParentFont = False
|
||||
end
|
||||
object LabelEtat: TLabel
|
||||
Left = 344
|
||||
Top = 8
|
||||
Width = 305
|
||||
Height = 22
|
||||
Caption = 'LabelEtat'
|
||||
Left = 456
|
||||
Top = 16
|
||||
Width = 152
|
||||
Height = 18
|
||||
Caption = 'Initialisations en cours'
|
||||
Font.Charset = ANSI_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -19
|
||||
Font.Height = -16
|
||||
Font.Name = 'Arial'
|
||||
Font.Style = []
|
||||
ParentFont = False
|
||||
end
|
||||
object Image9feux: TImage
|
||||
Left = 488
|
||||
Top = 0
|
||||
Top = 8
|
||||
Width = 57
|
||||
Height = 105
|
||||
Picture.Data = {
|
||||
@@ -236,8 +237,8 @@ object FormPrinc: TFormPrinc
|
||||
Visible = False
|
||||
end
|
||||
object Image7feux: TImage
|
||||
Left = 544
|
||||
Top = 0
|
||||
Left = 504
|
||||
Top = 8
|
||||
Width = 57
|
||||
Height = 105
|
||||
Picture.Data = {
|
||||
@@ -405,7 +406,7 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object Image5feux: TImage
|
||||
Left = 280
|
||||
Top = -8
|
||||
Top = 0
|
||||
Width = 41
|
||||
Height = 89
|
||||
Picture.Data = {
|
||||
@@ -505,7 +506,7 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object Image4feux: TImage
|
||||
Left = 240
|
||||
Top = 0
|
||||
Top = 8
|
||||
Width = 41
|
||||
Height = 97
|
||||
Picture.Data = {
|
||||
@@ -597,7 +598,7 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object Image3feux: TImage
|
||||
Left = 616
|
||||
Top = 0
|
||||
Top = 8
|
||||
Width = 33
|
||||
Height = 57
|
||||
Picture.Data = {
|
||||
@@ -678,7 +679,7 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object Image2feux: TImage
|
||||
Left = 1096
|
||||
Top = 128
|
||||
Top = 136
|
||||
Width = 33
|
||||
Height = 57
|
||||
Picture.Data = {
|
||||
@@ -752,7 +753,7 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object Image2Dir: TImage
|
||||
Left = 968
|
||||
Top = 40
|
||||
Top = 48
|
||||
Width = 41
|
||||
Height = 25
|
||||
Picture.Data = {
|
||||
@@ -827,7 +828,7 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object Image3Dir: TImage
|
||||
Left = 1008
|
||||
Top = 40
|
||||
Top = 48
|
||||
Width = 49
|
||||
Height = 25
|
||||
Picture.Data = {
|
||||
@@ -905,7 +906,7 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object Image4Dir: TImage
|
||||
Left = 1056
|
||||
Top = 40
|
||||
Top = 48
|
||||
Width = 57
|
||||
Height = 25
|
||||
Picture.Data = {
|
||||
@@ -993,7 +994,7 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object Image5Dir: TImage
|
||||
Left = 1112
|
||||
Top = 40
|
||||
Top = 48
|
||||
Width = 65
|
||||
Height = 25
|
||||
Picture.Data = {
|
||||
@@ -1091,7 +1092,7 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object Image6Dir: TImage
|
||||
Left = 1112
|
||||
Top = 128
|
||||
Top = 80
|
||||
Width = 81
|
||||
Height = 25
|
||||
Picture.Data = {
|
||||
@@ -1199,7 +1200,7 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object BoutVersion: TButton
|
||||
Left = 1008
|
||||
Top = 8
|
||||
Top = 16
|
||||
Width = 83
|
||||
Height = 33
|
||||
Caption = 'Dem version'
|
||||
@@ -1208,7 +1209,7 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object ListBox1: TListBox
|
||||
Left = 8
|
||||
Top = 40
|
||||
Top = 48
|
||||
Width = 633
|
||||
Height = 520
|
||||
Style = lbOwnerDrawFixed
|
||||
@@ -1225,7 +1226,7 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object BoutonRaf: TButton
|
||||
Left = 912
|
||||
Top = 8
|
||||
Top = 16
|
||||
Width = 89
|
||||
Height = 33
|
||||
Caption = 'Rafraichissement'
|
||||
@@ -1234,16 +1235,16 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object ScrollBox1: TScrollBox
|
||||
Left = 648
|
||||
Top = 160
|
||||
Top = 136
|
||||
Width = 537
|
||||
Height = 405
|
||||
Height = 437
|
||||
Color = clWhite
|
||||
ParentColor = False
|
||||
TabOrder = 3
|
||||
end
|
||||
object GroupBox1: TGroupBox
|
||||
Left = 656
|
||||
Top = 0
|
||||
Top = 8
|
||||
Width = 249
|
||||
Height = 97
|
||||
Caption = 'Commande d'#39'accessoires'
|
||||
@@ -1274,6 +1275,7 @@ object FormPrinc: TFormPrinc
|
||||
Top = 32
|
||||
Width = 57
|
||||
Height = 21
|
||||
Hint = 'Adresse accessoire'
|
||||
TabOrder = 0
|
||||
Text = '1'
|
||||
end
|
||||
@@ -1312,7 +1314,7 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object ButtonTest: TButton
|
||||
Left = 912
|
||||
Top = 88
|
||||
Top = 96
|
||||
Width = 89
|
||||
Height = 33
|
||||
Caption = 'Demande '#233'tat r'#233'trosignalisation'
|
||||
@@ -1322,7 +1324,7 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object ButtonInfo: TButton
|
||||
Left = 1008
|
||||
Top = 48
|
||||
Top = 56
|
||||
Width = 81
|
||||
Height = 33
|
||||
Caption = 'Informations'
|
||||
@@ -1330,8 +1332,8 @@ object FormPrinc: TFormPrinc
|
||||
OnClick = ButtonInfoClick
|
||||
end
|
||||
object GroupBox2: TGroupBox
|
||||
Left = 654
|
||||
Top = 103
|
||||
Left = 982
|
||||
Top = 87
|
||||
Width = 211
|
||||
Height = 46
|
||||
Caption = 'Trains'
|
||||
@@ -1356,25 +1358,25 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object StatusBar1: TStatusBar
|
||||
Left = 0
|
||||
Top = 571
|
||||
Top = 576
|
||||
Width = 1196
|
||||
Height = 30
|
||||
Panels = <>
|
||||
SimplePanel = True
|
||||
end
|
||||
object MSCommUSBLenz: TMSComm
|
||||
Left = 880
|
||||
Top = 128
|
||||
Left = 1024
|
||||
Top = 136
|
||||
Width = 32
|
||||
Height = 32
|
||||
OnComm = MSCommUSBLenzComm
|
||||
ControlData = {
|
||||
2143341208000000ED030000ED03000001568A64000006000000010000040000
|
||||
00020000802500000000080000000000000000003F00000001000000}
|
||||
00020000802500000000080000000000000000003F00000011000000}
|
||||
end
|
||||
object loco: TButton
|
||||
Left = 1096
|
||||
Top = 8
|
||||
Top = 16
|
||||
Width = 75
|
||||
Height = 33
|
||||
Caption = 'loco'
|
||||
@@ -1383,7 +1385,7 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object ButtonAffDebug: TButton
|
||||
Left = 912
|
||||
Top = 48
|
||||
Top = 56
|
||||
Width = 89
|
||||
Height = 33
|
||||
Caption = 'Affiche debug'
|
||||
@@ -1392,7 +1394,7 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object ButtonReprise: TButton
|
||||
Left = 1096
|
||||
Top = 48
|
||||
Top = 56
|
||||
Width = 75
|
||||
Height = 33
|
||||
Hint =
|
||||
@@ -1402,6 +1404,34 @@ object FormPrinc: TFormPrinc
|
||||
TabOrder = 12
|
||||
OnClick = ButtonRepriseClick
|
||||
end
|
||||
object EditGenli: TEdit
|
||||
Left = 656
|
||||
Top = 112
|
||||
Width = 121
|
||||
Height = 21
|
||||
TabOrder = 13
|
||||
Visible = False
|
||||
end
|
||||
object Button1: TButton
|
||||
Left = 784
|
||||
Top = 112
|
||||
Width = 113
|
||||
Height = 25
|
||||
Caption = 'Envoi vers Genli'
|
||||
TabOrder = 14
|
||||
Visible = False
|
||||
OnClick = Button1Click
|
||||
end
|
||||
object Button2: TButton
|
||||
Left = 1040
|
||||
Top = 80
|
||||
Width = 97
|
||||
Height = 25
|
||||
Caption = 'Demande '#233'tat CTS'
|
||||
TabOrder = 15
|
||||
Visible = False
|
||||
OnClick = Button2Click
|
||||
end
|
||||
object Timer1: TTimer
|
||||
Interval = 100
|
||||
OnTimer = Timer1Timer
|
||||
@@ -1448,6 +1478,13 @@ object FormPrinc: TFormPrinc
|
||||
Caption = 'Codification des feux'
|
||||
OnClick = Codificationdesfeux1Click
|
||||
end
|
||||
object N5: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object Quitter1: TMenuItem
|
||||
Caption = 'Quitter'
|
||||
OnClick = Quitter1Click
|
||||
end
|
||||
end
|
||||
object Interface1: TMenuItem
|
||||
Caption = 'Interface'
|
||||
|
||||
529
UnitPrinc.pas
529
UnitPrinc.pas
@@ -83,6 +83,11 @@ type
|
||||
LireunfichierdeCV1: TMenuItem;
|
||||
LireunaccessoireversunfichierdeCV1: TMenuItem;
|
||||
SaveDialog: TSaveDialog;
|
||||
N5: TMenuItem;
|
||||
Quitter1: TMenuItem;
|
||||
EditGenli: TEdit;
|
||||
Button1: TButton;
|
||||
Button2: TButton;
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure MSCommUSBLenzComm(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||||
@@ -131,6 +136,9 @@ type
|
||||
procedure ButtonRepriseClick(Sender: TObject);
|
||||
procedure LireunfichierdeCV1Click(Sender: TObject);
|
||||
procedure LireunaccessoireversunfichierdeCV1Click(Sender: TObject);
|
||||
procedure Quitter1Click(Sender: TObject);
|
||||
procedure Button1Click(Sender: TObject);
|
||||
procedure Button2Click(Sender: TObject);
|
||||
|
||||
private
|
||||
{ Déclarations privées }
|
||||
@@ -196,7 +204,7 @@ TMA = (valide,devalide);
|
||||
var ancien_tablo_signalCplx,EtatsignalCplx : array[0..MaxAcc] of word;
|
||||
AvecInitAiguillages,tempsCli,combine,NbreFeux,pasreponse,AdrDevie,precedent ,
|
||||
NombreImages,signalCpx,branche_trouve,Indexbranche_trouve,Actuel,Signal_suivant,
|
||||
Nbre_recu_cdm,Tempo_chgt_feux,Adj1,Adj2,protocole : integer;
|
||||
Nbre_recu_cdm,Tempo_chgt_feux,Adj1,Adj2,protocole,TempoOctet,TimoutMaxInterface : integer;
|
||||
Hors_tension2,traceSign,TraceZone,Ferme,parSocket,ackCdm,
|
||||
NackCDM,MsgSim : boolean;
|
||||
TraceListe,clignotant,nack,Maj_feux_cours : boolean;
|
||||
@@ -215,10 +223,10 @@ const
|
||||
var
|
||||
FormPrinc: TFormPrinc;
|
||||
ack,portCommOuvert,trace,AffMem,AfficheDet,CDM_connecte,parSocketCDM,
|
||||
DebugOuv,Raz_Acc_signaux,AvecInit,AvecTCO : boolean;
|
||||
DebugOuv,Raz_Acc_signaux,AvecInit,AvecTCO,terminal : boolean;
|
||||
tablo : array of byte;
|
||||
Enregistrement,AdresseIP,chaine_Envoi,chaine_recue,AdresseIPCDM,recuCDM,Id_CDM,Af,
|
||||
ConfStCom : string;
|
||||
ConfStCom,entete,suffixe : string;
|
||||
maxaiguillage,detecteur_chgt,Temps,TpsRecuCom,NumPort,Tempo_init,Suivant,TypeGen,
|
||||
NbreImagePligne,Port,NbreBranches,Index2_det,branche_det,Index_det,
|
||||
portCDM,I_simule : integer;
|
||||
@@ -899,8 +907,7 @@ var i : integer;
|
||||
check : byte;
|
||||
begin
|
||||
check:=0;
|
||||
// on commence à 3 pour ne pas calculer le checksum sur FF FE
|
||||
for i:=3 to length(s) do
|
||||
for i:=1 to length(s) do
|
||||
begin
|
||||
check:=check xor ord(s[i]);
|
||||
end;
|
||||
@@ -936,11 +943,56 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
// envoi d'une chaîne à la centrale Lenz par USBLenz ou socket, n'attend pas l'ack
|
||||
// envoi d'une chaîne à la centrale par USBLenz ou socket, n'attend pas l'ack
|
||||
// ici on envoie pas à CDM
|
||||
procedure envoi_ss_ack(s : string);
|
||||
var i,timeout,valto : integer;
|
||||
com : Tobject;
|
||||
sa : string;
|
||||
begin
|
||||
if Trace then affiche_chaine_Hex(s,ClGreen);
|
||||
if portCommOuvert then FormPrinc.MSCommUSBLenz.Output:=s;
|
||||
// com:=formprinc.MSCommUSBLenz;
|
||||
s:=entete+s+suffixe;
|
||||
if Trace then Affiche('Tick='+IntToSTR(tick)+'/Env '+chaine_Hex(s),ClGreen);
|
||||
// par port com-usb
|
||||
|
||||
if portCommOuvert then
|
||||
begin
|
||||
if (protocole=4) then // le protocole 4 contrôle simplement la ligne CTS avant de transmettre et temporise octet par octet
|
||||
begin
|
||||
i:=1;
|
||||
valto:=10;
|
||||
//Affiche('envoi en tenant compte cts',clyellow);
|
||||
repeat
|
||||
timeout:=0;
|
||||
repeat
|
||||
//Application.ProcessMessages;
|
||||
inc(timeout);
|
||||
Sleep(20);
|
||||
until (Formprinc.MSCommUSBLenz.CTSHolding=true) or (timeout>valto);
|
||||
if timeout<=valto then
|
||||
begin
|
||||
//if formprinc.MSCommUSBLenz.CTSHolding then sa:='CTS=1 ' else sa:='CTS=0 ';
|
||||
FormPrinc.MSCommUSBLenz.Output:=s[i];
|
||||
//if terminal then Affiche(sa+s[i],clyellow) else Affiche(sa+chaine_hex(s[i]),clyellow);
|
||||
inc(i);
|
||||
end;
|
||||
until (i=length(s)+1) or (timeout>valto);
|
||||
if timeout>valto then affiche('Erreur attente interface trop longue',clred);
|
||||
end;
|
||||
if (protocole=2) or (tempoOctet=0) then begin FormPrinc.MSCommUSBLenz.Output:=s;exit;end;
|
||||
if (protocole=0) or (protocole=1) or (protocole=3) then
|
||||
begin
|
||||
for i:=1 to length(s) do
|
||||
begin
|
||||
FormPrinc.MSCommUSBLenz.Output:=s[i];
|
||||
//if terminal then Affiche(s[i],clyellow) else Affiche(chaine_hex(s[i]),clyellow);
|
||||
Application.ProcessMessages;
|
||||
Sleep(TempoOctet);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
// par socket (ethernet)
|
||||
if parSocket then Formprinc.ClientSocketLenz.Socket.SendText(s);
|
||||
end;
|
||||
|
||||
@@ -948,7 +1000,7 @@ end;
|
||||
function envoi(s : string) : boolean;
|
||||
var temps : integer;
|
||||
begin
|
||||
//if Hors_tension2=false then
|
||||
if Hors_tension2=false then
|
||||
begin
|
||||
envoi_ss_ack(s);
|
||||
// attend l'ack
|
||||
@@ -957,12 +1009,13 @@ begin
|
||||
begin
|
||||
temps:=0;
|
||||
repeat
|
||||
inc(temps);tempo(1);
|
||||
until ferme or ack or nack or (temps>5); // l'interface répond < 5s en mode normal et 1,5 mn en mode programmation
|
||||
Application.processMessages;
|
||||
inc(temps);Sleep(100);
|
||||
until ferme or ack or nack or (temps>TimoutMaxInterface); // l'interface répond < 5s en mode normal et 1,5 mn en mode programmation
|
||||
if not(ack) or nack then
|
||||
begin
|
||||
Affiche('Pas de réponse de l''interface',clRed);inc(pasreponse);
|
||||
if pasreponse>3 then hors_tension2:=true;
|
||||
// &&&&if pasreponse>3 then hors_tension2:=true;
|
||||
end;
|
||||
if ack then begin pasreponse:=0;hors_tension2:=false;end;
|
||||
end;
|
||||
@@ -1042,9 +1095,9 @@ begin
|
||||
fonction:=((adresse-1) mod 4)*2 + (octet-1);
|
||||
// pilotage
|
||||
if etat then
|
||||
s:=#$ff+#$fe+#$52+Char(groupe)+char(fonction or $80)
|
||||
s:=#$52+Char(groupe)+char(fonction or $80)
|
||||
else
|
||||
s:=#$ff+#$fe+#$52+Char(groupe)+char(fonction or $88);
|
||||
s:=#$52+Char(groupe)+char(fonction or $88);
|
||||
|
||||
s:=checksum(s);
|
||||
envoi(s); // envoi de la trame et attente Ack
|
||||
@@ -1060,9 +1113,9 @@ begin
|
||||
fonction:=((adresse-1) mod 4)*2 + (octet-1);
|
||||
// pilotage
|
||||
if octet=2 then
|
||||
s:=#$ff+#$fe+#$52+Char(groupe)+char(fonction or $80)
|
||||
s:=#$52+Char(groupe)+char(fonction or $80)
|
||||
else
|
||||
s:=#$ff+#$fe+#$52+Char(groupe)+char(fonction or $88);
|
||||
s:=#$52+Char(groupe)+char(fonction or $88);
|
||||
|
||||
s:=checksum(s);
|
||||
if envoi(s) then exit else envoi(s); // envoi de la trame et attente Ack sinon renvoyer
|
||||
@@ -1104,7 +1157,7 @@ begin
|
||||
groupe:=(adresse-1) div 4;
|
||||
fonction:=((adresse-1) mod 4)*2 + (octet-1);
|
||||
// pilotage à 1
|
||||
s:=#$ff+#$fe+#$52+Char(groupe)+char(fonction or $88); // activer la sortie
|
||||
s:=#$52+Char(groupe)+char(fonction or $88); // activer la sortie
|
||||
s:=checksum(s);
|
||||
envoi(s); // envoi de la trame et attente Ack
|
||||
// si l'accessoire est un feu et sans raz des signaux, sortir
|
||||
@@ -1120,7 +1173,7 @@ begin
|
||||
sleep(50);
|
||||
|
||||
// pilotage à 0 pour éteindre le pilotage de la bobine du relais
|
||||
s:=#$ff+#$fe+#$52+Char(groupe)+char(fonction or $80); // désactiver la sortie
|
||||
s:=#$52+Char(groupe)+char(fonction or $80); // désactiver la sortie
|
||||
s:=checksum(s);
|
||||
envoi(s); // envoi de la trame et attente Ack
|
||||
end;
|
||||
@@ -1142,7 +1195,7 @@ begin
|
||||
groupe:=(adresse-1) div 4;
|
||||
fonction:=((adresse-1) mod 4)*2 + (octet-1);
|
||||
// pilotage à 1
|
||||
s:=#$ff+#$fe+#$52+Char(groupe)+char(fonction or $88); // activer la sortie
|
||||
s:=#$52+Char(groupe)+char(fonction or $88); // activer la sortie
|
||||
s:=checksum(s);
|
||||
envoi(s); // envoi de la trame et attente Ack
|
||||
sleep(10); // temps minimal pour ne pas avoir le défaut station occupée qd on pilote un signal leb
|
||||
@@ -1152,7 +1205,7 @@ begin
|
||||
|
||||
//if portCommOuvert or ParSocket then tempo(temps);
|
||||
// pilotage à 0 pour éteindre le pilotage de la bobine du relais
|
||||
s:=#$ff+#$fe+#$52+Char(groupe)+char(fonction or $80); // désactiver la sortie
|
||||
s:=#$52+Char(groupe)+char(fonction or $80); // désactiver la sortie
|
||||
s:=checksum(s);
|
||||
envoi(s); // envoi de la trame et attente Ack
|
||||
end;
|
||||
@@ -1161,7 +1214,7 @@ procedure vitesse_loco(loco : integer;vitesse : integer;sens : boolean);
|
||||
var s : string;
|
||||
begin
|
||||
if sens then vitesse:=vitesse or 128;
|
||||
s:=#$ff+#$fe+#$e4+#$13+#$0+char(loco)+char(vitesse);
|
||||
s:=#$e4+#$13+#$0+char(loco)+char(vitesse);
|
||||
s:=checksum(s);
|
||||
envoi(s);
|
||||
end;
|
||||
@@ -2995,11 +3048,31 @@ begin
|
||||
delete(s,1,i);
|
||||
Val(s,protocole,erreur);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
ConfStCom:=copy(sa,1,j-1);
|
||||
i:=pos(':',ConfStCom);
|
||||
val(ConfStCom[i-1],Numport,erreur);
|
||||
if i<>0 then Delete(ConfStCom,1,i);
|
||||
if (protocole=-1) or (protocole>4) or (i=0) then Affiche('Erreur port com mal déclaré : '+sa,clred);
|
||||
|
||||
// temporisation entre 2 caractères
|
||||
s:=lit_ligne;
|
||||
val(s,TempoOctet,erreur);
|
||||
if erreur<>0 then Affiche('Erreur temporisation entre 2 octets',clred);
|
||||
|
||||
// temporisation attente maximale interface
|
||||
s:=lit_ligne;
|
||||
val(s,TimoutMaxInterface,erreur);
|
||||
if erreur<>0 then Affiche('Erreur temporisation maximale interface',clred);
|
||||
|
||||
//entete
|
||||
s:=lit_ligne;
|
||||
val(s,i,erreur);
|
||||
entete:='';
|
||||
case i of
|
||||
ConfStCom:=copy(sa,1,j-1);
|
||||
0 : begin entete:='';suffixe:='';end;
|
||||
1 : begin entete:=#$FF+#$FE;suffixe:='';end;
|
||||
2 : begin entete:=#228;suffixe:=#13+#13+#10;end;
|
||||
@@ -5327,13 +5400,13 @@ var s : string;
|
||||
|
||||
// demande l'état d'un accessoire à la centrale. Le résultat sera réceptionné sur réception des informations
|
||||
// de rétrosignalisation.
|
||||
procedure demande_info_acc(adresse : integer);
|
||||
procedure demande_info_acc(adresse : integer);
|
||||
var s : string;
|
||||
n : integer;
|
||||
begin
|
||||
// envoyer 2 fois la commande, une fois avec N=0 pour récupérer le nibble bas,
|
||||
// une autre fois avec N=1 pour récupérer le nibble haut
|
||||
s:=#$FF+#$FE+#$42+char((adresse-1) div 4);
|
||||
s:=#$42+char((adresse-1) div 4);
|
||||
n:=$80+((adresse-1) mod 4) div 2;
|
||||
s:=s+char(n); // N=0 (bit 0)
|
||||
s:=checksum(s);
|
||||
@@ -5392,11 +5465,10 @@ begin
|
||||
procedure Event_Detecteur(Adresse : integer;etat : boolean);
|
||||
var i,trainAdj1,TrainAdj2,TrainActuel,Etat01 : integer;
|
||||
s : string;
|
||||
begin
|
||||
begin
|
||||
// vérifier si l'état du détecteur est déja stocké, car on peut reçevoir plusieurs évènements pour le même détecteur dans le même état
|
||||
if Etat then Etat01:=1 else Etat01:=0;
|
||||
// vérifier si l'état du détecteur est déja stocké, car on peut reçevoir plusieurs évènements pour le même détecteur dans le même état
|
||||
// on reçoit un doublon dans deux index consécutifs.
|
||||
if N_Event_tick>=1 then
|
||||
begin
|
||||
//Affiche('Event_det_tick['+intToSTR(N_event_tick)+'].detecteur['+intToSTR(Adresse)+']='+intToSTr(event_det_tick[N_event_tick].detecteur[Adresse]),clyellow);
|
||||
@@ -5687,50 +5759,50 @@ begin
|
||||
aiguillage[adraig].position:=1; // état aiguillage bas
|
||||
Event_Aig(adraig);
|
||||
if trace then begin s:='accessoire '+intToSTR(adraig)+'=1';Affiche(s,clYellow);end;
|
||||
end;
|
||||
end;
|
||||
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function decode_chaine_retro(s : string) : string;
|
||||
|
||||
function Xdecode_chaine_retro(s : string) : string;
|
||||
var i : integer;
|
||||
chaineInt : string;
|
||||
chaineInt : string;
|
||||
begin
|
||||
chaineInt:=s;
|
||||
begin
|
||||
chaineInt:=s;
|
||||
|
||||
// réponse de l'information des accessoires
|
||||
if s[1]=#$42 then
|
||||
begin
|
||||
delete(chaineInt,i,3);
|
||||
decode_retro(ord(chaineInt[i]),ord(chaineInt[i+1]));
|
||||
delete(chaineInt,1,1);
|
||||
//Xdecode_retro(ord(chaineInt[1]),ord(chaineInt[2]));
|
||||
end
|
||||
delete(chaineInt,1,3);
|
||||
end
|
||||
begin
|
||||
i:=pos(#$FF+#$FD+#$81,chaineInt);
|
||||
if (i<>0) and (length(chaineInt)>=5) then
|
||||
begin
|
||||
delete(chaineInt,i,5);
|
||||
Affiche('Voie hors tension msg1',clRed);
|
||||
end
|
||||
else
|
||||
else
|
||||
begin
|
||||
if s[1]=#$81 then
|
||||
begin
|
||||
delete(chaineInt,i,5);
|
||||
Affiche('Voie hors tension msg2',clRed);
|
||||
delete(chaineInt,1,2);
|
||||
Affiche('Voie hors tension msg1',clRed);
|
||||
end
|
||||
Hors_tension2:=true;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if s[1]=#$61 then
|
||||
begin
|
||||
delete(chaineInt,1,2);
|
||||
Affiche('Voie hors tension msg2',clRed);
|
||||
Hors_tension2:=false;
|
||||
end
|
||||
else
|
||||
begin
|
||||
i:=pos(#$46+#$43+#$40,chaineInt);
|
||||
if (i<>0) and (length(chaineInt)>=3) then
|
||||
begin
|
||||
delete(chaineInt,i,6);
|
||||
Affiche('Reprise msg 1',clOrange);
|
||||
delete(chaineInt,1,3);
|
||||
Affiche('Reprise msg 1',clOrange);
|
||||
Hors_tension2:=false;
|
||||
end
|
||||
end
|
||||
else
|
||||
begin
|
||||
i:=pos(#$46+#$43+#$50,chaineInt);
|
||||
@@ -5744,7 +5816,141 @@ begin
|
||||
begin
|
||||
affiche('Erreur 2, chaîne rétrosig. inconnue recue:',clRed);
|
||||
affiche(chaine_HEX(chaineInt),clred);
|
||||
chaineInt:='';
|
||||
chaineInt:='';
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
Xdecode_chaine_retro:=chaineint;
|
||||
end;
|
||||
|
||||
// décodage d'une chaine simple de la rétrosignalisation
|
||||
function decode_chaine_retro(chaineINT : string) : string ;
|
||||
var msg : string;
|
||||
i,cv : integer;
|
||||
begin
|
||||
//affiche(chaine_hex(chaine),clyellow);
|
||||
msg:='';
|
||||
ack:=true;nack:=false;
|
||||
// décodage du 3eme octet de la chaîne
|
||||
if chaineINT[1]=#1 then
|
||||
begin
|
||||
case chaineINT[2] of // page 13 doc XpressNet
|
||||
#1 : begin nack:=true;msg:='erreur timout transmission';end;
|
||||
#2 : begin nack:=true;msg:='erreur timout centrale';end;
|
||||
#3 : begin nack:=true;msg:='erreur communication inconnue';end;
|
||||
#4 : begin msg:='succès';end;
|
||||
#5 : begin nack:=true;msg:='plus de time slot';end;
|
||||
#6 : begin nack:=true;msg:='débordement tampon LI100';end;
|
||||
end;
|
||||
if trace and (chaineINT[2]=#4) then Affiche(msg,clYellow);
|
||||
if trace and (chaineINT[2]<>#4) then Affiche(msg,clRed);
|
||||
delete(chaineINT,1,3);
|
||||
decode_chaine_retro:=chaineINT;
|
||||
exit;
|
||||
end;
|
||||
|
||||
if chaineINT[1]=#2 then
|
||||
begin
|
||||
msg:='Version matérielle '+intTohex(ord(chaineINT[2]),2)+' - Version soft '+intToHex(ord(chaineINT[3]),2);
|
||||
Affiche(msg,clYellow);
|
||||
delete(chaineINT,1,2);
|
||||
decode_chaine_retro:=chaineINT;
|
||||
exit;
|
||||
end;
|
||||
|
||||
if chaineINT[1]=#$61 then
|
||||
begin
|
||||
delete(chaineInt,1,1);
|
||||
case chaineINT[1] of
|
||||
#$00 : begin ack:=true;msg:='Voie hors tension';end;
|
||||
#$01 : begin ack:=true;msg:='Reprise';end;
|
||||
|
||||
#$02 : begin ack:=true;msg:='Mode programmation ';end;
|
||||
|
||||
#$80 : begin nack:=true;msg:='erreurs de transferts- Voir doc XpressNet p29';end;
|
||||
#$81 : begin nack:=true;msg:='Station occupée - Voir doc XpressNet p29';end;
|
||||
#$82 : begin nack:=true;msg:='Commande non implantée';end;
|
||||
else begin nack:=true;msg:='Réception inconnue';end;
|
||||
end;
|
||||
if nack then affiche(msg,clred) else affiche(msg,clyellow);
|
||||
delete(chaineINT,1,2);
|
||||
decode_chaine_retro:=chaineINT;
|
||||
exit;
|
||||
end;
|
||||
|
||||
if ((chaineINT[1]=#$63) and (chaineINT[2]=#$14)) then // V3.6 uniquement
|
||||
begin
|
||||
// réception d'un CV. DocXpressNet p26
|
||||
|
||||
delete(chaineInt,1,2);
|
||||
cv:=ord(chaineINT[1]);
|
||||
Affiche('Réception CV'+IntToSTR(cv)+' à '+IntToSTR(ord(chaineINT[2])),clyellow);
|
||||
if cv>255 then Affiche('Erreur Recu CV>255',clRed)
|
||||
else
|
||||
begin
|
||||
tablo_cv[cv]:=ord(chaineINT[2]);
|
||||
inc(N_Cv); // nombre de CV recus
|
||||
end;
|
||||
decode_chaine_retro:=chaineINT;
|
||||
exit;
|
||||
end;
|
||||
|
||||
if chaineINT[1]=#$42 then
|
||||
begin
|
||||
delete(chaineInt,1,1);
|
||||
decode_retro(ord(chaineInt[1]),ord(chaineInt[2]));
|
||||
delete(chaineInt,1,3);
|
||||
decode_chaine_retro:=chaineINT;
|
||||
exit;
|
||||
end;
|
||||
|
||||
if chaineINT[1]=#$81 then
|
||||
begin
|
||||
delete(chaineInt,1,2);
|
||||
Affiche('Voie hors tension msg1',clRed);
|
||||
Hors_tension2:=true;
|
||||
decode_chaine_retro:=chaineINT;
|
||||
exit;
|
||||
end;
|
||||
|
||||
if chaineINT[1]=#$61 then
|
||||
begin
|
||||
delete(chaineInt,1,2);
|
||||
Affiche('Voie hors tension msg2',clRed);
|
||||
Hors_tension2:=false;
|
||||
decode_chaine_retro:=chaineINT;
|
||||
exit;
|
||||
end;
|
||||
|
||||
if chaineINT[1]=#$46 then
|
||||
begin
|
||||
//FF FD 46 43 40 41 40 40 49 4D non documentée
|
||||
//FF FD 46 43 50 41 50 40 50 54 non documentée
|
||||
Affiche('Chaine non documentée recue: '+chaine_HEX(chaineINT),clred);
|
||||
delete(chaineInt,1,8);
|
||||
Hors_tension2:=false;
|
||||
decode_chaine_retro:=chaineINT;
|
||||
exit;
|
||||
end;
|
||||
|
||||
i:=pos(#$46+#$43+#$50,chaineInt);
|
||||
if (i<>0) and (length(chaineInt)>=3) then
|
||||
begin
|
||||
delete(chaineInt,1,3);
|
||||
Affiche('Reprise msg 2',clOrange);
|
||||
Hors_tension2:=false;
|
||||
decode_chaine_retro:=chaineINT;
|
||||
exit;
|
||||
end;
|
||||
|
||||
if chaineInt[1]=#$81 then
|
||||
begin
|
||||
delete(chaineInt,1,2);
|
||||
Affiche('Court circuit msg 1',clRed);
|
||||
decode_chaine_retro:=chaineINT;
|
||||
exit;
|
||||
end;
|
||||
|
||||
ack:=false;
|
||||
@@ -5753,102 +5959,19 @@ var chaineInt,msg : string;
|
||||
decode_chaine_retro:='';
|
||||
end;
|
||||
|
||||
// procédure appellée après réception sur le port USB ou socket
|
||||
procedure interprete_reponse(chaine : string);
|
||||
var chaineInt,msg : string;
|
||||
i,cv : integer;
|
||||
// procédure appellée après réception sur le port USB ou socket
|
||||
procedure interprete_reponse(chaine : string);
|
||||
var chaineInt,msg : string;
|
||||
i,cv : integer;
|
||||
begin
|
||||
chaineInt:=chaine;
|
||||
|
||||
begin
|
||||
//nack:=false;
|
||||
while length(chaineINT)>=5 do
|
||||
begin
|
||||
i:=pos(#$ff+#$fe,chaineINT);
|
||||
if (i<>0) and (length(chaineINT)>3) then
|
||||
begin
|
||||
msg:='';
|
||||
delete(chaineINT,i,2);
|
||||
// décodage du 3eme octet de la chaîne
|
||||
if chaineINT[1]=#1 then
|
||||
begin
|
||||
case chaineINT[i+1] of // page 13 doc XpressNet
|
||||
chaineINT:=chaine;
|
||||
|
||||
while length(chaineINT)>=3 do
|
||||
begin
|
||||
#2 : begin nack:=true;msg:='erreur timout centrale';end;
|
||||
#3 : begin nack:=true;msg:='erreur communication inconnue';end;
|
||||
#4 : begin msg:='succès';ack:=true;end;
|
||||
#5 : begin nack:=true;msg:='plus de time slot';end;
|
||||
#6 : begin nack:=true;msg:='débordement tampon LI100';end;
|
||||
end;
|
||||
if trace and (chaineINT[i+1]=#4) then Affiche(msg,clYellow);
|
||||
if trace and (chaineINT[i+1]<>#4) then Affiche(msg,clRed);
|
||||
end
|
||||
else
|
||||
begin
|
||||
if chaineINT[1]=#2 then
|
||||
begin
|
||||
ack:=true;
|
||||
msg:='Version matérielle '+intTohex(ord(chaineINT[2]),2)+' - Version soft '+intToHex(ord(chaineINT[3]),2);
|
||||
Affiche(msg,clYellow);
|
||||
end
|
||||
else
|
||||
begin
|
||||
if chaineINT[1]=#$42 then
|
||||
begin
|
||||
ack:=true;
|
||||
delete(chaineInt,1,1);
|
||||
decode_retro(ord(chaineInt[1]),ord(chaineInt[2]));
|
||||
end
|
||||
else
|
||||
begin
|
||||
if chaineINT[1]=#$61 then
|
||||
begin
|
||||
if length(chaineINT)>4 then
|
||||
begin
|
||||
case chaineINT[1] of
|
||||
#$80 : begin nack:=true;msg:='erreurs de transferts- Voir doc XpressNet p29';end;
|
||||
#$81 : begin nack:=true;msg:='Station occupée - Voir doc XpressNet p29';end;
|
||||
#$82 : begin nack:=true;msg:='Commande non implantée';end;
|
||||
else begin nack:=true;msg:='Réception inconnue';end;
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if ((chaineINT[1]=#$63) and (chaineINT[2]=#$14)) then // V3.6 uniquement
|
||||
begin
|
||||
// réception d'un CV. DocXpressNet p26
|
||||
delete(chaineInt,1,2);
|
||||
cv:=ord(chaineINT[1]);
|
||||
if cv>255 then Affiche('Erreur Recu CV>255',clRed)
|
||||
else
|
||||
begin
|
||||
tablo_cv[cv]:=ord(chaineINT[2]);
|
||||
inc(N_Cv); // nombre de CV recus
|
||||
end;
|
||||
end
|
||||
else
|
||||
Affiche(msg,clRed);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
if length(chaineINT)<=3 then delete(chaineINT,i,length(chaineINT))
|
||||
else
|
||||
begin
|
||||
i:=pos(#$ff+#$fd,chaineINT);
|
||||
if (i<>0) and (length(chaineINT)>=5) then
|
||||
chaineINT:=decode_chaine_retro(chaineINT)
|
||||
else
|
||||
begin
|
||||
i:=pos(#$FF+#$FD+#$81,chaineInt);
|
||||
if (i<>0) and (length(chaineInt)>=6) then
|
||||
begin
|
||||
delete(chaineInt,i,6);
|
||||
Affiche('Court circuit msg 1',clRed);
|
||||
end
|
||||
else
|
||||
begin
|
||||
affiche('Erreur 7, chaîne rétrosig. inconnue recue:'+chaine_HEX(chaineINT),clred);
|
||||
// supprimer l'entete éventuelle
|
||||
if (chaineINT[1]=#$ff) and (chaineINT[2]=#$fe) then Delete(chaineINT,1,2);
|
||||
if (chaineINT[1]=#$ff) and (chaineINT[2]=#$fd) then Delete(chaineINT,1,2);
|
||||
end;
|
||||
@@ -5875,13 +5998,18 @@ begin
|
||||
end;
|
||||
|
||||
procedure connecte_USB;
|
||||
begin
|
||||
// initialisation de la comm USB
|
||||
if NumPort<>0 then
|
||||
begin
|
||||
// initialisation de la comm USB
|
||||
if NumPort<>0 then
|
||||
begin
|
||||
With Formprinc.MSCommUSBLenz do
|
||||
begin
|
||||
Affiche('Demande ouverture com'+intToSTR(nuMPort)+':'+ConfStCom+','+IntToSTR(protocole),CLYellow);
|
||||
Settings:=ConfStCom; // COMx:vitesse,n,8,1
|
||||
Affiche('demande ouverture com'+intToSTR(nuMPort)+':'+ConfStCom+','+IntToSTR(protocole),CLYellow);
|
||||
if protocole>=4 then Handshaking:=0 {0=aucun 1=Xon-Xoff 2=cts 3=RTS-Xon-Xoff 4=5=protocoles "maison"}
|
||||
else Handshaking:=protocole;
|
||||
|
||||
SThreshold:=1;
|
||||
RThreshold:=1;
|
||||
CommPort:=NumPort;
|
||||
DTREnable:=True;
|
||||
@@ -5900,11 +6028,20 @@ begin
|
||||
else
|
||||
begin
|
||||
portCommOuvert:=false;
|
||||
Affiche('Port Com nul dans le fichier de configuration',clyellow);
|
||||
Affiche('Port Com nul dans le fichier de configuration',clyellow);
|
||||
end;
|
||||
|
||||
if portCommOuvert then
|
||||
begin
|
||||
affiche('port COM'+intToSTR(NumPort)+' ouvert',clGreen);
|
||||
With Formprinc do
|
||||
begin
|
||||
LabelTitre.caption:=titre+' Interface connectée au COM'+IntToSTR(NumPort);
|
||||
MenuConnecterUSB.enabled:=false;
|
||||
DeConnecterUSB.enabled:=true;
|
||||
ConnecterCDMRail.enabled:=false;
|
||||
DeConnecterCDMRail.enabled:=false;
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
@@ -5950,7 +6087,7 @@ begin
|
||||
envoi_CDM(s);
|
||||
if pos('_ACK',recuCDM)<>0 then Affiche('Services acceptés: aiguillages - détecteurs - actionneurs',clYellow);
|
||||
// demande les trains
|
||||
////s:=place_id('C-C-01-0002-DSCTRN-DLOAD|000|');
|
||||
////s:=place_id('C-C-01-0002-DSCTRN-DLOAD|000|');
|
||||
//envoi_CDM(s);
|
||||
end;
|
||||
end
|
||||
@@ -5994,7 +6131,7 @@ begin
|
||||
V_utile,V_publie : real;
|
||||
begin
|
||||
//AvecMaj:=false;
|
||||
TraceSign:=True;
|
||||
TraceSign:=True;
|
||||
AF:='Client TCP-IP CDM Rail ou USB - système LENZ - Version '+Version;
|
||||
Caption:=AF;
|
||||
Application.onHint:=doHint;
|
||||
@@ -6008,8 +6145,6 @@ begin
|
||||
N_Trains:=0;
|
||||
NivDebug:=0;
|
||||
DebugOuv:=True;
|
||||
|
||||
//LireunaccessoireversunfichierdeCV1.Visible:=false;
|
||||
|
||||
//LireunaccessoireversunfichierdeCV1.Visible:=false;
|
||||
|
||||
@@ -6041,7 +6176,7 @@ begin
|
||||
//créée la fenêtre TCO
|
||||
FormTCO:=TformTCO.Create(Self);
|
||||
FormTCO.show;
|
||||
construit_TCO;
|
||||
construit_TCO;
|
||||
affiche_TCO;
|
||||
end;
|
||||
|
||||
@@ -6138,8 +6273,16 @@ begin
|
||||
//i:=etat_signal_suivant(1001,1);
|
||||
// Affiche(IntToSTR(detecteur_suivant(25,2,529,1)),clyellow);
|
||||
//i:=Aiguille_deviee(176);
|
||||
//signal_direction(372);
|
||||
//FormDebug.show;
|
||||
//NivDebug:=3;
|
||||
//test_memoire_zones(218);
|
||||
//Det_Adj(520);
|
||||
//Affiche(' Adj1='+intToStr(Adj1)+' Adj2='+intToStr(Adj2),clyellow);
|
||||
//trace:=true;
|
||||
//TraceListe:=true;
|
||||
|
||||
//interprete_reponse(#$FF+#$FD+#$46+#$43+#$40+#$41+#$40+#$40+#$49+#$4D);
|
||||
Affiche('Fin des initialisations',clyellow);
|
||||
|
||||
//Menu_interface(valide);
|
||||
@@ -6156,7 +6299,8 @@ begin
|
||||
//trace:=true;
|
||||
if MSCommUSBLenz.commEvent=comEvReceive then
|
||||
begin
|
||||
TpsRecuCom:=0;
|
||||
TpsRecuCom:=0;
|
||||
tablo:=MSCommUSBLenz.Input;
|
||||
for i:=0 to length(tablo)-1 do
|
||||
begin
|
||||
chaine_recue:=chaine_recue+char(tablo[i]);
|
||||
@@ -6191,7 +6335,7 @@ begin
|
||||
s:='Init aiguillage '+intToSTR(i)+'='+intToSTR(pos);
|
||||
if pos=1 then s:=s+' (dévié)' else s:=s+' (droit)';
|
||||
Affiche(s,cyan);
|
||||
pilote_acc(i,pos,aig);
|
||||
pilote_acc(i,pos,aig);
|
||||
application.processMessages;
|
||||
end;
|
||||
end;
|
||||
@@ -6209,9 +6353,16 @@ begin
|
||||
var i,a : integer;
|
||||
begin
|
||||
inc(tick);
|
||||
|
||||
if Tempo_init>0 then dec(Tempo_init);
|
||||
if (Tempo_init=1) and AvecInit then
|
||||
|
||||
if Tempo_init>0 then dec(Tempo_init);
|
||||
if (Tempo_init=1) and AvecInit then
|
||||
begin
|
||||
Affiche('Positionnement des feux',clYellow);
|
||||
if not(ferme) then envoi_signauxCplx; // initialisation des feux
|
||||
if not(ferme) and (AvecInitAiguillages=1) then
|
||||
begin
|
||||
Affiche('Positionnement des aiguillages',clYellow);
|
||||
init_aiguillages; // initialisation des aiguillages
|
||||
end;
|
||||
if (AvecInitAiguillages=0) and not(ferme) and (parSocket or portCommOuvert) then
|
||||
begin
|
||||
@@ -6280,7 +6431,7 @@ end;
|
||||
end;
|
||||
end;
|
||||
|
||||
end;
|
||||
end;
|
||||
|
||||
// bouton version centrale Lenz
|
||||
procedure TFormPrinc.BoutVersionClick(Sender: TObject);
|
||||
@@ -6330,8 +6481,11 @@ begin
|
||||
begin
|
||||
s:='Erreur '+IntToSTR(ErrorCode)+' socket IP Lenz';
|
||||
case ErrorCode of
|
||||
10053 : s:=s+': Connexion avortée - Timeout';
|
||||
10054 : s:=s+': Connexion avortée par tiers';
|
||||
10060 : s:=s+': Timeout';
|
||||
10061 : s:=s+': Connexion refusée';
|
||||
10065 : s:=s+': Port non connecté';
|
||||
end;
|
||||
if ErrorCode<>10060 then
|
||||
begin
|
||||
@@ -6406,6 +6560,10 @@ begin
|
||||
connecte_USB;
|
||||
end;
|
||||
|
||||
procedure TFormPrinc.DeconnecterUSBClick(Sender: TObject);
|
||||
begin
|
||||
Ferme:=true;
|
||||
if portCommOuvert then begin portCommOuvert:=false;MSCommUSBLenz.Portopen:=false; end;
|
||||
portCommOuvert:=false;
|
||||
ClientSocketLenz.close;
|
||||
MenuConnecterUSB.enabled:=true;
|
||||
@@ -6527,15 +6685,21 @@ begin
|
||||
|
||||
procedure TFormPrinc.ClientSocketLenzConnect(Sender: TObject;Socket: TCustomWinSocket);
|
||||
begin
|
||||
Affiche('Lenz connecté ',clYellow);
|
||||
Affiche('Lenz connecté ',clYellow);
|
||||
AfficheDebug('Lenz connecté ',clYellow);
|
||||
parSocket:=True;
|
||||
ButtonEcrCV.Enabled:=true;
|
||||
LireunfichierdeCV1.enabled:=true;
|
||||
LireunaccessoireversunfichierdeCV1.Enabled:=true;
|
||||
LireunaccessoireversunfichierdeCV1.Enabled:=true;
|
||||
LabelEtat.caption:='Interface connectée par Ethernet';
|
||||
end;
|
||||
LabelTitre.caption:=titre+' Interface connectée par Ethernet';
|
||||
end;
|
||||
|
||||
procedure TFormPrinc.ClientSocketCDMConnect(Sender: TObject;Socket: TCustomWinSocket);
|
||||
var s : string;
|
||||
begin
|
||||
s:='CDM rail connecté';
|
||||
LabelTitre.caption:=titre+' '+s;
|
||||
Affiche(s,clYellow);
|
||||
AfficheDebug(s,clYellow);
|
||||
parSocketCDM:=True;
|
||||
MenuConnecterUSB.enabled:=false;
|
||||
@@ -6638,6 +6802,9 @@ begin
|
||||
deconnecte_CDM;
|
||||
end;
|
||||
|
||||
procedure TFormPrinc.ClientSocketCDMDisconnect(Sender: TObject; Socket: TCustomWinSocket);
|
||||
begin
|
||||
LabelTitre.caption:=Titre;
|
||||
Affiche('CDM rail déconnecté',Cyan);
|
||||
AfficheDebug('CDM rail déconnecté',Cyan);
|
||||
CDM_connecte:=False;
|
||||
@@ -6748,12 +6915,12 @@ var adr,valeur,erreur : integer;
|
||||
FormSimulation.showModal;
|
||||
//TraceListe:=true;
|
||||
end;
|
||||
|
||||
|
||||
procedure TFormPrinc.ButtonEcrCVClick(Sender: TObject);
|
||||
var adr,valeur,erreur : integer;
|
||||
s : string;
|
||||
begin
|
||||
// doc XpressNet page 55
|
||||
// doc XpressNet page 55
|
||||
val(EditAdresse.text,adr,erreur);
|
||||
val(EditVal.Text,valeur,erreur);
|
||||
if (Adr>255) or (valeur>255) then exit;
|
||||
@@ -6765,7 +6932,7 @@ end;
|
||||
envoi(s); // envoi de la trame et attente Ack
|
||||
// la centrale passe en mode service (p23)
|
||||
Affiche('CV'+intToSTR(Adr)+'='+intToSTR(valeur),clyellow);
|
||||
|
||||
|
||||
end;
|
||||
|
||||
procedure TFormPrinc.ButtonRepriseClick(Sender: TObject);
|
||||
@@ -6804,7 +6971,7 @@ begin
|
||||
begin
|
||||
delete(s,1,erreur);
|
||||
val(s,valeur,erreur);
|
||||
Affiche('CV='+intToSTR(cv)+' Valeur='+IntToSTR(valeur),clLime);
|
||||
Affiche('CV='+intToSTR(cv)+' Valeur='+IntToSTR(valeur),clLime);
|
||||
if cv>255 then Affiche('Erreur CV '+IntToSTR(cv)+'>255',clred);
|
||||
if valeur>255 then Affiche('Erreur valeur '+IntToSTR(valeur)+'>255',clred);
|
||||
|
||||
@@ -6837,13 +7004,13 @@ begin
|
||||
s:=GetCurrentDir;
|
||||
//s:='C:\Program Files (x86)\Borland\Delphi7\Projects\Signaux_complexes_GL';
|
||||
N_Cv:=0; // nombre de CV recus à 0
|
||||
sa:='';
|
||||
sa:='';
|
||||
//for cv:=1 to 255 do
|
||||
begin
|
||||
cv:=3;
|
||||
trace:=true;
|
||||
//s:=#$ff+#$fe+#$22+#$15+Char(cv); //CV de 1 à 256 (V3.0)
|
||||
s:=#$ff+#$fe+#$22+#$18+Char(cv); //CV de 1 à 255 + 1024 (V3.6)
|
||||
s:=#$22+#$18+Char(cv); //CV de 1 à 255 + 1024 (V3.6)
|
||||
s:=checksum(s);
|
||||
// envoi(s); // envoi de la trame et attente Ack, la premiere trame fait passer la centrale en mode programmation (service)
|
||||
envoi_ss_ack(s);
|
||||
@@ -6892,10 +7059,32 @@ begin
|
||||
Writeln(fte,'cv valeur');
|
||||
for cv:=1 to 255 do
|
||||
begin
|
||||
s:=IntToSTR(cv)+' '+intToSTR(tablo_CV[cv]);
|
||||
s:=IntToSTR(cv)+' '+intToSTR(tablo_CV[cv]);
|
||||
Writeln(fte,s);
|
||||
end;
|
||||
closeFile(fte);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TFormPrinc.Quitter1Click(Sender: TObject);
|
||||
begin
|
||||
close;
|
||||
end;
|
||||
|
||||
procedure TFormPrinc.Button1Click(Sender: TObject);
|
||||
var s : string;
|
||||
begin
|
||||
s:=EditGenli.text; //+#13+#10+#10;
|
||||
terminal:=true;
|
||||
if portCommOuvert then
|
||||
begin
|
||||
Affiche('Envoi a genli de '+ EditGenli.text,clorange);
|
||||
envoi_ss_ack(s);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFormPrinc.Button2Click(Sender: TObject);
|
||||
begin
|
||||
if MSCommUSBLenz.CTSHolding=true then Affiche('CTS=1',Clyellow)
|
||||
|
||||
BIN
UnitSimule.dcu
BIN
UnitSimule.dcu
Binary file not shown.
BIN
UnitTCO.dcu
BIN
UnitTCO.dcu
Binary file not shown.
12
UnitTCO.dfm
12
UnitTCO.dfm
@@ -88,7 +88,19 @@ object FormTCO: TFormTCO
|
||||
Top = 0
|
||||
Width = 857
|
||||
Height = 345
|
||||
PopupMenu = PopupMenu1
|
||||
OnClick = ImageTCOClick
|
||||
OnContextPopup = ImageTCOContextPopup
|
||||
end
|
||||
end
|
||||
object PopupMenu1: TPopupMenu
|
||||
Left = 568
|
||||
Top = 296
|
||||
object Position1: TMenuItem
|
||||
Caption = 'Position'
|
||||
end
|
||||
object N1: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
20
UnitTCO.pas
20
UnitTCO.pas
@@ -4,7 +4,7 @@ interface
|
||||
|
||||
uses
|
||||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||
Dialogs, Grids , UnitPrinc, StdCtrls, ExtCtrls;
|
||||
Dialogs, Grids , UnitPrinc, StdCtrls, ExtCtrls, Menus;
|
||||
|
||||
type
|
||||
TFormTCO = class(TForm)
|
||||
@@ -16,12 +16,17 @@ type
|
||||
LabelY: TLabel;
|
||||
ScrollBox: TScrollBox;
|
||||
ImageTCO: TImage;
|
||||
PopupMenu1: TPopupMenu;
|
||||
Position1: TMenuItem;
|
||||
N1: TMenuItem;
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure DrawGridDrawCell(Sender: TObject; ACol, ARow: Integer;
|
||||
Rect: TRect; State: TGridDrawState);
|
||||
procedure Button1Click(Sender: TObject);
|
||||
procedure ImageTCOClick(Sender: TObject);
|
||||
procedure FormActivate(Sender: TObject);
|
||||
procedure ImageTCOContextPopup(Sender: TObject; MousePos: TPoint;
|
||||
var Handled: Boolean);
|
||||
private
|
||||
{ Déclarations privées }
|
||||
public
|
||||
@@ -320,4 +325,17 @@ begin
|
||||
formprinc.Hide;
|
||||
end;
|
||||
|
||||
procedure TFormTCO.ImageTCOContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
|
||||
var Position: TPoint;
|
||||
begin
|
||||
GetCursorPos(Position);
|
||||
Position:=ImageTCO.screenToCLient(Position);
|
||||
Xclic:=position.X;YClic:=position.Y;
|
||||
XclicCell:=Xclic div largeurCell +1;
|
||||
YclicCell:=Yclic div hauteurCell +1;
|
||||
LabelX.caption:=IntToSTR(XclicCell);
|
||||
LabelY.caption:=IntToSTR(YclicCell);
|
||||
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
@@ -22,21 +22,36 @@
|
||||
/
|
||||
/ Adresse IP V4 du PC sur lequel s'execute CDM : port
|
||||
127.0.0.1:9999
|
||||
/
|
||||
/ ==========================================================================
|
||||
/ D é f i n i t i o n de l'interface XpressNet pour utilisation en mode autonome
|
||||
/ Adresse IP V4 de l'interface LI-USB Ethernet : port
|
||||
/ par défaut le port est 5550
|
||||
/ ne pas connecter le port ou mettre 0 si on travaille avec l'interface USB
|
||||
192.168.1.23:5550
|
||||
/
|
||||
/ port COM de l'adresse USB de l'interface LI100
|
||||
/ attention de COM1 à 9 - Si le port de l'interface USB LI100 >9, il faut le changer
|
||||
/ port COM de l'adresse USB de l'interface LU-USB - LI100 - LI100F - LI101F - GENLI
|
||||
/ attention de COM1 à 9 - Si le port de l'interface USB >9, il faut le changer
|
||||
/ manuellement dans le gestionnaire des périphériques
|
||||
/ mettre 0 si inutilisée ou si CDM est utilisé en parallèle de ce programme (car CDM utilise la liaison USB)
|
||||
/ Le programme ne tentera pas de se connecter à la centrale si CDM rail est détécté
|
||||
/ COMx:57600,N,8,1,2 = interfaces LENZ LI-USB et compatibles (le dernier paramètre est le protocole matériel: 0=aucun 1=Xon-Xoff 2=cts 3=RTS-Xon-Xoff)
|
||||
/ COMx:9600,N,8,1,0 = interfaces GENLI USB-RS232 et compatibles (0=pas de protocole)
|
||||
/ mettre 0 si inutilisée
|
||||
/ Le programme ne tentera pas de se connecter à la centrale si CDM rail est détecté
|
||||
/ Com:vitesse,parité,nombre de bits,bits de stop,protocole: 0=aucun 1=Xon-Xoff 2=RTS-CTS 3=RTS-Xon-Xoff 4=CTS
|
||||
/ voir notice page 29
|
||||
/
|
||||
COM3:57600,N,8,1,2
|
||||
/COM8:9600,N,8,1,0
|
||||
/
|
||||
/ Temporisation en ms d'envoi entre deux octets de la trame
|
||||
50
|
||||
/ Temporisation maximale de contrôle après non réponse de l'interface, en tranches de 100ms
|
||||
/ à adapter en fonction de l'interface. Ex 7=700ms d'attente maxi
|
||||
7
|
||||
/
|
||||
/ Entete: préfixe ajouté aux trames :
|
||||
/ Entete=0 - n'ajoute rien aux trames - pour une interface RS232 ou GENLI
|
||||
/ Entete=1 - Ajoute FF FE au début de chaque trame envoyée à l'interface : pour une interface USB, entete=1
|
||||
/ Entete=2 - Ajoute E4 au début de chaque trame et 0D 0D 0A en fin de chaque trame : pour compatibilité arduino
|
||||
1
|
||||
/ ===============================================================================
|
||||
/
|
||||
/ Avec (1) ou sans (0) initialisation des aiguillages au démarrage selon le tableau ci après
|
||||
0
|
||||
|
||||
BIN
listeusb.dcu
BIN
listeusb.dcu
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user