From 932e5590c178c3028b07368e2d9c1c731ac00a38 Mon Sep 17 00:00:00 2001 From: f1iwq2 Date: Sun, 5 Jun 2022 10:07:27 +0200 Subject: [PATCH] V4.2 --- 2trains_séparés.txt | 306 --------------- UnitConfig.dcu | Bin 200170 -> 202529 bytes UnitConfig.dfm | 103 ++++-- UnitConfig.pas | 306 ++++++++++----- UnitConfigTCO.dcu | Bin 13630 -> 13630 bytes UnitConfigTCO.dfm | 8 +- UnitDebug.dcu | Bin 22476 -> 21684 bytes UnitDebug.dfm | 88 ++--- UnitDebug.pas | 85 ++--- UnitPilote.dcu | Bin 11073 -> 11073 bytes UnitPrinc.dcu | Bin 216462 -> 222490 bytes UnitPrinc.dfm | 107 +++--- UnitPrinc.pas | 881 ++++++++++++++++++++++++++++---------------- UnitSR.dcu | Bin 21330 -> 21326 bytes UnitSimule.dcu | Bin 7825 -> 8070 bytes UnitSimule.pas | 14 +- UnitTCO.dcu | Bin 158196 -> 159106 bytes UnitTCO.dfm | 4 +- UnitTCO.pas | 192 +++++----- Unit_Pilote_aig.dcu | Bin 7369 -> 7369 bytes tco.cfg | 4 +- verif_version.dcu | Bin 11171 -> 11169 bytes verif_version.pas | 2 +- versions.txt | 10 +- 24 files changed, 1083 insertions(+), 1027 deletions(-) delete mode 100644 2trains_séparés.txt diff --git a/2trains_séparés.txt b/2trains_séparés.txt deleted file mode 100644 index 2eca721..0000000 --- a/2trains_séparés.txt +++ /dev/null @@ -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 - diff --git a/UnitConfig.dcu b/UnitConfig.dcu index b770598f4ad1c17e5568515f24bc2c53d23447da..48f5ec5f1b74f99995de6a8185e6926dab49a4c9 100644 GIT binary patch delta 58653 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 z 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 diff --git a/UnitConfig.dfm b/UnitConfig.dfm index a0b8259..a8b84e9 100644 --- a/UnitConfig.dfm +++ b/UnitConfig.dfm @@ -958,8 +958,8 @@ object FormConfig: TFormConfig ParentFont = False end object ImageAig: TImage - Left = 736 - Top = 432 + Left = 744 + Top = 480 Width = 137 Height = 57 Picture.Data = { @@ -1230,8 +1230,8 @@ object FormConfig: TFormConfig Visible = False end object ImageTJD: TImage - Left = 736 - Top = 400 + Left = 744 + Top = 416 Width = 137 Height = 57 Picture.Data = { @@ -1366,8 +1366,8 @@ object FormConfig: TFormConfig Visible = False end object ImageTri: TImage - Left = 736 - Top = 360 + Left = 744 + Top = 344 Width = 137 Height = 65 Picture.Data = { @@ -1578,7 +1578,7 @@ object FormConfig: TFormConfig Top = 8 Width = 633 Height = 497 - ActivePage = TabSheetAig + ActivePage = TabSheetAct Font.Charset = DEFAULT_CHARSET Font.Color = clBlack Font.Height = -11 @@ -1641,12 +1641,12 @@ object FormConfig: TFormConfig Left = 16 Top = 96 Width = 273 - Height = 185 + Height = 201 Caption = 'Au d'#233'marrage de Signaux_Complexes ' TabOrder = 1 object Label13: TLabel Left = 8 - Top = 124 + Top = 140 Width = 242 Height = 26 Caption = @@ -1656,7 +1656,7 @@ object FormConfig: TFormConfig end object CheckVerifVersion: TCheckBox Left = 8 - Top = 24 + Top = 40 Width = 249 Height = 17 Caption = 'V'#233'rifications de nouvelle version au d'#233'marrage' @@ -1664,7 +1664,7 @@ object FormConfig: TFormConfig end object CheckInfoVersion: TCheckBox Left = 8 - Top = 40 + Top = 56 Width = 241 Height = 17 Caption = 'Information sur la version actuelle' @@ -1672,7 +1672,7 @@ object FormConfig: TFormConfig end object CheckLanceCDM: TCheckBox Left = 8 - Top = 96 + Top = 112 Width = 241 Height = 25 Caption = 'Lancer CDM Rail au d'#233'marrage' @@ -1681,7 +1681,7 @@ object FormConfig: TFormConfig end object CheckAvecTCO: TCheckBox Left = 8 - Top = 56 + Top = 72 Width = 89 Height = 17 Hint = 'Affiche le TCO au d'#233'marrage' @@ -1692,7 +1692,7 @@ object FormConfig: TFormConfig end object EditNomLay: TEdit Left = 16 - Top = 154 + Top = 170 Width = 241 Height = 21 TabOrder = 4 @@ -1700,7 +1700,7 @@ object FormConfig: TFormConfig end object CheckFenEt: TCheckBox Left = 8 - Top = 72 + Top = 24 Width = 249 Height = 17 Hint = 'Taille de la fen'#234'tre maximalis'#233'e' @@ -1710,8 +1710,8 @@ object FormConfig: TFormConfig TabOrder = 5 end object CheckBandeauTCO: TCheckBox - Left = 128 - Top = 56 + Left = 8 + Top = 88 Width = 129 Height = 17 Hint = 'Masque le bandeau de param'#233'trage du TCO au d'#233'marrage' @@ -1722,9 +1722,9 @@ object FormConfig: TFormConfig end end object GroupBox6: TGroupBox - Left = 320 + Left = 312 Top = 8 - Width = 273 + Width = 281 Height = 169 Caption = 'Au d'#233'marrage de CDM Rail : serveur' TabOrder = 2 @@ -1802,9 +1802,9 @@ object FormConfig: TFormConfig end end object GroupBox7: TGroupBox - Left = 320 + Left = 312 Top = 184 - Width = 273 + Width = 281 Height = 137 Caption = 'Au d'#233'marrage de CDM Rail : interface LENZ' TabOrder = 3 @@ -1859,7 +1859,7 @@ object FormConfig: TFormConfig end object GroupBox8: TGroupBox Left = 16 - Top = 288 + Top = 304 Width = 273 Height = 113 Caption = 'Services CommIP CDM Rail' @@ -1913,42 +1913,66 @@ object FormConfig: TFormConfig end end object GroupBox15: TGroupBox - Left = 320 + Left = 312 Top = 328 - Width = 273 - Height = 73 + Width = 281 + Height = 89 Caption = 'Divers' TabOrder = 5 object Label31: TLabel Left = 8 - Top = 16 + Top = 24 Width = 204 Height = 13 Caption = 'Seuil du nombre de d'#233'tecteurs trop distants' end object Label41: TLabel Left = 8 - Top = 36 + Top = 68 Width = 188 Height = 13 Caption = 'Taille de la fonte de la fen'#234'tre principale' end + object Label44: TLabel + Left = 8 + Top = 45 + Width = 223 + Height = 13 + Caption = 'Nombre de cantons pr'#233'sence train avant signal' + end object EditNbDetDist: TEdit - Left = 232 - Top = 12 + Left = 240 + Top = 20 Width = 25 Height = 21 + ParentShowHint = False + ShowHint = False TabOrder = 0 Text = 'EditNbDetDist' end object EditFonte: TEdit - Left = 232 - Top = 32 + Left = 240 + Top = 64 Width = 25 Height = 21 + ParentShowHint = False ReadOnly = True + ShowHint = False TabOrder = 1 end + object EditNbCantons: TEdit + Left = 240 + Top = 41 + Width = 25 + Height = 21 + Hint = + 'Nombre de cantons pr'#233'sence train avant un signal pour le d'#233'clar' + + 'er verrouill'#233 + ParentShowHint = False + ShowHint = True + TabOrder = 2 + Text = 'EditNbCantons' + end end end object TabSheetAutonome: TTabSheet @@ -2185,9 +2209,10 @@ object FormConfig: TFormConfig Top = 24 Width = 257 Height = 25 + Hint = 'Initialisation des aiguillages au d'#233'marrage' Caption = 'Initialisation des aiguillages ' ParentShowHint = False - ShowHint = False + ShowHint = True TabOrder = 0 WordWrap = True end @@ -2628,6 +2653,7 @@ object FormConfig: TFormConfig ScrollBars = ssBoth TabOrder = 1 WordWrap = False + OnKeyDown = RichAigKeyDown OnMouseDown = RichAigMouseDown end object ButtonNouvAig: TButton @@ -2920,7 +2946,7 @@ object FormConfig: TFormConfig Top = 48 Width = 129 Height = 21 - ItemHeight = 0 + ItemHeight = 13 TabOrder = 1 OnChange = ComboBoxDecChange end @@ -3099,6 +3125,7 @@ object FormConfig: TFormConfig ScrollBars = ssBoth TabOrder = 1 WordWrap = False + OnKeyDown = RichSigKeyDown OnMouseDown = RichSigMouseDown end object ButtonNouvFeu: TButton @@ -3525,6 +3552,7 @@ object FormConfig: TFormConfig Top = 80 Width = 41 Height = 33 + Hint = 'Joue le son' Flat = True Glyph.Data = { 4E010000424D4E010000000000003E0000002800000022000000220000000100 @@ -3538,6 +3566,8 @@ object FormConfig: TFormConfig 00003FFFFFFF000000003FFFFFFF000000003FFFFFFF000000001FFFFFFE0000 000000000000000000008000000040000000C0000000C0000000FFFFFFFFC000 0000FFFFFFFFC0000000FFFFFFFFC0000000} + ParentShowHint = False + ShowHint = True OnClick = SpeedButtonJoueClick end object SpeedButtonCharger: TSpeedButton @@ -3545,6 +3575,7 @@ object FormConfig: TFormConfig Top = 80 Width = 25 Height = 34 + Hint = 'Ouvre un fichier son WAV' Flat = True Glyph.Data = { BA060000424DBA06000000000000360400002800000019000000170000000100 @@ -3601,6 +3632,8 @@ object FormConfig: TFormConfig 272752FFFFFFFF000000FF27BFBFBFBFBFBFBFBF25FFFFFFFFFFFFFFFFFFFFFF FFFFFF000000FF266F2727272727276F13FFFFFFFFFFFFFFFFFFFFFFFFFFFF00 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000} + ParentShowHint = False + ShowHint = True OnClick = SpeedButtonChargerClick end object Label42: TLabel @@ -3777,7 +3810,7 @@ object FormConfig: TFormConfig end end object OpenDialogSon: TOpenDialog - Left = 708 - Top = 500 + Left = 604 + Top = 508 end end diff --git a/UnitConfig.pas b/UnitConfig.pas index e791fea..b5ed098 100644 --- a/UnitConfig.pas +++ b/UnitConfig.pas @@ -253,6 +253,8 @@ type Label42: TLabel; Label43: TLabel; CheckBandeauTCO: TCheckBox; + EditNbCantons: TEdit; + Label44: TLabel; procedure ButtonAppliquerEtFermerClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); @@ -354,6 +356,10 @@ type procedure RichBrancheKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure EditTrainDestChange(Sender: TObject); + procedure RichAigKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); + procedure RichSigKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); private { Déclarations privées } public @@ -379,6 +385,7 @@ CDM_ch='CDM'; Serveur_interface_ch='Serveur_interface'; fenetre_ch='Fenetre'; Tempo_aig_ch='Tempo_Aig'; +Nb_cantons_Sig_ch='Nb_cantons_Sig'; Tempo_Feu_ch='Tempo_Feu'; Algo_Unisemaf_ch='Alg_Unisemaf'; NOTIF_VERSION_ch='NOTIF_VERSION'; @@ -396,10 +403,10 @@ var FormConfig: TFormConfig; AdresseIPCDM,AdresseIP,PortCom,recuCDM,residuCDM,trainsauve : string; portCDM,TempoOctet,TimoutMaxInterface,Valeur_entete,Port,protocole,NumPort, - LigneCliqueePN,AncLigneCliqueePN,clicMemo, + LigneCliqueePN,AncLigneCliqueePN,clicMemo,Nb_cantons_Sig, ligneclicAig,AncLigneClicAig,ligneClicSig,AncligneClicSig, ligneClicBr,AncligneClicBr,ligneClicAct,AncLigneClicAct,Adressefeuclic,NumTrameCDM : integer; - ack_cdm,clicliste,entreeTCO,affevt,config_modifie,clicproprietes : boolean; + ack_cdm,clicliste,entreeTCO,affevt,config_modifie,clicproprietes,confasauver : boolean; fichier : text; function config_com(s : string) : boolean; @@ -510,56 +517,59 @@ begin // déconnexion de l'ancienne liaison éventuelle Formprinc.ClientSocketCDM.Close; - if (AdresseIPCDM<>'0') and (ProcessRunning('CDR')) then + if (AdresseIPCDM<>'0') then begin - // ouverture du socket CDM - with Formprinc do + if(ProcessRunning('CDR')) then begin - ClientSocketCDM.port:=portCDM; - ClientSocketCDM.Address:=AdresseIPCDM; - ClientSocketCDM.Open; - end; - i:=0; - repeat - Sleep(50); - inc(i); - Application.processMessages; - until (i>10) or CDM_connecte ; - //if i>10 then affiche('Timeout',clred); - if not(CDM_connecte) then begin Affiche('Socket CDM non connecté',clOrange);exit;end; - - // connexion à CDM rail - recuCDM:=''; - s:='C-C-00-0001-CMDGEN-_CNCT|000|'; - envoi_cdm(s); - if ack_cdm then - begin - ack_cdm:=false; - Id_CDM:=copy(recuCDM,5,2); // récupère l'ID reçu de CDM, à utiliser dans toutes les futures trames - recucdm:=''; - s:='Connecté au serveur CDM rail avec l''ID='+Id_CDM; - - Affiche(s,clYellow); - AfficheDebug(s,clyellow); - CDM_connecte:=true; - - // demande des services - services_CDM; - - // demande la description des trains - s:=place_id('C-C-01-0002-DSCTRN-DLOAD|000|'); - ntrains:=0; - envoi_CDM(s); - sleep(10); - Application.ProcessMessages; - if ntrains<>0 then - with formprinc do + // ouverture du socket CDM + with Formprinc do begin - combotrains.ItemIndex:=0; - editAdrTrain.text:=IntToSTR(trains[1].adresse); + ClientSocketCDM.port:=portCDM; + ClientSocketCDM.Address:=AdresseIPCDM; + ClientSocketCDM.Open; end; - end; - end + i:=0; + repeat + Sleep(50); + inc(i); + Application.processMessages; + until (i>10) or CDM_connecte ; + //if i>10 then affiche('Timeout',clred); + if not(CDM_connecte) then begin Affiche('Socket CDM non connecté',clOrange);exit;end; + + // connexion à CDM rail + recuCDM:=''; + s:='C-C-00-0001-CMDGEN-_CNCT|000|'; + envoi_cdm(s); + if ack_cdm then + begin + ack_cdm:=false; + Id_CDM:=copy(recuCDM,5,2); // récupère l'ID reçu de CDM, à utiliser dans toutes les futures trames + recucdm:=''; + s:='Connecté au serveur CDM rail avec l''ID='+Id_CDM; + + Affiche(s,clYellow); + AfficheDebug(s,clyellow); + CDM_connecte:=true; + + // demande des services + services_CDM; + // demande la description des trains + s:=place_id('C-C-01-0002-DSCTRN-DLOAD|000|'); + ntrains:=0; + envoi_CDM(s); + sleep(10); + Application.ProcessMessages; + if ntrains<>0 then + with formprinc do + begin + combotrains.ItemIndex:=0; + editAdrTrain.text:=IntToSTR(trains[1].adresse); + end; + end; + end + else Affiche('CDM Rail non lancé',clOrange); + end else begin if adresseIPCDM='0' then Affiche('La connexion à CDM n''est pas demandée car l''adresse IP est nulle dans '+NomConfig,cyan); @@ -674,7 +684,7 @@ begin end; if croi then - begin //zizi + begin s:=s+'D('+intToSTR(aiguillage[index].Adroit); c:=aiguillage[index].AdroitB;if c<>'Z' then s:=s+c; s:=s+','+intToSTR(aiguillage[index].DDroit)+aiguillage[index].DDroitB+'),'; @@ -1136,7 +1146,7 @@ var s: string; continue : boolean; begin - assign(fichierN,NomConfig); + assign(fichierN,NomConfig); rewrite(fichierN); // entête @@ -1206,13 +1216,16 @@ begin writeln(fichierN,retro_ch+'=',intToSTR(ServeurRetroCDM)); // entête - // Raz Signaux + // Raz Signaux if Raz_Acc_signaux then s:='1' else s:='0'; writeln(fichierN,'RazSignaux='+s); // temporisation entre 2 commandes décodeurs feu writeln(fichierN,Tempo_feu_ch+'=',IntToSTR(Tempo_feu)); + // Nombre de cantons avant signal + writeln(fichierN,Nb_cantons_Sig_ch+'=',intToSTR(Nb_cantons_Sig)); + // algorithme Unisemaf writeln(fichierN,Algo_unisemaf_ch+'=',IntToSTR(algo_Unisemaf)); @@ -1283,11 +1296,11 @@ var s,sa,chaine,SOrigine: string; trouve_Tempo_maxi,trouve_Entete,trouve_tco,trouve_cdm,trouve_Serveur_interface,trouve_fenetre,trouve_MasqueTCO, trouve_NOTIF_VERSION,trouve_verif_version,trouve_fonte,trouve_tempo_aig,trouve_raz,trouve_section_aig, pds,trouve_section_branche,trouve_section_sig,trouve_section_act,fichier_trouve,trouve_tempo_feu, - trouve_algo_uni,croi : boolean; + trouve_algo_uni,croi,trouve_Nb_cantons_Sig : boolean; bd,virgule,i_detect,i,erreur,aig2,detect,offset,index, adresse,j,position,temporisation,invers,indexPointe,indexDevie,indexDroit, ComptEl,Compt_IT,Num_Element,k,modele,adr,adr2,erreur2,l,t,Nligne,postriple,itl, postjd,postjs,nv,it,Num_Champ,asp,adraig,poscroi : integer; - + function lit_ligne : string ; var esp,l1,l2,k : integer; guim : boolean; @@ -1829,13 +1842,15 @@ begin end; until (sOrigine='0'); end; - + procedure lit_flux; label ici1,ici2,ici3,ici4 ; var i : integer; // début de la procédure lit_config begin + // valeurs par défaut + Nb_cantons_Sig:=3; nv:=0; it:=0; // taille de fonte repeat @@ -1965,6 +1980,18 @@ begin if fenetre=1 then Formprinc.windowState:=wsMaximized; end; + // Nombre de cantons avant signal + sa:=uppercase(Nb_cantons_Sig_ch)+'='; + i:=pos(sa,s); + if i=1 then + begin + inc(nv); + trouve_Nb_cantons_Sig:=true; + delete(s,i,length(sa)); + val(s,Nb_cantons_Sig,erreur); + if (Nb_cantons_Sig<3) or (Nb_cantons_Sig>5) then Nb_cantons_Sig:=3; + end; + // temporisation aiguillages sa:=uppercase(Tempo_Aig_ch)+'='; i:=pos(sa,s); @@ -2213,6 +2240,7 @@ begin Tempo_Aig:=100; Tempo_feu:=100; ServeurInterfaceCDM:=1; + Nb_cantons_Sig:=3; ServeurRetroCDM:=1; algo_Unisemaf:=1; TailleFonte:=12; @@ -2243,6 +2271,7 @@ begin if not(trouve_fenetre) then s:=fenetre_ch; if not(trouve_tempo_aig) then s:=tempo_aig_ch; if not(trouve_Algo_Uni) then s:=Algo_unisemaf_ch; + if not(trouve_Nb_cantons_Sig) then s:=Nb_cantons_Sig_ch; if not(trouve_tempo_feu) then begin s:=tempo_feu_ch; @@ -2253,34 +2282,53 @@ begin if not(trouve_verif_version) then s:=verif_version_ch; if not(trouve_fonte) then s:=fonte_ch; - if s<>'' then affiche('ERREUR: manque variables dans '+NomConfig+' :'+s,clred); + if s<>'' then + begin + affiche('Manque variables dans '+NomConfig+' : '+s,clOrange); + confasauver:=true; + end; if not(trouve_section_aig) then Affiche('Manque section '+section_aig_ch,clred); if not(trouve_section_sig) then Affiche('Manque section '+section_sig_ch,clred); if not(trouve_section_branche) then Affiche('Manque section '+section_branches_ch,clred); verif_coherence; + formDebug.buttonCP.Caption:='Etat '+intToSTR(Nb_cantons_Sig)+' cantons précédents signal'; end; // sauvegarder la config dans le fichier cfg function Sauve_config : boolean; -var i,erreur : integer; - s : string; - ChangeCDM,changeInterface,changeUSB,change_srv : boolean; begin + // générer le fichier de config + genere_config; + Affiche('Configuration sauvegardée dans le fichier',clLime); + config_modifie:=false; + confasauver:=false; + sauve_config:=true; + exit; +end; + + + +function verifie_panneau_config : boolean; +var ChangeCDM,changeInterface,changeUSB,change_srv,ok : boolean; + i,erreur : integer; + s : string; +begin + ok:=true; // Vérification de la configuration------------------------------------------- // contrôle adresse IP CDM with FormConfig do begin s:=EditAdrIPCDM.text; if s='' then s:='127.0.0.1'; - if not(IpOk(s)) then begin labelInfo.Caption:='Adresse IP CDM rail incorrecte';sauve_config:=false;exit;end; + if not(IpOk(s)) then begin labelInfo.Caption:='Adresse IP CDM rail incorrecte';ok:=false;end; ChangeCDM:=s<>AdresseIPCDM; adresseIPCDM:=s; // contrôle port CDM val(EditPortCDM.Text,i,erreur); if i=0 then i:=9999; - if i>65535 then begin labelInfo.Caption:='Port CDM rail incorrect';sauve_config:=false;exit;end; + if i>65535 then begin labelInfo.Caption:='Port CDM rail incorrect';ok:=false;end; changeCDM:=(portCDM<>i) or ChangeCDM; portCDM:=i; @@ -2292,40 +2340,45 @@ begin // contrôle adresse IP interface s:=EditIPLenz.text; if s='' then s:='0'; - if not(IpOk(s)) and (s<>'0') then begin labelInfo.Caption:='Adresse IP interface Xpressnet incorrecte';sauve_config:=false;exit;end; + if not(IpOk(s)) and (s<>'0') then begin labelInfo.Caption:='Adresse IP interface Xpressnet incorrecte';ok:=false;end; changeInterface:=s<>AdresseIP; AdresseIP:=s; // contrôle port interface val(EditPortLenz.Text,i,erreur); if i=0 then i:=5550; - if i>65535 then begin labelInfo.Caption:='Port Interface incorrect';sauve_config:=false;exit;end; + if i>65535 then begin labelInfo.Caption:='Port Interface incorrect';ok:=false;end; changeInterface:=changeInterface or (i<>port); port:=i; Val(editTempoAig.Text,i,erreur); - if i>3000 then begin labelInfo.Caption:='Temporisation de séquencement incorrecte ';sauve_config:=false;exit;end; + if i>3000 then begin labelInfo.Caption:='Temporisation de séquencement incorrecte ';ok:=false;end; Tempo_Aig:=i; // contrôle protocole interface COM3:57600,N,8,1,2 s:=EditComUSB.Text; if s='' then s:='COM3:57600,N,8,1,2'; - if not(config_com(s)) then begin labelInfo.Caption:='Protocole série USB Interface incorrect';sauve_config:=false;exit;end; + if not(config_com(s)) then begin labelInfo.Caption:='Protocole série USB Interface incorrect';ok:=false;end; changeUSB:=portcom<>s; portcom:=s; val(EditTempoOctetUSB.text,i,erreur); - if erreur<>0 then begin labelInfo.Caption:='Valeur temporisation octet incorrecte';sauve_config:=false;exit;end; + if erreur<>0 then begin labelInfo.Caption:='Valeur temporisation octet incorrecte';ok:=false;end; TempoOctet:=i; val(EditTempoReponse.text,i,erreur); - if erreur<>0 then begin labelInfo.Caption:='Valeur temporisation de réponse interface';sauve_config:=false;exit;end; + if erreur<>0 then begin labelInfo.Caption:='Valeur temporisation de réponse interface';ok:=false;end; TimoutMaxInterface:=i; val(EditNbDetDist.text,i,erreur); - if (erreur<>0) or (i<3) then begin labelInfo.Caption:='Valeur nombre de détecteurs trop distants incorrecte';sauve_config:=false;exit;end; + if (erreur<>0) or (i<3) then begin labelInfo.Caption:='Valeur nombre de détecteurs trop distants incorrecte';ok:=false;end; Nb_Det_Dist:=i; + val(EditNbCantons.text,i,erreur); + if (erreur<>0) or ((i<3) or (i>5)) then begin labelInfo.Caption:='Valeur cantons signaux de 3 à 5';ok:=false;end; + Nb_cantons_Sig:=i; + formDebug.buttonCP.Caption:='Etat '+intToSTR(Nb_cantons_Sig)+' cantons précédents signal'; + if RadioButton1.checked then Valeur_entete:=0; if RadioButton2.checked then Valeur_entete:=1; if RadioButton3.checked then Valeur_entete:=2; @@ -2382,7 +2435,7 @@ begin if RadioButton17.Checked then ServeurRetroCDM:=5; if RadioButton18.Checked then ServeurRetroCDM:=6; - // changement sur les services CDM + // changement sur les services CDM change_srv:=Srvc_Aig<>CheckBoxServAig.checked; change_srv:=Srvc_Det<>CheckBoxServDet.checked or change_srv; change_srv:=Srvc_Act<>CheckBoxServAct.checked or change_srv; @@ -2398,17 +2451,19 @@ begin AvecInitAiguillages:=CheckBoxInitAig.Checked; end; if change_srv then services_CDM; - - // générer le fichier de config - genere_config; - Affiche('Configuration sauvegardée dans le fichier',clLime); - config_modifie:=false; - sauve_config:=true; + verifie_panneau_config:=ok; end; procedure TFormConfig.ButtonAppliquerEtFermerClick(Sender: TObject); +var ok : boolean; begin - if sauve_config then formConfig.close; // si la config est ok, on ferme la fenetre + ok:=verifie_panneau_config; + if ok then + begin + Sauve_config; + formConfig.close; // si la config est ok, on ferme la fenetre + end; + // TCO if avectco and not(entreeTCO) then begin @@ -2492,6 +2547,7 @@ begin EditDroit_BD.ReadOnly:=false; Edit_HG.ReadOnly:=false; + EditNbCantons.text:=intToSTR(Nb_cantons_Sig); EditTempoFeu.Text:=IntToSTR(Tempo_feu); EditNbDetDist.text:=IntToSTR(Nb_Det_dist); EditAdrIPCDM.text:=adresseIPCDM; @@ -2499,6 +2555,7 @@ begin EditIPLenz.text:=AdresseIP; EditportLenz.text:=IntToSTR(Port); EditTempoAig.Text:=IntToSTR(Tempo_Aig); + EditComUSB.Text:=PortCom; EditFonte.text:=IntToSTR(TailleFonte); EditTempoOctetUSB.text:=IntToSTR(TempoOctet); @@ -2667,6 +2724,7 @@ begin clicListe:=true; if affevt then affiche('FormConfig create',clLime); clicListe:=false; + end; @@ -2731,8 +2789,8 @@ begin GroupBoxEtatTJD.Visible:=false; GroupBox21.Visible:=true; GroupBox10.Visible:=true; - checkInverse.Visible:=true; - + checkInverse.Visible:=true; + // tjd if tjd or tjs or croi then begin @@ -2847,6 +2905,12 @@ begin editL.Visible:=false; labelL.Visible:=false; ComboBoxAig.ItemIndex:=4; + editP1.Visible:=false; + editP2.Visible:=false; + editP3.Visible:=false; + editP4.Visible:=false; + labelTJD1.Visible:=false; + labelTJD2.Visible:=false; end; // aiguillage normal ou tri @@ -5337,20 +5401,21 @@ begin config_modifie:=true; end; -procedure TFormConfig.ButtonSupFeuClick(Sender: TObject); + +procedure supprime_sig; var adresse,i,indexFeu,index,debut,fin,longueur,ltot,lignedeb,lignefin,l : integer; s : string; begin if affevt then affiche('Evt bouton Sup Feu',clyellow); //trouver ligne de début et de fin sélectionner. - debut:=RichSig.SelStart; - longueur:=RichSig.SelLength; + debut:=FormConfig.RichSig.SelStart; + longueur:=FormConfig.RichSig.SelLength; fin:=debut+longueur; //Affiche(inttostr(debut)+' '+inttostr(longueur),clyellow); // trouver les lignes sélectionnées i:=0;ltot:=0;ligneDeb:=0;LigneFin:=0; repeat - l:=length(RichSig.lines[i])+2; //+2 car CR LF + l:=length(FormConfig.RichSig.lines[i])+2; //+2 car CR LF ltot:=ltot+l; if (debut=fin) and (ligneFin=0) and (ligneDeb<>0) then ligneFin:=i+1; @@ -5370,7 +5435,7 @@ begin if Application.MessageBox(pchar(s),pchar('confirm'), MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION)=idNo then exit; - ButtonInsFeu.Caption:='Ajouter le feu '+intToSTR(feux[index].adresse)+' supprimé'; + FormConfig.ButtonInsFeu.Caption:='Ajouter le feu '+intToSTR(feux[index].adresse)+' supprimé'; clicliste:=true; Feu_supprime:=feux[index]; // sauvegarde le supprimé feu_sauve.adresse:=0; // dévalider sa définition @@ -5435,7 +5500,7 @@ begin Nbrefeux:=NbreFeux-(ligneFin-LigneDeb)-1; config_modifie:=true; - RichSig.Clear; + FormConfig.RichSig.Clear; // réafficher le richsig for i:=1 to NbreFeux do @@ -5443,8 +5508,8 @@ begin s:=encode_Sig_Feux(i); if s<>'' then begin - RichSig.Lines.Add(s); - RE_ColorLine(RichSig,RichSig.lines.count-1,ClAqua); + FormConfig.RichSig.Lines.Add(s); + RE_ColorLine(FormConfig.RichSig,FormConfig.RichSig.lines.count-1,ClAqua); end; end; ligneClicSig:=-1; @@ -5532,6 +5597,11 @@ begin } end; +procedure TFormConfig.ButtonSupFeuClick(Sender: TObject); +begin + Supprime_sig; +end; + // Ajouter le feu supprimé procedure TFormConfig.ButtonInsFeuClick(Sender: TObject); var s : string; @@ -6326,19 +6396,24 @@ begin Aig_sauve.Adresse:=0; end; -procedure TFormConfig.BoutSupAigClick(Sender: TObject); + +// supprime le ou les aiguillages sélectionnés dans le richEdit +procedure supprime_aig; var ligneDeb,LigneFin,i,index,index2,debut,longueur,fin,l,ltot : integer; s : string; begin //trouver ligne de début et de fin sélectionner. - debut:=RichAig.SelStart; - longueur:=RichAig.SelLength; + with formConfig do + begin + debut:=RichAig.SelStart; + longueur:=RichAig.SelLength; + end; fin:=debut+longueur; //Affiche(inttostr(debut)+' '+inttostr(longueur),clyellow); // trouver les lignes sélectionnées i:=0;ltot:=0;ligneDeb:=0;LigneFin:=0; repeat - l:=length(RichAig.lines[i])+2; //+2 car CR LF + l:=length(FormConfig.RichAig.lines[i])+2; //+2 car CR LF ltot:=ltot+l; if (debut=fin) and (ligneFin=0) and (ligneDeb<>0) then ligneFin:=i+1; @@ -6359,7 +6434,7 @@ begin if Application.MessageBox(pchar(s),pchar('confirm'), MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION)=idNo then exit; - ButtonAjSup.Caption:='Ajouter l''aig '+intToSTR(aiguillage[index].adresse)+' supprimé'; + FormConfig.ButtonAjSup.Caption:='Ajouter l''aig '+intToSTR(aiguillage[index].adresse)+' supprimé'; clicliste:=true; raz_champs_aig; Aig_supprime:=aiguillage[index]; // sauvegarde le supprimé @@ -6393,7 +6468,7 @@ begin MaxAiguillage:=maxAiguillage-(ligneFin-LigneDeb)-1; config_modifie:=true; - RichAig.Clear; + FormConfig.RichAig.Clear; // réafficher le richsig for i:=1 to MaxAiguillage do @@ -6401,11 +6476,11 @@ begin s:=encode_Aig(i); if s<>'' then begin - RichAig.Lines.Add(s); - RE_ColorLine(RichAig,RichAig.lines.count-1,ClAqua); + FormConfig.RichAig.Lines.Add(s); + RE_ColorLine(FormConfig.RichAig,FormConfig.RichAig.lines.count-1,ClAqua); end; end; - With RichAig do + With FormConfig.RichAig do begin SelStart:=0; Perform(EM_SCROLLCARET,0,0); @@ -6415,6 +6490,11 @@ begin clicliste:=false; end; +procedure TFormConfig.BoutSupAigClick(Sender: TObject); +begin + Supprime_aig; +end; + procedure TFormConfig.EditP1KeyPress(Sender: TObject; var Key: Char); var AdrAig,adr,adr2,erreur,index,id2 : integer; b,c : char; @@ -6999,7 +7079,7 @@ begin with Formconfig.RichBranche do begin lc:=Perform(EM_LINEFROMCHAR,-1,0); // numéro de la lignée cliquée - LabelNumBranche.Caption:='Branche n°'+intToSTR(lc+1); + if lines[lc]<>'' then LabelNumBranche.Caption:='Branche n°'+intToSTR(lc+1) else LabelNumBranche.Caption:=''; AncligneClicBr:=ligneClicBr; ligneClicBr:=lc; curseur:=SelStart; // position initiale du curseur @@ -7297,7 +7377,7 @@ begin aiguillage[ligneclicAig+1].tjsintb:=s[erreur]; s:=encode_aig(ligneclicAig+1); RichAig.Lines[ligneclicAig]:=s; - end; + end; end; procedure TFormConfig.Button2Click(Sender: TObject); @@ -7307,6 +7387,7 @@ end; procedure TFormConfig.FormClose(Sender: TObject; var Action: TCloseAction); var index : integer; + ok : boolean; begin for index:=1 to NbreFeux do begin @@ -7324,15 +7405,29 @@ begin Top:=HtImg+15+((HtImg+EspY+20)*((index-1) div NbreImagePLigne)); Left:=10+ (LargImg+5)*((index-1) mod (NbreImagePLigne)); BringToFront; - end; + end; end; // supprimer les checkBox de feux blancs si ils ont été décochés - if not(feux[index].FeuBlanc) and (feux[index].check<>nil) then + if not(feux[index].FeuBlanc) and (feux[index].check<>nil) then begin Feux[index].Check.free; Feux[index].Check:=nil; end; end; + + ok:=verifie_panneau_config; + + // TCO + if avectco and not(entreeTCO) then + begin + //créée la fenêtre TCO non modale + FormTCO:=TformTCO.Create(nil); + FormTCO.show; + FormPrinc.ButtonAffTCO.Visible:=true; + end; + + if not(ok) then action:=tCloseAction(caNone); // si la config est nok, on ferme pas la fenetre + end; procedure TFormConfig.ButtonConfigSRClick(Sender: TObject); @@ -7465,7 +7560,7 @@ begin if lc>0 then begin dec(lc); - LabelNumBranche.Caption:='Branche n°'+intToSTR(lc+1); + if lines[lc]<>'' then LabelNumBranche.Caption:='Branche n°'+intToSTR(lc+1) else LabelNumBranche.Caption:=''; AncligneClicBr:=ligneClicBr; ligneClicBr:=lc; curseur:=SelStart; // position initiale du curseur @@ -7510,15 +7605,22 @@ begin end; end; clicListe:=false; - end; +procedure TFormConfig.RichAigKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); begin + if key=VK_delete then supprime_aig; +end; +procedure TFormConfig.RichSigKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + if key=VK_delete then supprime_sig; +end; - - +begin end. diff --git a/UnitConfigTCO.dcu b/UnitConfigTCO.dcu index 564fa53a4748c1bfa50003b29cc7a9bcd29f3c8e..9261fea51dde4055cd79f91c930b48efe3d00b9d 100644 GIT binary patch delta 89 zcmdm&wJ(eNJ_7^4ohbuDR`7<2+@{QtYnN|yerzP!T+3R?%)rFZ$XpAeTA5oxl=BC+ l$@az?LXXSYmV)@AENem3V<)!BmB!A@&TH8=?>DYz1OR;|7=Qo( delta 89 zcmdm&wJ(eNJ_7^4ohbu@cjD5C+@{PweP(WSerzPEEX`cW%)rFZ$XpAeTA5ox)Z<>3 l$@az?Ld~KqOF?{5mbD=7rp=h diff --git a/UnitConfigTCO.dfm b/UnitConfigTCO.dfm index 563716a..059a045 100644 --- a/UnitConfigTCO.dfm +++ b/UnitConfigTCO.dfm @@ -204,11 +204,11 @@ object FormConfigTCO: TFormConfigTCO Caption = 'Couleur des textes' end object Label12: TLabel - Left = 240 + Left = 192 Top = 40 - Width = 42 + Width = 93 Height = 13 - Caption = 'statiques' + Caption = 'statiques par d'#233'faut' end object ImageQuai: TImage Left = 296 @@ -229,7 +229,7 @@ object FormConfigTCO: TFormConfigTCO Top = 208 Width = 281 Height = 17 - Caption = 'Couleur des cantons activ'#233's par la couleur des trains' + Caption = 'Couleur du cantons activ'#233' par la couleur du train' TabOrder = 0 end end diff --git a/UnitDebug.dcu b/UnitDebug.dcu index f5d53987b3654306c175bf69b2244347e4be42b4..278b8a63e8906ca04afdd19a34526fe90e6c54f7 100644 GIT binary patch delta 8637 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 ZccqvgaB8#~Xtih$xI|p7kzz|+{|l-bsFeT! diff --git a/UnitDebug.dfm b/UnitDebug.dfm index b625bb0..7797ac4 100644 --- a/UnitDebug.dfm +++ b/UnitDebug.dfm @@ -1,8 +1,8 @@ object FormDebug: TFormDebug - Left = 200 - Top = 155 - Width = 842 - Height = 784 + Left = -8 + Top = -8 + Width = 1382 + Height = 744 Caption = 'Fen'#234'tre de d'#233'bug' Color = clWindow TransparentColorValue = clTeal @@ -15,12 +15,12 @@ object FormDebug: TFormDebug Position = poMainFormCenter OnCreate = FormCreate DesignSize = ( - 809 - 746) + 1349 + 706) PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel - Left = 642 + Left = 1182 Top = 4 Width = 108 Height = 13 @@ -36,7 +36,7 @@ object FormDebug: TFormDebug ParentFont = False end object Label2: TLabel - Left = 474 + Left = 1014 Top = 2 Width = 131 Height = 18 @@ -50,7 +50,7 @@ object FormDebug: TFormDebug ParentFont = False end object EditNivDebug: TEdit - Left = 754 + Left = 1294 Top = 2 Width = 49 Height = 21 @@ -66,7 +66,7 @@ object FormDebug: TFormDebug OnKeyPress = EditNivDebugKeyPress end object MemoEvtDet: TMemo - Left = 570 + Left = 1110 Top = 336 Width = 239 Height = 201 @@ -87,7 +87,7 @@ object FormDebug: TFormDebug OnChange = MemoEvtDetChange end object ButtonEcrLog: TButton - Left = 466 + Left = 1006 Top = 328 Width = 97 Height = 29 @@ -97,7 +97,7 @@ object FormDebug: TFormDebug OnClick = ButtonEcrLogClick end object ButtonRazTampon: TButton - Left = 466 + Left = 1006 Top = 360 Width = 97 Height = 33 @@ -108,7 +108,7 @@ object FormDebug: TFormDebug OnClick = ButtonRazTamponClick end object ButtonCherche: TButton - Left = 466 + Left = 1006 Top = 296 Width = 97 Height = 25 @@ -118,7 +118,7 @@ object FormDebug: TFormDebug OnClick = ButtonChercheClick end object ButtonAffEvtChrono: TButton - Left = 466 + Left = 1006 Top = 256 Width = 97 Height = 33 @@ -129,7 +129,7 @@ object FormDebug: TFormDebug OnClick = ButtonAffEvtChronoClick end object ButtonCop: TButton - Left = 466 + Left = 1006 Top = 208 Width = 97 Height = 41 @@ -146,7 +146,7 @@ object FormDebug: TFormDebug OnClick = ButtonCopClick end object RichEdit: TRichEdit - Left = 570 + Left = 1110 Top = 176 Width = 239 Height = 153 @@ -165,7 +165,7 @@ object FormDebug: TFormDebug OnChange = RichEditChange end object ButtonRazLog: TButton - Left = 466 + Left = 1006 Top = 400 Width = 97 Height = 33 @@ -176,7 +176,7 @@ object FormDebug: TFormDebug OnClick = ButtonRazLogClick end object GroupBox1: TGroupBox - Left = 464 + Left = 1004 Top = 608 Width = 345 Height = 177 @@ -247,7 +247,7 @@ object FormDebug: TFormDebug ShowHint = True TabOrder = 2 end - object Button1: TButton + object ButtonCP: TButton Left = 128 Top = 16 Width = 81 @@ -255,7 +255,7 @@ object FormDebug: TFormDebug Caption = 'Etat 3 cantons pr'#233'c'#233'dents signal' TabOrder = 3 WordWrap = True - OnClick = Button1Click + OnClick = ButtonCPClick end object Button2: TButton Left = 208 @@ -324,7 +324,7 @@ object FormDebug: TFormDebug end end object GroupBox2: TGroupBox - Left = 464 + Left = 1004 Top = 20 Width = 345 Height = 149 @@ -357,9 +357,9 @@ object FormDebug: TFormDebug object CheckBoxEvtDetAig: TCheckBox Left = 8 Top = 32 - Width = 201 + Width = 289 Height = 17 - Caption = 'Ev'#232'nements d'#233'tecteurs et aiguillages' + Caption = 'Ev'#232'nements d'#233'tecteurs, aiguillages et actionneurs' Font.Charset = DEFAULT_CHARSET Font.Color = clBlack Font.Height = -11 @@ -399,21 +399,6 @@ object FormDebug: TFormDebug TabOrder = 3 OnClick = CheckTrameClick end - object CheckBoxAct: TCheckBox - Left = 8 - Top = 48 - Width = 153 - Height = 17 - Caption = 'Ev'#232'vements actionneurs' - Font.Charset = DEFAULT_CHARSET - Font.Color = clBlack - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - ParentFont = False - TabOrder = 4 - OnClick = CheckBoxActClick - end object CheckBoxAffFD: TCheckBox Left = 8 Top = 112 @@ -428,7 +413,7 @@ object FormDebug: TFormDebug Font.Style = [] ParentColor = False ParentFont = False - TabOrder = 5 + TabOrder = 4 OnClick = CheckBoxAffFDClick end object CheckBoxAffDebDecSig: TCheckBox @@ -443,7 +428,7 @@ object FormDebug: TFormDebug Font.Name = 'MS Sans Serif' Font.Style = [] ParentFont = False - TabOrder = 6 + TabOrder = 5 OnClick = CheckBoxAffDebDecSigClick end object EditDebugSignal: TEdit @@ -456,7 +441,7 @@ object FormDebug: TFormDebug 'ignaux' ParentShowHint = False ShowHint = True - TabOrder = 7 + TabOrder = 6 OnChange = EditDebugSignalChange end object CheckBoxTiers: TCheckBox @@ -476,11 +461,11 @@ object FormDebug: TFormDebug ParentFont = False ParentShowHint = False ShowHint = True - TabOrder = 8 + TabOrder = 7 OnClick = CheckBoxTiersClick end object CheckBox1: TCheckBox - Left = 160 + Left = 8 Top = 48 Width = 177 Height = 17 @@ -491,7 +476,7 @@ object FormDebug: TFormDebug Font.Name = 'MS Sans Serif' Font.Style = [] ParentFont = False - TabOrder = 9 + TabOrder = 8 OnClick = CheckBox1Click end object CheckDebugTCO: TCheckBox @@ -506,15 +491,15 @@ object FormDebug: TFormDebug Font.Name = 'MS Sans Serif' Font.Style = [] ParentFont = False - TabOrder = 10 + TabOrder = 9 OnClick = CheckDebugTCOClick end end object RichDebug: TRichEdit Left = 0 Top = 0 - Width = 457 - Height = 737 + Width = 997 + Height = 697 Anchors = [akLeft, akTop, akRight, akBottom] Lines.Strings = ( 'RichDebug') @@ -525,7 +510,7 @@ object FormDebug: TFormDebug OnChange = RichDebugChange end object GroupBox5: TGroupBox - Left = 464 + Left = 1004 Top = 544 Width = 345 Height = 57 @@ -592,12 +577,17 @@ object FormDebug: TFormDebug end end object ButtonRazTout: TButton - Left = 467 + Left = 1007 Top = 176 Width = 97 Height = 25 + Hint = + 'Supprime les trains d'#233'tect'#233's ou en cas de nouveau RUN, permet de' + + ' partir de 0' Anchors = [akTop, akRight] Caption = 'RAZ tous trains' + ParentShowHint = False + ShowHint = True TabOrder = 13 OnClick = ButtonRazToutClick end diff --git a/UnitDebug.pas b/UnitDebug.pas index a1d23ab..8a30df8 100644 --- a/UnitDebug.pas +++ b/UnitDebug.pas @@ -28,7 +28,6 @@ type CheckBoxEvtDetAig: TCheckBox; CheckBoxTraceLIste: TCheckBox; CheckTrame: TCheckBox; - CheckBoxAct: TCheckBox; CheckBoxAffFD: TCheckBox; CheckBoxAffDebDecSig: TCheckBox; GroupBox3: TGroupBox; @@ -40,7 +39,7 @@ type ButtonDetSuiv: TButton; EditPrec: TEdit; EditActuel: TEdit; - Button1: TButton; + ButtonCP: TButton; Button2: TButton; RichDebug: TRichEdit; PopupMenuRD: TPopupMenu; @@ -69,14 +68,13 @@ type procedure ButtonCopClick(Sender: TObject); procedure copier1Click(Sender: TObject); procedure ButtonRazLogClick(Sender: TObject); - procedure CheckBoxActClick(Sender: TObject); procedure CheckBoxEvtDetAigClick(Sender: TObject); procedure CheckBoxAffFDClick(Sender: TObject); procedure CheckBoxAffDebDecSigClick(Sender: TObject); procedure ButtonSigSuivClick(Sender: TObject); procedure ButtonDetSuivClick(Sender: TObject); procedure ButtonCanSuivSigClick(Sender: TObject); - procedure Button1Click(Sender: TObject); + procedure ButtonCPClick(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Copier2Click(Sender: TObject); procedure RichDebugChange(Sender: TObject); @@ -98,9 +96,6 @@ type { Déclarations publiques } end; -Const -Max_Event_det_tick=30000; - var FormDebug: TFormDebug; NivDebug,signalDebug : integer; @@ -108,21 +103,10 @@ var N_event_det : integer; // index du dernier évènement (de 1 à 20) N_Event_tick : integer ; // dernier index - // tableau des évènements détecteurs et aiguillages - event_det_tick : array[0..Max_Event_det_tick] of - record - tick : longint; - detecteur : integer ; - Aiguillage : integer ; - actionneur : integer; - objet : integer; // numéro d'objet dans CDM - etat : integer ; // état du détecteur de l'aiguillage ou de l'actionneur - traite : boolean; // traité lors de a recherche d'une route - end; + procedure AfficheDebug(s : string;lacouleur : TColor); -Procedure Raz_tout; procedure RE_ColorLine(ARichEdit: TRichEdit; ARow: Integer; AColor: TColor); implementation @@ -148,21 +132,10 @@ begin begin Lines.add(s); RE_ColorLine(FormDebug.RichDebug,FormDebug.RichDebug.lines.count-1,lacouleur); - end; + end; end; -Procedure Raz_tout; -var i : integer; -begin - N_Event_tick:=0; - N_event_det:=0; - N_trains:=0; - Formprinc.LabelNbTrains.caption:=IntToSTR(N_trains); - for i:=1 to Max_Trains do Event_det_Train[i].NbEl:=0; - i_simule:=0; - FormDebug.MemoEvtDet.Clear; - FormDebug.Richedit.Clear; -end; + procedure TFormDebug.FormCreate(Sender: TObject); var s: string; @@ -238,23 +211,27 @@ begin end; procedure TFormDebug.ButtonChercheClick(Sender: TObject); -var i : integer; +var ligne,l,position : integer; + s : string; trouve : boolean; begin - with RichDebug do begin - i:=0; + ligne:=0; + l:=0; repeat - trouve:=pos('erreur',uppercase(Lines[i]))<>0; - inc(i); - until (i>=Lines.Count) or trouve; + s:=lowercase(Lines[ligne]); + l:=l+length(s)+2; + position:=pos('erreur',s); + trouve:=position<>0; + inc(ligne); + until (ligne>=Lines.Count) or trouve; if trouve then begin - Affiche('trouvé en '+intToSTR(i),clyellow); - SelStart := I - 1; - SelLength := Length('erreur'); - SetFocus; + //Affiche('trouvé en '+intToSTR(ligne),clyellow); + SelStart:= l-length(s)+position-3; + SelLength:=6; + SetFocus; end; end; end; @@ -262,6 +239,7 @@ end; procedure TFormDebug.ButtonAffEvtChronoClick(Sender: TObject); var i,j,etat : integer; s : string; + typ : Tequipement; begin RichDebug.Clear; if N_event_tick=0 then @@ -276,21 +254,19 @@ begin begin begin - j:=event_det_tick[i].detecteur; + j:=event_det_tick[i].adresse; etat:=event_det_tick[i].etat; if j<>-1 then begin - s:=IntToSTR(i)+' Tick='+IntToSTR(event_det_tick[i].tick)+' Det='+IntToSTR(j)+'='+intToSTR(etat); + s:=IntToSTR(i)+' Tick='+IntToSTR(event_det_tick[i].tick); + typ:=event_det_tick[i].modele; + if typ=det then s:=s+' Det='; + if typ=aig then s:=s+' Aig='; + if typ=act then s:=s+' Act='; + s:=s+IntToSTR(j)+'='+intToSTR(etat); AfficheDebug(s,clyellow); end; end; - - j:=event_det_tick[i].aiguillage; - if j<>-1 then - begin - s:=IntToSTR(i)+' Tick='+IntToSTR(event_det_tick[i].tick)+' Aig='+IntToSTR(j)+'='+intToSTR(event_det_tick[i].etat); - AfficheDebug(s,clyellow); - end; end; AfficheDebug('-----------------------------',cllime); end; @@ -324,11 +300,6 @@ begin RichDebug.Clear; end; -procedure TFormDebug.CheckBoxActClick(Sender: TObject); -begin - AffActionneur:=CheckBoxAct.Checked; -end; - procedure TFormDebug.CheckBoxEvtDetAigClick(Sender: TObject); begin AffAigDet:=CheckBoxEvtDetAig.checked; @@ -388,7 +359,7 @@ end; -procedure TFormDebug.Button1Click(Sender: TObject); +procedure TFormDebug.ButtonCPClick(Sender: TObject); var Adr,erreur,ancdebug : integer ; begin Val(EditSigSuiv.Text,Adr,erreur); if erreur<>0 then exit; diff --git a/UnitPilote.dcu b/UnitPilote.dcu index 6b58c1c3285010dc07d887ec0eb004a865783089..f2e544a4e3e190a213e40e74514c7579160b2bd8 100644 GIT binary patch delta 98 zcmX>Yb})?lJ_7^4qc#IWVeGDn+%YUgFYb})?lJ_7^4qc#IWZNu`3+%YWo7BCfW%wDOX@Nv2*GXoQYDw8aTTCBya2%>G7 wG(ptkTK35%n!(J6g;^$dY3eg8Yp_h-qbbSEY|b+IhNc&@vnuOmRV^7t023$}4*&oF diff --git a/UnitPrinc.dcu b/UnitPrinc.dcu index 7f9d4224060fa0327743dbc0304b24b04e826afc..48ef4cbc54d7f685ecd07b192d0c982458fdb6e7 100644 GIT binary patch delta 89477 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 E15LC4!2kdN delta 83264 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 or ((adr=el) and (TypeEL=Bt)); + sort:=(Branche>NbreBranches) or ((adr=el) and (TypeEL=Bt)); until (sort); if (adr=el) then begin branche_trouve:=Branche; IndexBranche_trouve:=i-1; end - else begin s:='Erreur 175 - élément '+intToSTR(el); - s:=s+' non trouvé';Affiche(s,clred); - branche_trouve:=0; IndexBranche_trouve:=0; - if NivDebug>=1 then AfficheDebug(s,clred); + else begin s:='Erreur 175 - élément '+intToSTR(el)+' '; + s:=s+BTypeToNum(TypeEl); + s:=s+' non trouvé';Affiche(s,clred); + branche_trouve:=0; IndexBranche_trouve:=0; + if NivDebug>=1 then AfficheDebug(s,clred); end; end; @@ -3274,7 +3316,7 @@ begin end; if (aiguillage[index].modele=aig) and (Bt=aig) then // aiguillage normal begin - // aiguillage pris en pointe + // aiguillage index (adr) pris en pointe if (aiguillage[index].Apointe=prec) then begin if aiguillage[index].position=const_droit then @@ -3301,7 +3343,8 @@ begin begin typeGen:=rien; AdrDevie:=Adr; - suivant_alg3:=9997;exit; + suivant_alg3:=9997; + exit; end; if Adr=0 then begin Affiche('134 - Erreur fatale',clRed); @@ -3318,20 +3361,32 @@ begin suivant_alg3:=adr; exit; end; + if aiguillage[index].position=const_inconnu then + begin + s:='134.2 - Aiguillage '+IntToSTR(adr)+' non résolu car position inconnue'; + AfficheDebug(s,clOrange); + Affiche(s,clOrange); + typeGen:=rien; + suivant_alg3:=9996; + exit; + end; end else begin + // aiguillage index (adr) pris en talon if NivDebug=3 then AfficheDebug('135 - aiguillage '+intToSTR(Adr)+' Pris en talon',clyellow); if (alg=2) then // on demande d'arreter si l'aiguillage en talon est mal positionné begin if aiguillage[index].position=const_droit then begin // si TJD (modele=2) sur le précédent, alors substituer avec la 2eme adresse de la TJD - if aiguillage[index_aig(prec)].modele=tjd then prec:=aiguillage[index_aig(prec)].DDroit; + md:=aiguillage[index_aig(prec)].modele; + if (md=tjd) or (md=tjs) then prec:=aiguillage[index_aig(prec)].DDroit; if prec<>aiguillage[index_aig(Adr)].Adroit then //Adroit begin if NivDebug=3 then AfficheDebug('135.1 - Aiguillage '+intToSTR(adr)+' mal positionné',clyellow); - suivant_alg3:=9998;exit; + suivant_alg3:=9998; + exit; end else begin @@ -3340,10 +3395,14 @@ begin end else begin - if prec<>aiguillage[index].Adevie then // Adevie + // si TJD (modele=2) sur le précédent, alors substituer avec la 2eme adresse de la TJD + md:=aiguillage[index_aig(prec)].modele; + if (md=tjd) or (md=tjs) then prec:=aiguillage[index_aig(prec)].Ddevie; + if prec<>aiguillage[index].Adevie then begin if NivDebug=3 then AfficheDebug('135.3 Aiguillage '+intToSTR(adr)+' mal positionné',clyellow); - suivant_alg3:=9998;exit; + suivant_alg3:=9998; + exit; end else begin @@ -3381,7 +3440,8 @@ begin exit; end; - if (aiguillage[index].modele=tjd) or (aiguillage[index].modele=tjs) then // TJD ou TJS + // TJD ou TJS----------------------------- + if (aiguillage[index].modele=tjd) or (aiguillage[index].modele=tjs) then begin // récupérer les élements de la TJD/S AdrTjdP:=aiguillage[index].Ddroit; // 2eme adresse de la TJD/S @@ -3406,7 +3466,7 @@ begin if NivDebug=3 then begin - s:='137 - TJD '+intToSTR(Adr); + s:='137 - TJD/S '+intToSTR(Adr); if NetatTJD=4 then s:=s+'/'+IntToSTR(AdrTjdP); s:=s+' pos='; if aiguillage[index].position=const_droit then s:=s+'droit' @@ -3436,9 +3496,9 @@ begin ( ((aiguillage[index].DdroitB='D') and (aiguillage[index_aig(prec)].position=const_droit)) or ((aiguillage[index].DdroitB='S') and (aiguillage[index_aig(prec)].position=const_devie)) - ) then + ) then begin - Adr:=aiguillage[index].Adroit; //Ddroit + Adr:=aiguillage[index].Adroit; A:=aiguillage[index].AdroitB; end else @@ -3462,7 +3522,7 @@ begin begin if aiguillage[index].Adroit=prec then begin - Adr:=aiguillage[index].DDroit; //Ddroit + Adr:=aiguillage[index].DDroit; A:=aiguillage[index].DdroitB; end; if aiguillage[index].Adevie=prec then @@ -3528,24 +3588,24 @@ begin end; end; - //---------------TJD 4 états ou TJS + //--------------- 4 états ou TJS if (NetatTJD=4) or tjsC then begin // determiner la position de la première section de la TJD (4 cas) // cas 1 : droit droit if (( aiguillage[index].position=const_droit) and - (aiguillage[index2].position=const_droit) and tjdC) then + (aiguillage[index2].position=const_droit) ) then begin - // d'où vient ton sur la tjd + // d'où vient ton sur la tjs if BtypePrec=Aig then begin if ( ((aiguillage[index].AdroitB)='S') and (aiguillage[index_aig(prec)].position=const_devie) ) or ( ((aiguillage[index].AdroitB)='D') and (aiguillage[index_aig(prec)].position=const_droit) ) then - begin if NivDebug=3 then AfficheDebug('TJD '+intToSTR(adr)+' bien positionnée cas 1.1',clyellow);end + begin if NivDebug=3 then AfficheDebug('TJD/S '+intToSTR(adr)+' bien positionnée cas 1.1',clyellow);end else begin - if (nivdebug>1) or traceliste then AfficheDebug('135.5- TJD '+intToSTR(adr)+' mal positionnée cas 1.1',clyellow); + if (nivdebug>1) or traceliste then AfficheDebug('135.5- TJD/S '+intToSTR(adr)+' mal positionnée cas 1.1',clyellow); if alg=2 then begin suivant_alg3:=9998;exit; @@ -3557,10 +3617,10 @@ begin begin if (aiguillage[index].Adroit)=prec then begin - if NivDebug=3 then AfficheDebug('TJD '+intToSTR(adr)+' bien positionnée cas 1.2',clyellow);end + if NivDebug=3 then AfficheDebug('TJD/S '+intToSTR(adr)+' bien positionnée cas 1.2',clyellow);end else begin - if (nivdebug>1) or traceliste then AfficheDebug('135.6- TJD '+intToSTR(adr)+' mal positionnée cas 1.2',clyellow); + if (nivdebug>1) or traceliste then AfficheDebug('135.6- TJD/S '+intToSTR(adr)+' mal positionnée cas 1.2',clyellow); if alg=2 then begin suivant_alg3:=9998;exit; @@ -3579,11 +3639,11 @@ begin Adr:=aiguillage[index2].Adevie; A:=aiguillage[index2].AdevieB; end; - if NivDebug=3 then AfficheDebug('cas1.1 tjd: '+s+' Adr='+intToSTR(adr)+A,clYellow); + if NivDebug=3 then AfficheDebug('cas1.1 tjd/s: '+s+' Adr='+intToSTR(adr)+A,clYellow); if A='Z' then typeGen:=det else typeGen:=aig; //TypeEL=(1=détécteur 2=aig suivant_alg3:=adr; Actuel:=aiguillage[index2].Adresse; // substitution de la TJS - if nivDebug=3 then Affichedebug('le port de destination de la tjd 4 états est '+IntToSTR(adr)+a,clyellow); + if nivDebug=3 then Affichedebug('le port de destination de la tjd/s est '+IntToSTR(adr)+a,clyellow); exit; end; @@ -3597,7 +3657,7 @@ begin if ( ((aiguillage[index].AdroitB)='S') and (aiguillage[index_aig(prec)].position=const_devie) ) or ( ((aiguillage[index].AdroitB)='D') and (aiguillage[index_aig(prec)].position=const_droit) ) then - begin if NivDebug=3 then AfficheDebug('TJD '+intToSTR(adr)+' bien positionnée - cas 2.1',clyellow); + begin if NivDebug=3 then AfficheDebug('TJD/S '+intToSTR(adr)+' bien positionnée - cas 2.1',clyellow); if alg=3 then // on demande d'arreter si l'aiguillage pris en pointe est dévié begin typeGen:=rien; @@ -3718,7 +3778,7 @@ begin if A='Z' then typeGen:=det else typeGen:=aig; //TypeEL=(1=détécteur 2=aig Actuel:=aiguillage[index2].Adresse; suivant_alg3:=adr; - if nivDebug=3 then Affichedebug('le port de destination de la tjd 4 états est '+IntToSTR(adr)+a,clyellow); + if nivDebug=3 then Affichedebug('le port de destination de la tjd est '+IntToSTR(adr)+a,clyellow); exit; end; @@ -3773,7 +3833,7 @@ begin if A='Z' then typeGen:=det else typeGen:=aig; //TypeEL=(1=détécteur 2=aig Actuel:=aiguillage[index2].Adresse; suivant_alg3:=adr; - if nivDebug=3 then Affichedebug('le port de destination de la tjd 4 états est '+IntToSTR(adr)+a,clyellow); + if nivDebug=3 then Affichedebug('le port de destination de la tjd est '+IntToSTR(adr)+a,clyellow); exit; end; @@ -3787,7 +3847,7 @@ begin if A='Z' then typeGen:=det else typeGen:=aig; //TypeEL=(1=détécteur 2=aig Actuel:=aiguillage[index2].Adresse; suivant_alg3:=adr; - if nivDebug=3 then Affichedebug('le port de destination de la tjd 4 états est '+IntToSTR(adr)+a,clyellow); + if nivDebug=3 then Affichedebug('le port de destination de la tjd est '+IntToSTR(adr)+a,clyellow); exit; end; @@ -3801,30 +3861,42 @@ begin if A='Z' then typeGen:=det else typeGen:=aig; //TypeEL=(1=détécteur 2=aig suivant_alg3:=adr; Actuel:=aiguillage[index2].Adresse; - if nivDebug=3 then Affichedebug('le port de destination de la tjd 4 états est '+IntToSTR(adr)+a,clyellow); + if nivDebug=3 then Affichedebug('le port de destination de la tjd est '+IntToSTR(adr)+a,clyellow); exit; end; - s:='1026 - position TJD/S '+IntToSTR(Adr)+'/'+intToSTR(AdrTJDP)+' inconnue'; - AfficheDebug(s,clOrange); + if (nivdebug>1) or traceliste then + begin + s:='1026 - position TJD/S '+IntToSTR(Adr)+'/'+intToSTR(AdrTJDP)+' inconnue'; + AfficheDebug(s,clOrange); + end; suivant_alg3:=9999;exit; end; end; if (aiguillage[index].modele=crois) then begin - adr:=9999; - if aiguillage[index].Adroit=prec then begin adr:=aiguillage[index].Ddroit;A:=aiguillage[index].DdroitB;end; - if aiguillage[index].Adevie=prec then begin adr:=aiguillage[index].Ddevie;A:=aiguillage[index].DdevieB;end; - if aiguillage[index].Ddevie=prec then begin adr:=aiguillage[index].Adevie;A:=aiguillage[index].AdevieB;end; - if aiguillage[index].Ddroit=prec then begin adr:=aiguillage[index].Adroit;A:=aiguillage[index].AdroitB;end; + adr:=9999; + if aiguillage[index].Adroit=prec then begin adr:=aiguillage[index].Ddroit;A:=aiguillage[index].DdroitB;end; + if aiguillage[index].Adevie=prec then begin adr:=aiguillage[index].Ddevie;A:=aiguillage[index].DdevieB;end; + if aiguillage[index].Ddevie=prec then begin adr:=aiguillage[index].Adevie;A:=aiguillage[index].AdevieB;end; + if aiguillage[index].Ddroit=prec then begin adr:=aiguillage[index].Adroit;A:=aiguillage[index].AdroitB;end; - if A='Z' then typeGen:=det else typeGen:=aig; //TypeEL=(1=détécteur 2=aig) - suivant_alg3:=adr; - if a='' then a:=' '; - if nivDebug=3 then Affichedebug('le port de destination du croisement est '+IntToSTR(adr)+a,clyellow); - exit; + if A='Z' then typeGen:=det else typeGen:=aig; //TypeEL=(1=détécteur 2=aig) + suivant_alg3:=adr; + if a='' then a:=' '; + if (nivdebug>1) or traceliste then Affichedebug('le port de destination du croisement est '+IntToSTR(adr)+a,clyellow); + + // mémoriser dans un tableau l'entrée et la sortie du croisement + if ncrois<10 then + begin + inc(ncrois); + croisement[ncrois].adresse:=aiguillage[index].adresse; + croisement[ncrois].entree:=prec; + croisement[ncrois].sortie:=adr; + end; + exit; end; - + if (aiguillage[index].modele=triple) then // aiguillage triple begin Adr2:=aiguillage[index].AdrTriple; @@ -3832,17 +3904,17 @@ begin begin // aiguillage triple pris en pointe //Affiche('position='+intToSTR(aiguillage[index_aig(Adr].position),clyellow); - if (aiguillage[index].position=const_droit) and (aiguillage[index_aig(Adr2)].position=const_droit) then + if (aiguillage[index].position=const_droit) and (aiguillage[index_aig(Adr2)].position=const_droit) then begin if NivDebug=3 then AfficheDebug('Aiguillage triple pris en pointe droit',clYellow); A:=aiguillage[index].AdroitB; Adr:=aiguillage[index].Adroit; - if A='Z' then TypeEl:=det else TypeEL:=aig; //TypeEL=(1=détécteur 2=aig + if A='Z' then TypeEl:=det else TypeEL:=aig; //TypeEL=(1=détécteur 2=aig trouve_element(Adr,TypeEl,1); // branche_trouve IndexBranche_trouve typeGen:=BrancheN[branche_trouve,IndexBranche_trouve].BType; suivant_alg3:=adr;exit; end; - if (aiguillage[index].position<>const_droit) and (aiguillage[index_aig(Adr2)].position=const_droit) then + if (aiguillage[index].position<>const_droit) and (aiguillage[index_aig(Adr2)].position=const_droit) then begin if NivDebug=3 then AfficheDebug('Aiguillage triple dévié1 (à gauche)',clYellow); A:=aiguillage[index].AdevieB; @@ -3852,7 +3924,7 @@ begin typeGen:=BrancheN[branche_trouve,IndexBranche_trouve].BType; suivant_alg3:=adr;exit; end; - if (aiguillage[index].position=const_droit) and (aiguillage[index_aig(Adr2)].position<>const_droit) then + if (aiguillage[index].position=const_droit) and (aiguillage[index_aig(Adr2)].position<>const_droit) then begin if NivDebug=3 then AfficheDebug('Aiguillage triple dévié2 (à droite)',clYellow); A:=aiguillage[index].Adevie2B; @@ -3860,17 +3932,16 @@ begin if A='Z' then TypeEl:=det else TypeEL:=aig; //TypeEL=(1=détécteur 2=aig trouve_element(Adr,TypeEl,1); // branche_trouve IndexBranche_trouve typeGen:=BrancheN[branche_trouve,IndexBranche_trouve].BType; - suivant_alg3:=adr;exit; - end; - begin - if aiguillage[index].position=const_inconnu then begin suivant_alg3:=9996;exit;end; // pour échappement - s:='Aiguillage triple '+IntToSTR(Adr)+' : configuration des aiguilles interdite'; - if CDM_connecte then s:=s+': '+IntToSTR(aiguillage[index].position); - AfficheDebug(s,clYellow); - Affiche(s,clRed); - suivant_alg3:=9999; + suivant_alg3:=adr; exit; end; + if aiguillage[index].position=const_inconnu then begin suivant_alg3:=9996;exit;end; // pour échappement + s:='Aiguillage triple '+IntToSTR(Adr)+' : configuration des aiguilles interdite'; + if CDM_connecte then s:=s+': '+IntToSTR(aiguillage[index].position); + AfficheDebug(s,clYellow); + Affiche(s,clRed); + suivant_alg3:=9999; + exit; end else begin @@ -3882,7 +3953,8 @@ begin if prec<>aiguillage[index].Adroit then begin if (nivdebug>1) or traceliste then AfficheDebug('135.3 - Aiguillage '+intToSTR(adr)+'triple mal positionné',clyellow); - suivant_alg3:=9998;exit; + suivant_alg3:=9998; + exit; end else begin @@ -3894,7 +3966,8 @@ begin if prec<>aiguillage[index].Adevie then begin if (nivdebug>1) or traceliste then AfficheDebug('135.3 - Aiguillage '+intToSTR(adr)+'triple mal positionné',clyellow); - suivant_alg3:=9998;exit; + suivant_alg3:=9998; + exit; end else begin @@ -3906,7 +3979,8 @@ begin if prec<>aiguillage[index].Adevie2 then begin if (nivdebug>1) or traceliste then AfficheDebug('135.3 - Aiguillage '+intToSTR(adr)+'triple mal positionné',clyellow); - suivant_alg3:=9998;exit; + suivant_alg3:=9998; + exit; end else begin @@ -3919,7 +3993,8 @@ begin if A='Z' then TypeEl:=det else TypeEL:=aig; //TypeEL=(1=détécteur 2=aig trouve_element(Adr,TypeEl,1); // branche_trouve IndexBranche_trouve typeGen:=BrancheN[branche_trouve,IndexBranche_trouve].BType; - suivant_alg3:=Adr;exit; + suivant_alg3:=Adr; + exit; end; end; end; @@ -3945,7 +4020,6 @@ begin trouve3:=feux[i].Adr_det3=adr; trouve4:=feux[i].Adr_det4=adr; - if trouve1 or trouve2 or trouve3 or trouve4 then begin inc(trouve); @@ -3974,8 +4048,8 @@ var actuelCalc,PrecCalc,j,AdrSuiv ,indexCalc : integer; TypeprecCalc,TypeActuelCalc : TEquipement; begin if NivDebug>=2 then - AfficheDebug('Proc Detecteur_suivant '+IntToSTR(prec)+','+IntToSTR(BTypeToNum(typeElPrec))+'/'+intToSTR(actuel)+','+ - intToSTR(BTypeToNum(TypeElActuel))+ + AfficheDebug('Proc Detecteur_suivant '+IntToSTR(prec)+','+BTypeToNum(typeElPrec)+'/'+intToSTR(actuel)+','+ + BTypeToNum(TypeElActuel)+ ' Alg='+IntToSTR(algo),clyellow); j:=0; @@ -4047,7 +4121,7 @@ begin end; end; - if (typ=tjd) or (typ=tjs) then + if (typ=tjd) or (typ=tjs) then begin //Affiche('TJD',clYellow); if connect='S' then @@ -4060,6 +4134,18 @@ begin end; end; + if (typ=crois) then + begin + if connect='S' then + begin + suiv:=aiguillage[i].ADevie;typ_suiv:=aiguillage[i].ADevieB; + end; + if connect='D' then + begin + suiv:=aiguillage[i].ADroit;typ_suiv:=aiguillage[i].ADroitB; + end; + end; + if typ_suiv=#0 then typ_suiv:='Z'; end; @@ -4068,16 +4154,16 @@ end; // si det1 et det2 sont contigus sans aiguillages entre eux, çà renvoie det1 // det_contigu(527,520: renvoie 7 dans suivant // det_contigu(514,522: renvoie 514 dans suivant -// procédure récursive procedure det_contigu(det1,det2 : integer;var suivant : integer;var ElSuiv : TEquipement); var suiv1,indexBranche_det1,indexBranche_det2,branche_det2,branche_det1, suiv_2,detC,indexBranche_det,suiv_pointe,dernier,it : integer; - type1,type_dernier : Tequipement; + type1,Tp,type_dernier : Tequipement; type_tmp : char; trouve,afdeb : boolean; // donne le suivant au point de connection de l'aiguillage // prec=det ou aig ; suiv=aig + // procédure récursive procedure aig_suiv(prec,suiv : integer) ; var adr2,index : integer; typ : Tequipement; @@ -4094,13 +4180,13 @@ var suiv1,indexBranche_det1,indexBranche_det2,branche_det2,branche_det1, // aiguillage en pointe? - if afdeb then afficheDebug('Aig_suiv('+intToSTR(prec)+','+intToSTR(suiv)+')',clOrange); + if afdeb then afficheDebug('250. Aig_suiv('+intToSTR(prec)+','+intToSTR(suiv)+')',clOrange); aig_ext(suiv,'P',suiv_pointe,type_tmp); if (suiv_pointe=prec) and ((typ=aig) or (typ=triple)) then begin // faire le droit - if afdeb then afficheDebug('Aig '+intToSTR(suiv)+' pris en pointe droit',clyellow); + if afdeb then afficheDebug('251. Aig '+intToSTR(suiv)+' test en pointe droit',clyellow); type_Dernier:=aig; aig_ext(suiv,'D',suiv_2,type_tmp); if type_tmp<>'Z' then aig_suiv(suiv,suiv_2) else @@ -4112,11 +4198,11 @@ var suiv1,indexBranche_det1,indexBranche_det2,branche_det2,branche_det1, if afdeb then afficheDebug('trouvé ',clLime); exit; end; - if afdeb then afficheDebug('trouvé '+intToSTR(suiv_2)+' mais pas attendu',clyellow); + if afdeb then afficheDebug('trouvé '+intToSTR(suiv_2)+' mais pas attendu('+intToSTR(det2)+')',clyellow); end; // faire le dévié - if afdeb then afficheDebug('Aig '+intToSTR(suiv)+' pris en pointe dévié',clyellow); + if afdeb then afficheDebug('252.Aig '+intToSTR(suiv)+' test en pointe dévié',clyellow); type_Dernier:=aig; aig_ext(suiv,'S',suiv_2,type_tmp); if type_tmp<>'Z' then aig_suiv(suiv,suiv_2) else @@ -4128,13 +4214,13 @@ var suiv1,indexBranche_det1,indexBranche_det2,branche_det2,branche_det1, if afdeb then afficheDebug('trouvé ',clLime); exit; end; - if afdeb then afficheDebug('trouvé '+intToSTR(suiv_2)+' mais pas attendu',clyellow) + if afdeb then afficheDebug('trouvé '+intToSTR(suiv_2)+' mais pas attendu ('+intToSTR(det2)+')',clyellow) end; // si triple faire S2 if typ=triple then begin - if afdeb then afficheDebug('Aig triple'+intToSTR(suiv)+' pris en pointe dévié2',clyellow); + if afdeb then afficheDebug('Aig triple'+intToSTR(suiv)+' test en pointe dévié2',clyellow); type_Dernier:=aig; aig_ext(suiv,'2',suiv_2,type_tmp); if type_tmp<>'Z' then aig_suiv(suiv,suiv_2) else @@ -4146,19 +4232,19 @@ var suiv1,indexBranche_det1,indexBranche_det2,branche_det2,branche_det1, if afdeb then afficheDebug('trouvé ',clLime); exit; end; - if afdeb then afficheDebug('trouvé '+intToSTR(suiv_2)+' mais pas attendu',clyellow) + if afdeb then afficheDebug('trouvé '+intToSTR(suiv_2)+' mais pas attendu('+intToSTR(det2)+')',clyellow) end; end; end else begin - // aiguillage en talon ou tjd + // aiguillage en talon ou tjd ou croisement type_Dernier:=aig; if (typ=aig) or (typ=triple) then begin - if afdeb then afficheDebug('Aig '+intToSTR(suiv)+' pris en talon',clyellow); + if afdeb then afficheDebug('Aig '+intToSTR(suiv)+' test en talon',clyellow); aig_ext(suiv,'P',suiv_2,type_tmp); if type_tmp<>'Z' then aig_suiv(suiv,suiv_2) else @@ -4170,7 +4256,7 @@ var suiv1,indexBranche_det1,indexBranche_det2,branche_det2,branche_det1, if afdeb then afficheDebug('trouvé ',clLime); exit; end; - if afdeb then afficheDebug('trouvé '+intToSTR(suiv_2)+' mais pas attendu',clyellow) + if afdeb then afficheDebug('trouvé '+intToSTR(suiv_2)+' mais pas attendu('+intToSTR(det2)+')',clyellow) end; end; @@ -4191,7 +4277,7 @@ var suiv1,indexBranche_det1,indexBranche_det2,branche_det2,branche_det1, if afdeb then afficheDebug('trouvé sur D',clLime); exit; end; - if afdeb then afficheDebug('trouvé '+intToSTR(suiv_2)+' mais pas attendu',clyellow) + if afdeb then afficheDebug('trouvé '+intToSTR(suiv_2)+' mais pas attendu('+intToSTR(det2)+')',clyellow) end; aig_ext(suiv,'S',suiv_2,type_tmp); @@ -4204,7 +4290,7 @@ var suiv1,indexBranche_det1,indexBranche_det2,branche_det2,branche_det1, if afdeb then afficheDebug('trouvé sur S',clLime); exit; end; - if afdeb then afficheDebug('trouvé '+intToSTR(suiv_2)+' mais pas attendu',clyellow) + if afdeb then afficheDebug('trouvé '+intToSTR(suiv_2)+' mais pas attendu('+intToSTR(det2)+')',clyellow) end; end; @@ -4225,7 +4311,7 @@ var suiv1,indexBranche_det1,indexBranche_det2,branche_det2,branche_det1, if afdeb then afficheDebug('trouvé sur D',clLime); exit; end; - if afdeb then afficheDebug('trouvé '+intToSTR(suiv_2)+' mais pas attendu',clyellow) + if afdeb then afficheDebug('trouvé '+intToSTR(suiv_2)+' mais pas attendu ('+intToSTR(det2)+')',clyellow) end; aig_ext(suiv,'S',suiv_2,type_tmp); @@ -4238,7 +4324,29 @@ var suiv1,indexBranche_det1,indexBranche_det2,branche_det2,branche_det1, if afdeb then afficheDebug('trouvé sur S',clLime); exit; end; - if afdeb then afficheDebug('trouvé '+intToSTR(suiv_2)+' mais pas attendu',clyellow) + if afdeb then afficheDebug('trouvé '+intToSTR(suiv_2)+' mais pas attendu('+intToSTR(det2)+')',clyellow) + end; + end; + + if typ=crois then + begin + if afdeb then afficheDebug('crois '+intToSTR(suiv),clyellow); + + if aiguillage[index].ADroit=prec then begin suiv_2:=aiguillage[index].Ddroit;type_tmp:=aiguillage[index].DdroitB;end; + if aiguillage[index].DDroit=prec then begin suiv_2:=aiguillage[index].Adroit;type_tmp:=aiguillage[index].AdroitB;end; + if aiguillage[index].ADevie=prec then begin suiv_2:=aiguillage[index].Ddevie;type_tmp:=aiguillage[index].DdevieB;end; + if aiguillage[index].DDevie=prec then begin suiv_2:=aiguillage[index].ADevie;type_tmp:=aiguillage[index].AdevieB;end; + + if type_tmp<>'Z' then aig_suiv(suiv,suiv_2) else + begin + trouve:=(suiv_2=det2); + if trouve then + begin + dernier:=suiv; + if afdeb then afficheDebug('trouvé ',clLime); + exit; + end; + if afdeb then afficheDebug('trouvé '+intToSTR(suiv_2)+' mais pas attendu ('+intToSTR(det2)+')',clyellow) end; end; end; @@ -4247,10 +4355,13 @@ var suiv1,indexBranche_det1,indexBranche_det2,branche_det2,branche_det1, begin // trouver les éléments du précédent - afdeb:=TraceListe ; + afdeb:=TraceListe ; it:=0; if afdeb then afficheDebug('Det_contigu '+intToSTR(det1)+' '+intToSTr(det2),clyellow); - trouve_element(det1,det,1); // branche_trouve IndexBranche_trouve + + tp:=det; + if det1=0 then tp:=buttoir; + trouve_element(det1,tp,1); // branche_trouve IndexBranche_trouve if IndexBranche_trouve=0 then begin if NivDebug=3 then AfficheDebug('Element '+intToSTR(det1)+' non trouvé',clred); @@ -4259,7 +4370,9 @@ begin indexBranche_det1:=IndexBranche_trouve; branche_det1:=branche_trouve; - trouve_element(det2,det,1); // branche_trouve IndexBranche_trouve + tp:=det; + if det2=0 then tp:=buttoir; + trouve_element(det2,tp,1); // branche_trouve IndexBranche_trouve if IndexBranche_trouve=0 then begin if NivDebug=3 then AfficheDebug('Element '+intToSTR(actuel)+' non trouvé',clred); @@ -4323,7 +4436,7 @@ begin if trouve then begin dernier:=det1; - type_dernier:=det; + if dernier=0 then type_dernier:=buttoir else type_dernier:=det; if afdeb then afficheDebug('ok4',ClLime); end; end; @@ -4396,7 +4509,7 @@ begin else begin Adr:=AdrFonc;TypeGen:=BtypeFonc;end; if Adr>9990 then typeGen:=det; - if (NivDebug=3) then AfficheDebug('trouvé '+intToSTR(Adr)+' '+intToSTR(BTypeToNum(typeGen)),clorange); + if (NivDebug=3) then AfficheDebug('trouvé '+intToSTR(Adr)+' '+BTypeToNum(typeGen),clorange); AdrPrec:=AdrFonc;BtypePrec:=BtypeFonc; AdrFonc:=Adr;BtypeFonc:=typeGen; i:=i+1; @@ -4410,8 +4523,8 @@ begin end; -// renvoie l'adresse du détecteur suivant des deux éléments -// les aiguillages doivent être ouverts entre El1 et el2 +// renvoie l'adresse du détecteur suivant les deux éléments +// les aiguillages doivent être correctement positionnés entre El1 et el2 // El1 et El2 peuvent être séparés par des aiguillages, mais de pas plus de 3 détecteurs // en sortie : 9999= det1 ou det2 non trouvé // 9996 : non trouvé @@ -4425,7 +4538,7 @@ var IndexBranche_det1,IndexBranche_det2,branche_trouve_det1,branche_trouve_det2, begin if NivDebug>=2 then - AfficheDebug('Proc Detecteur_suivant_EL '+intToSTR(el1)+','+intToSTR(BTypeToNum(Typedet1))+'/'+intToSTR(el2)+','+intToSTR(BTypeToNum(Typedet2))+'-------------------------',clLime); + AfficheDebug('Proc Detecteur_suivant_EL '+intToSTR(el1)+','+BTypeToNum(Typedet1)+'/'+intToSTR(el2)+','+BTypeToNum(Typedet2)+'-------------------------',clLime); if (el1>9000) or (el2>9000) then begin if NivDebug=3 then AfficheDebug('paramètres incorrects >9000',clred); @@ -4498,11 +4611,7 @@ begin if TypeGen=det then inc(N_Det); if NivDebug=3 then begin - s:='613 : trouvé='+intToSTR(Adr); - case typeGen of - det : s:=s+' detecteur'; - aig : s:=s+' aiguillage'; - end; + s:='613 : trouvé='+intToSTR(Adr)+BTypeToNum(typeGen); AfficheDebug(s,clYellow); end; @@ -4536,13 +4645,8 @@ begin if NivDebug=3 then begin - s:='614 : trouvé='+intToSTR(Adr); - case typeGen of - det : s:=s+' detecteur'; - aig : s:=s+' aiguillage'; - buttoir : s:=s+' buttoir'; - end; - AfficheDebug(s,clorange); + s:='615 : trouvé='+intToSTR(Adr)+BTypeToNum(typeGen); + AfficheDebug(s,clorange); end; AdrPrec:=AdrFonc;TypePrec:=TypeFonc; @@ -5215,7 +5319,7 @@ begin inc(i); repeat dec(i); - trouve:=(event_det_tick[i].etat=etat) and (event_det_tick[i].detecteur=Adr) ; + trouve:=(event_det_tick[i].etat=etat) and (event_det_tick[i].Adresse=Adr) and (event_det_tick[i].modele=det); until (trouve or (i=0)); if trouve then begin @@ -5245,7 +5349,7 @@ begin end; -// présence train précédent les 3 cantons du signal (soit 4 feux avant) +// présence train précédent les 3 cantons du signal (Nb_cantons_Sig) function PresTrainPrec(Adresse : integer) : boolean; var AdrSuiv,prec,ife,actuel,i,j,ifd, @@ -5258,13 +5362,13 @@ begin i:=Index_feu(adresse); if (i=0) then begin - Affiche('Erreur 605 - feu '+IntToSTR(adresse)+' non trouvé',clred); AfficheDebug('Erreur 605 - feu '+IntToSTR(adresse)+' non trouvé',clred); + Affiche('Erreur 605 - feu '+IntToSTR(adresse)+' non trouvé',clred); PresTrainPrec:=false; end; Nfeux:=0; - NFeuxMax:=3; // nombre de feux à trouver (nombre de cantons) + NFeuxMax:=Nb_cantons_Sig; // nombre de feux à trouver (nombre de cantons) Pres_train:=FALSE; ife:=1; // index feu de 1 à 4 pour explorer les 4 détecteurs d'un feu repeat @@ -5295,6 +5399,8 @@ begin Typeprec:=feux[i].Btype_suiv4; end; // détecteur sur le signal courant + pres_Train:=Detecteur[actuel].etat; + TypeActuel:=det; if actuel=0 then begin @@ -5313,8 +5419,16 @@ begin malpositionne:=(AdrSuiv=0) or (AdrSuiv>9990); if malpositionne then begin - if (nivDebug=3) then AfficheDebug('Aiguille en talon mal positionné',clYellow); + if AdrSuiv=0 then Pres_Train:=Pres_Train or Detecteur[actuel].etat; PresTrainPrec:=Pres_train; + if (nivDebug=3) then + begin + if (AdrSuiv>9990) then AfficheDebug('Aiguille en talon mal positionné',clYellow); + if AdrSuiv=0 then AfficheDebug('Buttoir',clyellow); + if Pres_train then AfficheDebug('Présence train de '+intToSTR(actuel)+' à '+intToSTR(dernierdet),clyellow) + else AfficheDebug('Absence train de '+intToSTR(actuel)+' à '+intToSTR(dernierdet),clyellow); + end; + exit; end; if not(malpositionne) then @@ -5324,7 +5438,7 @@ begin if typeactuel=det then begin - Pres_train:=MemZone[actuel,dernierdet] or Pres_Train; + Pres_train:=MemZone[actuel,dernierdet] or Pres_Train or Detecteur[actuel].etat; PresTrainPrec:=Pres_train; if Pres_Train then begin @@ -5341,7 +5455,7 @@ begin AdrFeu:=feux[ifd].adresse; // adresse du feu if (AdrFeu=adresse) then // si on ne reboucle sur le même signal dont on cherche le suivant begin - AdrFeu:=0;j:=10; // on ne trouve pas de suivant + AdrFeu:=0; // on ne trouve pas de suivant PresTrainPrec:=false; exit; end; @@ -5352,13 +5466,13 @@ begin inc(Nfeux); j:=0; s:='Trouvé feu ('+IntToSTR(nfeux)+'/'+intToSTR(NFeuxMax)+') '+IntToSTR(AdrFeu); - if (NivDebug>0) And Pres_Train then AfficheDebug(s+' et mémoire de zone à 1',clyellow); + if (NivDebug>0) And Pres_Train then AfficheDebug(s+' et mémoire de zone à 1',clOrange); if (NivDebug>0) And (not(Pres_Train)) then AfficheDebug(s+' et mémoire de zone à 0',clOrange); if nFeux=NFeuxMax then begin PresTrainPrec:=Pres_train; exit; - end; + end; end else begin @@ -5368,11 +5482,11 @@ begin end; end; end; - end; + end; until (j=10) or malpositionne or (nfeux>=NFeuxMax); // on arrete jusqu'à trouver un signal ou si on va trop loin (10 itérations) inc(ife); until ife>=5; - if (NivDebug>0) then AfficheDebug('Pas trouvé de signal suivant au '+intToSTR(adresse),clyellow); + if (NivDebug>0) then AfficheDebug('606. Pas trouvé de signal suivant au '+intToSTR(adresse),clyellow); PresTrainPrec:=Pres_train; end; @@ -5425,8 +5539,9 @@ begin if (modele=2) then //or (feux[i].check<>nil) then // si carré violet begin //AfficheDebug('Feux à 2 feux',CLOrange); - // si aiguillage après signal mal positionnées - if carre_signal(AdrFeu) then + // si aiguillage après signal mal positionnées ou pas de train avant le signal + PresTrain:=PresTrainPrec(AdrFeu); + if carre_signal(AdrFeu) or not(PresTrain) then begin Maj_Etat_Signal(AdrFeu,violet); Envoi_signauxCplx; @@ -5472,7 +5587,7 @@ begin begin if AffSignal then AfficheDebug('Présence train après signal'+intToSTR(AdrFeu)+' -> sémaphore ou carré',clYellow); if testBit(feux[index].EtatSignal,carre)=FALSE then Maj_Etat_Signal(AdrFeu,semaphore); - end // zizi + end else begin Aig:=Aiguille_deviee(Adrfeu); @@ -5632,7 +5747,7 @@ end; // calcul des zones depuis le tableau des fronts descendants des évènements détecteurs // transmis dans le tableau Event_det procedure calcul_zones; -var AdrFeu,AdrDetFeu,Nbre,i,det1,det2,det3,AdrSuiv,AdrPrec,Prev,det_suiv : integer ; +var AdrFeu,AdrDetFeu,Nbre,i,n,det1,det2,det3,det4,AdrSuiv,AdrPrec,Prev,det_suiv : integer ; TypeSuiv : tEquipement; s : string; begin @@ -5641,33 +5756,26 @@ begin FormDebug.MemoEvtDet.lines.add('Le nouveau détecteur est '+IntToSTR(det3)) ; if TraceListe or dupliqueEvt then AfficheDebug('Le nouveau détecteur est '+IntToSTR(det3),clyellow) ; - // évaluer d'abord la route du nouveau détecteur sur tous les tableau déja rempli de 2 éléments + for i:=1 to N_trains do begin Nbre:=event_det_train[i].NbEl ; // Nombre d'éléments du tableau courant exploré + + // évaluer d'abord la route du nouveau détecteur sur tous les tableau déja rempli de 2 éléments if Nbre=2 then begin - if TraceListe or (NivDebug=3) then AfficheDebug('traitement Train n°'+intToSTR(i)+' 2 détecteurs',clyellow); + if TraceListe or (NivDebug=3) then AfficheDebug('Traitement Train n°'+intToSTR(i)+' 2 détecteurs',clyellow); det1:=event_det_train[i].det[1]; det2:=event_det_train[i].det[2]; - //det_suiv:=detecteur_suivant_el(det1,det,det2,det,1); det_suiv:=det_suiv_cont(det1,det2); - - {s:=intToSTr(det_suiv)+'=Det_suiv_cont('+intToSTR(det1)+','+intToSTR(det2)+')'; - FormDebug.MemoEvtDet.lines.add(s); - if TraceListe or (NivDebug=3) then afficheDebug(s,clyellow);} - - //Det_Adj(det2); // renvoie les adresses des détecteurs adjacents au détecteur "det1" résultat dans adj1 et adj2 - //s:='adjacents='+intToSTR(adj1)+' '+intToSTR(adj2); - //s:='Suivant='+intToSTR(det_suiv); - //FormDebug.MemoEvtDet.lines.add(s); - //if TraceListe or (NivDebug=3) then afficheDebug(s,clyellow); - if det_suiv=det3 then begin if TraceListe then AfficheDebug(' la route est valide',clyellow); - AdrSuiv:=detecteur_suivant_el(det2,det,det3,det,1); // ici on cherche le suivant à det2 det3, algo=1 + // ici on cherche le suivant à det2 det3, algo=1 + ncrois:=0; + AdrSuiv:=detecteur_suivant_el(det2,det,det3,det,1); + if (Adrsuiv>=9996) then begin Affiche('Erreur 1500 : pas de suivant sur la route de '+intToSTR(det2)+' à '+intToSTR(det3),clRed); @@ -5675,26 +5783,28 @@ begin end else begin - s:='route traitée de '+intToSTR(det2)+' à '+IntToSTR(det3)+' Mem '+intToSTR(det3)+' à '+IntToSTR(Adrsuiv); - FormDebug.MemoEvtDet.lines.add(s); - if traceListe then AfficheDebug(s,clyellow); - With FormDebug.RichEdit do - begin - s:='train '+IntToSTR(i)+' '+intToStr(det2)+' à '+intToStr(det3)+' => Mem '+IntToSTR(det3)+' à '+IntTOStr(AdrSuiv); - Lines.Add(s); - index_couleur:=((i - 1) mod NbCouleurTrain) +1; - RE_ColorLine(FormDebug.RichEdit,lines.count-1,CouleurTrain[index_couleur]); - end; - if TraceListe then AfficheDebug(s,clyellow); - Affiche(s,clyellow); - if AffAigDet then AfficheDebug(s,clyellow); - if (det2200 then begin n:=1;TrainZone[i].Nbre:=n;end; + TrainZone[i].Zone[n].det1:=det3; + TrainZone[i].Zone[n].det2:=AdrSuiv; + TrainZone[i].Nbre:=n; + // zone suivante en prévision + det4:=detecteur_suivant_EL(det3,det,AdrSuiv,det,1); + TrainPrevZone[i][1]:=det4; + end; + event_act(det2,det3,0,''); // désactivation zone event_act(det3,AdrSuiv,1,''); // activation zone + end else begin @@ -5710,16 +5820,42 @@ begin event_det_train[i].det[2]:=det3; event_det_train[i].NbEl:=2; + + // la route en avant croise-t-elle un croisement? + if ncrois<>0 then + begin + // FormDebug.RichEdit.Lines.Add('Croisement détecté'); + ncrois:=0; + end; + + + // affichages + s:='route traitée de '+intToSTR(det2)+' à '+IntToSTR(det3)+' '+intToSTR(det3)+' à '+IntToSTR(Adrsuiv); + FormDebug.MemoEvtDet.lines.add(s); + if traceListe then AfficheDebug(s,clyellow); + With FormDebug.RichEdit do + begin + s:='train '+IntToSTR(i)+' '+intToStr(det2)+' à '+intToStr(det3)+' => '+IntToSTR(det3)+' à '+IntToStr(AdrSuiv); + s:=s+' Prev='+intToSTR(TrainPrevZone[i][1]); + Lines.Add(s); + index_couleur:=((i - 1) mod NbCouleurTrain) +1; + RE_ColorLine(FormDebug.RichEdit,lines.count-1,CouleurTrain[index_couleur]); + end; + if TraceListe then AfficheDebug(s,clyellow); + Affiche(s,clyellow); + if AffAigDet then AfficheDebug(s,clyellow); + with FormDebug.MemoEvtDet do begin - lines.add('1.Nouveau Tampon train '+intToStr(i)+'--------'); + s:='1.Nouveau Tampon train '+intToStr(i)+'--------'; + lines.add(s); lines.add(intToSTR(event_det_train[i].det[1])); lines.add(intToSTR(event_det_train[i].det[2])); end; if TraceListe or dupliqueEvt then begin - AfficheDebug('1.Nouveau Tampon train '+intToStr(i)+'--------',clyellow); + AfficheDebug(s,clyellow); AfficheDebug(intToSTR(event_det_train[i].det[1]),clyellow); AfficheDebug(intToSTR(event_det_train[i].det[2]),clyellow); end; @@ -5730,28 +5866,46 @@ begin if ModeCouleurCanton=0 then zone_TCO(det3,AdrSuiv,1) else zone_TCO(det3,AdrSuiv,2); // affichage avec la couleur de index_couleur du train end; - event_det_train[i].prev:=prev; // prévisionnel Maj_feux; Maj_feux; Maj_feux; exit; // sortir absolument end; end - else if TraceLIste then AfficheDebug(' la route est invalide',clyellow); - event_det_train[i].prev:=prev; // prévisionnel - - end; + else + begin + if TraceListe then AfficheDebug(' la route est invalide',clyellow); + if event_det_train[i].det[2]=det3 then + begin + s:='Rebond dét. '+intToSTR(det3)+' déjà affecté au train '+IntToSTR(i); + FormDebug.MemoEvtDet.lines.add(s); + if dupliqueEvt then AfficheDebug(s,clyellow); + exit; // sortir + end; + end; + end; end; - // traiter pour les cas avec 1 élément for i:=1 to N_trains do begin Nbre:=event_det_train[i].NbEl ; // Nombre d'éléments du tableau courant exploré + + // traiter pour les cas avec 1 élément if Nbre=1 then begin if traceListe then AfficheDebug('traitement Train n°'+intToSTR(i)+' 1 détecteur',clyellow); - // vérifier si l'élément du tableau et le nouveau sont contigus + + // si le nouveau et l'ancien sont identiques, c'est un rebond det1:=event_det_train[i].det[1]; + if det1=det3 then + begin + s:='Rebond dét. '+intToSTR(det3)+' déjà affecté au train '+IntToSTR(i); + FormDebug.MemoEvtDet.lines.add(s); + if dupliqueEvt then AfficheDebug(s,clyellow); + exit; // sortir + end; + + // vérifier si l'élément du tableau et le nouveau sont contigus Det_Adj(det1); // renvoie les adresses des détecteurs adjacents au détecteur "det1" résultat dans adj1 et adj2 if (Adj1=det3) or (Adj2=det3) then begin @@ -5780,7 +5934,7 @@ begin end; end; end; - + // Nombre d'éléments à 0 : ici c'est un nouveau train donc créer un train, donc un tableau if N_Trains>=Max_Trains then begin @@ -5819,24 +5973,23 @@ begin // si on démarre d'un buttoir if buttoir_adjacent(det3) then begin - if TraceListe then AfficheDebug('detection démarrage depuis détecteur '+IntToSTR(det3)+' buttoir',clyellow); + if TraceListe then AfficheDebug('Détection démarrage depuis détecteur '+IntToSTR(det3)+' buttoir',clyellow); event_det_train[N_trains].det[1]:=0; event_det_train[N_trains].det[2]:=det3; event_det_train[N_trains].NbEl:=2; - + s:='3. Nouveau Tampon train '+intToStr(N_Trains)+'--------'; with FormDebug.MemoEvtDet do begin - lines.add('3. Nouveau Tampon train '+intToStr(N_Trains)+'--------'); + lines.add(s); lines.add(intToSTR(event_det_train[N_Trains].det[1])); lines.add(intToSTR(event_det_train[N_Trains].det[2])); end; if dupliqueEvt then begin - AfficheDebug('3. Nouveau Tampon train '+intToStr(N_Trains)+'--------',clyellow); + AfficheDebug(s,clyellow); AfficheDebug(intToSTR(event_det_train[N_Trains].det[1]),clyellow); AfficheDebug(intToSTR(event_det_train[N_Trains].det[2]),clyellow); end; - end else @@ -5910,7 +6063,7 @@ var i,v,va,etatAct,Af,Ao,Access,sortie : integer; Ts : TAccessoire; begin // vérifier si l'actionneur en évènement a été déclaré pour réagir - if AffActionneur then AfficheDebug('Act/Det '+intToSTR(Adr)+'='+intToSTR(etat),clyellow); + if AffAigDet then AfficheDebug('Act/Det '+intToSTR(Adr)+'='+intToSTR(etat),clyellow); //Affiche(intToSTR(adr)+'/'+intToSTR(adr2)+' '+intToSTR(etat),clyellow); for i:=1 to maxTablo_act do begin @@ -6042,9 +6195,8 @@ begin if AffAigDet then begin //s:='Evt Det '+intToSTR(adresse)+'='+intToSTR(etat01); - s:='Tick='+IntToSTR(tick)+' Evt Det='+IntToSTR(adresse)+'='+intToSTR(etat01); - Affiche(s,clyellow); - if not(TraceListe) then AfficheDebug(s,clyellow); + s:='Tick='+IntToSTR(tick)+' Evt Det='+IntToSTR(adresse)+'='+intToSTR(etat01)+' Train='+train; + AfficheDebug(s,clyellow); end; ancien_detecteur[Adresse]:=detecteur[Adresse].etat; @@ -6061,7 +6213,8 @@ begin inc(N_Event_tick); event_det_tick[N_event_tick].tick:=tick; - event_det_tick[N_event_tick].detecteur:=Adresse; + event_det_tick[N_event_tick].adresse:=Adresse; + event_det_tick[N_event_tick].modele:=det; event_det_tick[N_event_tick].etat:=etat01; if (n_Event_tick mod 10) =0 then affiche_memoire; // Affiche('stockage de '+intToSTR(N_event_tick)+' '+IntToSTR(Adresse)+' à '+intToSTR(etat01),clyellow); @@ -6080,7 +6233,7 @@ begin begin AdrSuiv:=Feux[i].Adr_el_suiv1; TypeSuiv:=Feux[i].Btype_suiv1; - if AffSignal then AfficheDebug('Pour Feu '+intToSTR(AdrFeu)+' detecteursuivant('+intToSTR(AdrSuiv)+','+IntToSTR(BTypeToNum(typeSuiv))+','+intToSTR(AdrDetFeu)+',1)',clyellow); + if AffSignal then AfficheDebug('Pour Feu '+intToSTR(AdrFeu)+' detecteursuivant('+intToSTR(AdrSuiv)+','+BTypeToNum(typeSuiv)+','+intToSTR(AdrDetFeu)+',1)',clyellow); AdrPrec:=detecteur_suivant(AdrSuiv,typeSuiv,AdrDetFeu,det,1) ; // détecteur précédent le feu, algo 1 if AdrPrec=0 then begin @@ -6199,7 +6352,8 @@ begin if (n_Event_tick mod 10) =0 then affiche_memoire; inc(N_Event_tick); event_det_tick[N_event_tick].tick:=tick; - event_det_tick[N_event_tick].aiguillage:=adresse; + event_det_tick[N_event_tick].adresse:=adresse; + event_det_tick[N_event_tick].modele:=aig; event_det_tick[N_event_tick].etat:=pos; // Mettre à jour le TCO @@ -6252,12 +6406,12 @@ begin //AfficheDebug(intToSTR(adresse),clred); if debug_dec_sig and (acc=feu) then AfficheDebug('Tick='+IntToSTR(Tick)+' signal '+intToSTR(adresse)+' '+intToSTR(pilotage),clorange); s:=chaine_CDM_Acc(adresse,pilotage); - envoi_CDM(s); + envoi_CDM(s); if (acc=feu) and not(Raz_Acc_signaux) then exit; if debug_dec_sig and (acc=feu) then AfficheDebug('Tick='+IntToSTR(Tick)+' signal '+intToSTR(adresse)+' 0',clorange); sleep(50); s:=chaine_CDM_Acc(adresse,0); - envoi_CDM(s); + envoi_CDM(s); event_aig(adresse,pilotage); exit; end; @@ -6274,18 +6428,19 @@ begin s:=checksum(s); if debug_dec_sig and (acc=feu) then AfficheDebug('Tick='+IntToSTR(Tick)+' signal '+intToSTR(adresse)+' '+intToSTR(pilotage),clorange); envoi(s); // envoi de la trame et attente Ack + event_aig(adresse,pilotage); // si l'accessoire est un feu et sans raz des signaux, sortir if (acc=feu) and not(Raz_Acc_signaux) then exit; // si aiguillage, faire une temporisation //if (index_feu(adresse)=0) or (Acc=aig) then - if Acc=AigP then + if Acc=AigP then begin temps:=aiguillage[index].temps;if temps=0 then temps:=4; if portCommOuvert or parSocketLenz then tempo(temps); end; - //sleep(50); + //sleep(50); // pilotage à 0 pour éteindre le pilotage de la bobine du relais s:=#$52+Char(groupe)+char(fonction or $80); // désactiver la sortie s:=checksum(s); @@ -6658,7 +6813,7 @@ begin end; {$J-} -// initialisation de la comm USB +// initialisation de la comm USB pour l'interface Xpressnet procedure connecte_USB; var i,j : integer; begin @@ -6674,7 +6829,7 @@ begin confStCom:=copy(portCom,i+1,j-i-1); Settings:=ConfStCom; // COMx:vitesse,n,8,1 - Affiche('Demande ouverture COM'+intToSTR(NumPort)+':'+ConfStCom+' protocole '+IntToSTR(protocole),CLYellow); + Affiche('Demande ouverture interface Xpressnet COM'+intToSTR(NumPort)+':'+ConfStCom+' protocole '+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; @@ -6980,7 +7135,39 @@ begin Lance_CDM:=true; end; -// démarrage principal du programpe signaux_complexes +Procedure Raz_tout; +var i : integer; +begin + N_Event_tick:=0; + N_event_det:=0; + N_trains:=0; + Formprinc.LabelNbTrains.caption:=IntToSTR(N_trains); + for i:=1 to Max_Trains do Event_det_Train[i].NbEl:=0; + for i:=1 to 20 do TrainZone[i].Nbre:=0; + // initialisation de la chronologie des évènements détecteurs + for i:=0 to Max_Event_det_tick do + begin + event_det_tick[i].adresse:=-1; + event_det_tick[i].modele:=rien; + event_det_tick[i].etat:=-1; + event_det_tick[i].traite:=false ; // non traité + end; + + i_simule:=0; + FormDebug.MemoEvtDet.Clear; + FormDebug.Richedit.Clear; + { ralentit au démarrage + for i:=1 to NbreFeux do + begin + typeFeu:=feux[i].aspect; + if TypeFeu=2 then feux[i].EtatSignal:=violet_F; + if TypeFeu=3 then feux[i].EtatSignal:=semaphore_F; + if (TypeFeu>3) and (TypeFeu<10) then feux[i].EtatSignal:=carre_F; + envoi_signal(feux[i].adresse); + end; } +end; + +// démarrage principal du programme signaux_complexes procedure TFormPrinc.FormCreate(Sender: TObject); var i : integer; s : string; @@ -6994,6 +7181,7 @@ begin Srvc_Act:=true; Srvc_PosTrain:=false; Srvc_sig:=false; + confasauver:=false; config_modifie:=false; AF:='Client TCP-IP CDM Rail ou USB - système XpressNet - Version '+Version+sousVersion; @@ -7013,6 +7201,7 @@ begin FormDebug.Caption:=AF+' debug'; N_Trains:=0; NivDebug:=0; + ncrois:=0; debugtrames:=false; algo_Unisemaf:=1; @@ -7051,9 +7240,7 @@ begin // si CDM n'est pas connecté, on ouvre la liaison vers la centrale if not(CDM_connecte) then begin - Affiche('CDM absent',clYellow); // ouverture par USB - Affiche('Demande connexion à la centrale par USB protocole XpressNet',clyellow); connecte_USB; if not(portCommOuvert) then begin @@ -7061,7 +7248,7 @@ begin // Initialisation de la comm socket LENZ if AdresseIP<>'0' then begin - Affiche('Demande connexion à la centrale par Ethernet protocole XpressNet',clyellow); + Affiche('Demande ouverture interface XpressNet par Ethernet '+AdresseIP+':'+intToSTR(port),clyellow); ClientSocketLenz.port:=port; ClientSocketLenz.Address:=AdresseIP; ClientSocketLenz.Open; @@ -7082,7 +7269,7 @@ begin ButtonEcrCV.Enabled:=false; ButtonLitCV.Enabled:=false; LireunfichierdeCV1.enabled:=false; - end ; + end; // Initialisation des images des signaux NbreImagePLigne:=Formprinc.ScrollBox1.Width div (largImg+5); @@ -7094,17 +7281,8 @@ begin end; Tempo_init:=5; // démarre les initialisation des signaux et des aiguillages dans 0,5 s - // initialisation de la chronologie des évènements détecteurs - for i:=0 to Max_Event_det_tick do - begin - event_det_tick[i].aiguillage:=-1; - event_det_tick[i].detecteur:=-1; - event_det_tick[i].etat:=-1; - event_det_tick[i].aiguillage:=-1; - event_det_tick[i].actionneur:=-1; - event_det_tick[i].traite:=false ; // non traité - end; - + raz_tout; + I_Simule:=0; tick:=0; N_Event_tick:=0 ; // dernier index @@ -7128,16 +7306,18 @@ begin Affiche('Fin des initialisations',clyellow); LabelEtat.Caption:=' '; Affiche_memoire; - - { - aiguillage[index_aig(1)].position:=const_droit; + + { + aiguillage[index_aig(1)].position:=const_devie; aiguillage[index_aig(3)].position:=const_devie; + aiguillage[index_aig(4)].position:=const_devie; aiguillage[index_aig(5)].position:=const_droit; + aiguillage[index_aig(6)].position:=const_devie; aiguillage[index_aig(7)].position:=const_devie; aiguillage[index_aig(8)].position:=const_devie; aiguillage[index_aig(12)].position:=const_droit; aiguillage[index_aig(19)].position:=const_devie; - aiguillage[index_aig(20)].position:=const_devie; + aiguillage[index_aig(20)].position:=const_droit; aiguillage[index_aig(21)].position:=const_droit; aiguillage[index_aig(26)].position:=const_droit; aiguillage[index_aig(27)].position:=const_droit; @@ -7145,10 +7325,14 @@ begin aiguillage[index_aig(31)].position:=const_devie; aiguillage[index_aig(25)].position:=const_droit; aiguillage[index_aig(9)].position:=const_droit; - i:=suivant_alg3(523,det,100,aig,1) ; - Affiche(intToSTR(i),clLime); - } - //det_suiv_cont(525,528) ; + + nivDebug:=3; + //i:=suivant_alg3(21,aig,26,aig,1) ; + //Affiche(intToSTR(i),clLime); + formDebug.Show; + traceListe:=true; + det_contigu(0,516,i,vide) ; + det_contigu(527,519,i,vide) ; } end; @@ -7173,24 +7357,26 @@ end; procedure TFormPrinc.FormClose(Sender: TObject; var Action: TCloseAction); begin Ferme:=true; + if portCommOuvert then begin portCommOuvert:=false;MSCommUSBLenz.Portopen:=false; end; portCommOuvert:=false; ClientSocketCDM.close; ClientSocketLenz.close; - if TCO_modifie then + if TCO_modifie then if MessageDlg('Le TCO a été modifié. Voulez vous le sauvegarder ?',mtConfirmation,[mbYes,mbNo],0)=mrYes then begin sauve_fichier_tco; ancienFormatTCO:=false; - end; + end; if config_modifie then if MessageDlg('La configuration a été modifiée. Voulez vous la sauvegarder ?',mtConfirmation,[mbYes,mbNo],0)=mrYes then sauve_config; - + if confasauver then sauve_config; if avecTCO then begin if ancienFormatTCO then sauve_fichier_tco; - end; + end; + Application.ProcessMessages; end; @@ -7198,24 +7384,34 @@ end; procedure init_aiguillages; var i,pos,index : integer; s : string; + model : Tequipement; begin - if portCommOuvert or parSocketLenz then + // positionnement des aiguillages meme si pas connecté à la centrale ou à CDM + // pour générer les evts de position + //Affiche('Positionnement aiguillages',cyan); + for i:=1 to MaxAcc do begin - Affiche('Positionnement aiguillages',cyan); - for i:=1 to maxaiguillage do + index:=index_aig(i); + + model:=aiguillage[index].modele; + if (model<>rien) and (model<>crois) then // si l'aiguillage existe et différent de croisement begin - index:=index_aig(i); - if aiguillage[index].modele<>rien then // si l'aiguillage existe + pos:=aiguillage[index].posInit; + if (pos=const_devie) or (pos=const_droit) then begin - pos:=aiguillage[index].posInit; s:='Init aiguillage '+intToSTR(i)+'='+intToSTR(pos); - if pos=const_devie then s:=s+' (dévié)' else s:=s+' (droit)'; + case pos of + const_devie : s:=s+' (dévié)'; + const_droit : s:=s+' (droit)'; + else + s:=s+' non positionné'; + end; Affiche(s,cyan); - pilote_acc(i,pos,aigP); - sleep(Tempo_Aig); - application.processMessages; + if pos<>const_inconnu then pilote_acc(i,pos,aigP); + if portCommOuvert or parSocketLenz or CDM_connecte then sleep(Tempo_Aig); + //application.processMessages; end; - end; + end; end; end; @@ -7349,21 +7545,23 @@ begin //while i_simule0 then + if Tablo_simule[I_simule].modele=det then begin - s:='Simulation '+intToSTR(I_simule)+' Tick='+IntToSTR(tick)+' det='+intToSTR(Tablo_simule[i_simule].detecteur)+'='+IntToSTR(Tablo_simule[i_simule].etat); - Event_Detecteur(Tablo_simule[i_simule].detecteur, Tablo_simule[i_simule].etat=1,''); // créer évt détecteur + s:='Simulation '+intToSTR(I_simule)+' Tick='+IntToSTR(tick)+' det='+intToSTR(Tablo_simule[i_simule].adresse)+'='+IntToSTR(Tablo_simule[i_simule].etat); + Event_Detecteur(Tablo_simule[i_simule].adresse, Tablo_simule[i_simule].etat=1,''); // créer évt détecteur StaticText.caption:=s; + //Affiche(s,clyellow); end; // evt aiguillage ? - if Tablo_simule[i_simule].aiguillage<>0 then + if Tablo_simule[I_simule].modele=aig then begin - s:='Simulation '+intToSTR(I_simule)+' Tick='+IntToSTR(tick)+' aig='+intToSTR(Tablo_simule[i_simule].aiguillage)+'='+IntToSTR(Tablo_simule[i_simule].etat); - Event_Aig(Tablo_simule[i_simule].Aiguillage,Tablo_simule[i_simule].etat); // créer évt aiguillage + s:='Simulation '+intToSTR(I_simule)+' Tick='+IntToSTR(tick)+' aig='+intToSTR(Tablo_simule[i_simule].adresse)+'='+IntToSTR(Tablo_simule[i_simule].etat); + Event_Aig(Tablo_simule[i_simule].Adresse,Tablo_simule[i_simule].etat); // créer évt aiguillage StaticText.caption:=s; + //Affiche(s,clyellow); end; end; @@ -7396,14 +7594,6 @@ begin end; end; -// bouton version centrale Lenz -procedure TFormPrinc.BoutVersionClick(Sender: TObject); -var s : string; -begin - s:=#$f0; - s:=checksum(s); - envoi(s); -end; // bouton de commande d'un accessoire procedure TFormPrinc.ButtonDroitClick(Sender: TObject); @@ -7543,19 +7733,6 @@ begin end; end; -procedure TFormPrinc.ButtonInfoClick(Sender: TObject); -begin - Affiche('Ce programme pilote des signaux complexes de façon autonome ou avec CDM rail ',ClYellow); - Affiche('En fonction des détecteurs mis à 1 ou 0 par des locomotives',ClYellow); - Affiche('en circulation sur le réseau',ClYellow); - Affiche('En vert : Trames envoyées à l''interface',ClWhite); - Affiche('En violet : Trames brutes reçues de l''interface',ClWhite); - Affiche('En rouge : erreurs et défauts',ClWhite); - Affiche('En orange : pilotage des signaux / erreurs mineures',ClWhite); - Affiche('En bleu : pilotage des aiguillages',ClWhite); - Affiche('En jaune : rétrosignalisation reçue depuis l''interface',ClWhite); -end; - procedure TFormPrinc.MenuConnecterUSBClick(Sender: TObject); begin Hors_tension2:=false; @@ -7626,7 +7803,7 @@ begin end; procedure TFormPrinc.Etatdesaiguillages1Click(Sender: TObject); -var i,j,index : integer; +var i,j,index,pos : integer; model : TEquipement; s : string; begin @@ -7635,19 +7812,24 @@ begin begin index:=index_aig(i); model:=aiguillage[index].modele ; - if model<>rien then + if (model<>rien) and (model<>crois) then begin s:='Aiguillage '+IntToSTR(i)+' : '; - if aiguillage[index].position=const_devie then s:=s+' (dévié)' ; - if aiguillage[index].position=const_droit then s:=s+' (droit)'; - if aiguillage[index].position=const_inconnu then s:=s+' inconnue'; - + pos:=aiguillage[index].position; + case pos of + const_devie : s:=s+' (dévié)' ; + const_droit : s:=s+' (droit)'; + const_inconnu : s:=s+' inconnue'; + else s:=s+' erreur ('+intToSTR(pos)+')'; + end; + if model=triple then // aig triple begin j:=aiguillage[index].AdrTriple; s:=s+' Aig '+IntToSTR(j)+': '+intToSTR(aiguillage[index_aig(j)].position); if aiguillage[index_aig(j)].position=1 then s:=s+' (dévié)' else s:=s+' (droit)'; end; + Affiche(s,clWhite); end; end; @@ -7665,32 +7847,38 @@ begin begin s:=IntToSTR(i)+' Adr='+IntToSTR(adr); if aiguillage[i].modele=aig then s:=s+' Pointe='; + + if (aiguillage[i].modele=crois) then + begin + s:=s+' CROI:'; + end; + if (aiguillage[i].modele=tjd) then begin s:=s+' TJD:'; s:=s+intToSTR(aiguillage[i].EtatTJD)+' états '; if aiguillage[i].inversionCDM=1 then s:=s+'(INV) '; - end; - if aiguillage[i].modele=tjs then + end; + if aiguillage[i].modele=tjs then begin s:=s+' TJS:'; if aiguillage[i].inversionCDM=1 then s:=s+'(INV) '; - end; + end; if aiguillage[i].modele=triple then s:=s+'/'+intToSTR(aiguillage[i].AdrTriple)+' Triple: Pointe='; - - if (aiguillage[i].modele=aig) or (aiguillage[i].modele=triple) then + + if (aiguillage[i].modele=aig) or (aiguillage[i].modele=triple) then begin s:=s+IntToSTR(aiguillage[i].APointe)+aiguillage[i].APointeB; s:=s+' Dévie='+IntToSTR(aiguillage[i].ADevie)+aiguillage[i].ADevieB+ ' Droit='+IntToSTR(aiguillage[i].ADroit)+aiguillage[i].ADroitB; - end; - if (aiguillage[i].modele=tjd) or (aiguillage[i].modele=tjs) then + end; + if (aiguillage[i].modele=tjd) or (aiguillage[i].modele=tjs) or (aiguillage[i].modele=crois) then begin s:=s+' Ddroit='+intToSTR(aiguillage[i].Ddroit)+aiguillage[i].DdroitB; s:=s+' Ddevie='+intToSTR(aiguillage[i].DDevie)+aiguillage[i].DdevieB; s:=s+' Adroit='+intToSTR(aiguillage[i].Adroit)+aiguillage[i].AdroitB; s:=s+' Adevie='+intToSTR(aiguillage[i].ADevie)+aiguillage[i].AdevieB; - if (aiguillage[i].modele=tjs) then + if (aiguillage[i].modele=tjs) then s:=s+' L='+IntToSTR(aiguillage[i].tjsInt)+aiguillage[i].tjsIntB; end; if aiguillage[i].modele=triple then s:=s+' Dévié2='+intToSTR(aiguillage[i].ADevie2)+aiguillage[i].ADevie2B; @@ -7875,7 +8063,7 @@ begin if pos('ERR=200',commandeCDM)<>0 then s:='Erreur CDM : réseau non chargé '; if pos('ERR=500',commandeCDM)<>0 then s:='Erreur CDM : serveur DCC non lancé '; if pos('ERR=300',commandeCDM)<>0 then s:='Erreur CDM : train non trouvé '; - j:=pos('MSG=',commandeCDM);if j<>0 then s:=s+copy(commandeCDM,j,i-j); + j:=pos('MSG CDM : ',commandeCDM);if j<>0 then s:=s+copy(commandeCDM,j,i-j); Affiche(s,clred); delete(commandeCDM,1,i); end; @@ -8016,7 +8204,8 @@ begin end; end; - // évènement détecteur + // évènement détecteur. Si det=1, Le nom du train est souvent _NONE + // si det=0 le nom du train est toujours _NONE posDT:=pos('CMDACC-ST_DT',commandeCDM); if posDT<>0 then begin @@ -8032,14 +8221,15 @@ begin train:=copy(commandeCDM,i+6,j-i-6); delete(commandeCDM,i,7); - //Affiche('Train=*'+Train+'*',clOrange); + //Affiche('Train='+Train,clOrange); i:=posEx('STATE=',commandeCDM,posDT);ss:=copy(commandeCDM,i+6,10); val(ss,etat,erreur); Delete(commandeCDM,i,7); if (train='_NONE') then train:=detecteur[Adr].train; + Event_detecteur(Adr,etat=1,train); + //Affiche(train,clYellow); //Affiche(IntToSTR(adr)+' '+IntToSTR(etat)+' '+train,clyellow); - if AfficheDet then Affiche('Rétro Détecteur '+intToSTR(adr)+'='+IntToStr(etat),clYellow); end ; // évènement signal - non stocké ni interprété @@ -8074,8 +8264,8 @@ begin Delete(commandeCDM,posAC,i-posAC); i:=pos(';',commandeCDM); if i<>0 then Delete(commandeCDM,1,i); - if AfficheDet then - Affiche('Actionneur AD='+intToSTR(adr)+' Nom='+intToSTR(name)+' Train='+train+' Etat='+IntToSTR(etat),clyellow); + if AffAigDet then + AfficheDebug('Actionneur AD='+intToSTR(adr)+' Nom='+intToSTR(name)+' Train='+train+' Etat='+IntToSTR(etat),clyellow); Event_act(adr,0,etat,train); // déclenche évent actionneur end; @@ -8195,7 +8385,7 @@ begin begin s:=s+' SIG Nbrefeux='+IntToSTR(feux[i].aspect)+' '; s:=s+' Det='+IntToSTR(feux[i].Adr_det1); - s:=s+' El_Suiv1='+IntToSTR(feux[i].Adr_el_suiv1)+' Type suiv1='+intToSTR(BTypeToNum(feux[i].Btype_suiv1)); + s:=s+' El_Suiv1='+IntToSTR(feux[i].Adr_el_suiv1)+' Type suiv1='+BTypeToNum(feux[i].Btype_suiv1); case feux[i].Btype_suiv1 of det : s:=s+' (det) '; aig,tjs,tjd : s:=s+' (aig ou TJD-S) '; @@ -8291,13 +8481,7 @@ begin end; -procedure TFormPrinc.ButtonRepriseClick(Sender: TObject); -var s : string; -begin - s:=#$21+#$81; - s:=checksum(s); - envoi(s); // envoi de la trame et attente Ack -end; + // lit un fichier de CV vers un accessoire procedure Lire_fichier_CV; @@ -8418,7 +8602,7 @@ begin Tformconfig.create(nil); FormConfig.PageControl.ActivePage:=Formconfig.TabSheetCDM; // force le premier onglet sur la page formconfig.showmodal; - formconfig.close; + // ne pas faire close : déja provoqué par le self de la fermeture end; procedure TFormPrinc.Codificationdesactionneurs1Click(Sender: TObject); @@ -8580,6 +8764,33 @@ begin end; end; +procedure TFormPrinc.Etatdeszonespartrain1Click(Sender: TObject); +var i,n,train,couleur : integer; + rien : boolean; + s : string; +begin + Affiche('',clyellow); + Affiche('Historique de l''état des zones par train',clWhite); + rien:=true; + for train:=1 to 20 do + begin + n:=TrainZone[train].Nbre; + //if n=0 then Affiche('Aucune zone n''a été activée',clOrange); + for i:=1 to n do + begin + rien:=false; + s:='Train='+intToSTR(train); + s:=s+' index='+intToSTR(i); + s:=s+' '+intToSTR(TrainZone[train].Zone[i].det1); + s:=s+' '+intToSTR(TrainZone[train].Zone[i].det2); + if i=n then s:=s+' Prev='+intToSTR(TrainPrevZone[train][1]); + couleur:=((train - 1) mod NbCouleurTrain) +1; + Affiche(s,CouleurTrain[couleur]); + end; + end; + if rien then Affiche('Aucune zone n''a été déclenchée',clOrange); +end; + procedure TFormPrinc.Apropos1Click(Sender: TObject); begin Affiche(' ',clyellow); @@ -8595,6 +8806,16 @@ begin FenRich.lines.add('http://cdmrail.free.fr/ForumCDR/viewtopic.php?f=77&t=3906'); RE_ColorLine(FenRich,FenRich.lines.count-1,clAqua); + Affiche('Ce programme pilote des signaux complexes de façon autonome ou avec CDM rail ',ClYellow); + Affiche('En fonction des détecteurs mis à 1 ou 0 par des locomotives',ClYellow); + Affiche('en circulation sur le réseau',ClYellow); + Affiche('En vert : Trames envoyées à l''interface',ClWhite); + Affiche('En violet : Trames brutes reçues de l''interface',ClWhite); + Affiche('En rouge : erreurs et défauts',ClWhite); + Affiche('En orange : pilotage des signaux / erreurs mineures',ClWhite); + Affiche('En bleu : pilotage des aiguillages',ClWhite); + Affiche('En jaune : rétrosignalisation reçue depuis l''interface',ClWhite); + Affiche(' ',clyellow); end; @@ -8732,11 +8953,43 @@ begin zone_TCO(518,515,1); end; - - - - +procedure TFormPrinc.Demanderlaversiondelacentrale1Click(Sender: TObject); +var s : string; begin + if portCommOuvert or parSocketLenz then + begin + s:=#$f0; + s:=checksum(s); + envoi(s); + end + else Affiche('L''interface XpressNet n''est pas connectée par USB ou par Ethernet',clorange); +end; + +procedure TFormPrinc.Demandetatdesaiguillages1Click(Sender: TObject); +begin + if portCommOuvert or parSocketLenz then demande_etat_acc + else Affiche('L''interface XpressNet n''est pas connectée par USB ou par Ethernet',clorange); +end; + + +procedure TFormPrinc.RepriseDCC1Click(Sender: TObject); +var s : string; +begin + if portCommOuvert or parSocketLenz then + begin + s:=#$21+#$81; + s:=checksum(s); + envoi(s); // envoi de la trame et attente Ack + end + else Affiche('L''interface XpressNet n''est pas connectée par USB ou par Ethernet',clorange); +end; + +procedure TFormPrinc.BoutonRazTrainsClick(Sender: TObject); +begin + Affiche('Raz tous trains et routes',clLime); + Raz_tout; +end; + end. diff --git a/UnitSR.dcu b/UnitSR.dcu index ea66fb78eb820c8f3a33cda5f3cf65778513f911..99e977a77befaa6d4ac4bb73fcb2faf41a6afde8 100644 GIT binary patch delta 178 zcmcb#jPcwuM(+Cz4E%n<3=GG7_ig09#Kof7J;!PCL#||&qL{5Bn?1O*otZahGf&>) zXU05Pn|bnEKSd^9rpbc-ip+5~6PY(B2VoqMcI=RYUk&$8Y9FU|k)8qqS z-V>k_!4s3&0)T=*gS3G3A<>kb29AnHQHE#M6dB!aPg)BvB1|1TKVlVaG0t=1Vw}u& zP>a@@0YS?$Bf^8NtQ~5$Q4ItWDQg8$K~RlunMOrBKw}bG(Et%`R6|p@q@woDwLwWM zrssRkJ>UJ#&pr3u=b=|!eGy|z z%|EYo6*Tq4Hn+sW(cqO&pKKU8dX!FVE~vA>YV$2yDEZf5H8mUYc%aLOi@&hZ`bxY# z5st*gCv0>CV&OnE5f>MO)%o?2Ks?T@4|(C4SfIB%9E^*zY}EHe6R{q4*&eLUliA{; zn)wakK%}QDE}oE46P@*m7*k4u)dlU*a3WifP|W_K5-2qf7R_$db-VPi6z2@rkQcO&-Ji?<}rKKyoW7dx#d~o70szk#hVEFz2=C$)btnIpL(dzSGcyO za5NAJZ_V~$TjRe2+r|1a-D~y~mn6NxgXw1k34NHF)=>)WqRuveTMwt-_lXMIvc5#3 zCtBYfh;XVY~T{hi-i!| ziZhu^vSlexBcJ`L?1R>RPqMf@10znXTImEwJ)DeyeEnJ6cKX7Y2mkV2=kn4PH@Kr zB=UAlV4q`9vwSjGBx4UWd~Ey2itaWJIjCCB4$hL`V8aKL+OKm9vK!63E2rJtn3L-F z@^sX~q+AbjcIJU?zCO#}u>H$S<_AwZ<_hsz@u*xndHg}esr@DFpWRi?KPBx{zijvD z#RsgxevheW{&{CP&pVJMPPwG|I+9A{Hf8I!*4}~ixxV6nR=qpK11&eMB{qIFw17o zIdOdU8Avu;ggSr%2Ker#kXXy%$c`FqLIhEQ1i==9mux6+uvZlvKnGruQ!74&9<20ar%UkbdKp%E@IM-UVZ}Q1V_HLCmpX2%bS=P2 zoPioXf;LF*M-6ybs8s%}+B8Nrv*eIWm&NL|Sl#zm{ZnWzbuQ%pcX*J{pUc3}O7V)! zmDI5jb#%J%8`%oiWivQsO;)^8p0!rw2n(|Wt3@ltQ7a6wwJn!Cx6V`@o6*g~hHLPe zs*Yg^_u0*%9Jz2FeBaH81KYC{mwFkKUOomto{@XBGRwxp$wQvb1D>XiqZh^>P8**_ zn?yTIa?+o3(#dQJhl&cDwtU>PuVqaE?nWQ;-F$XF`6xbft!Hl1g>Hqodd=>!Dm>@^ zF>ZV{H{OGCP1+h(+xL=!4eY-FBdDOR_!So(q4O$MpdEXygf+MrH;^@_m5{IxA#O&o z7x^-3Zgb^xDEQ&`3xz9%h(b$oprj~Cp^C!I_YZ|9#hn$U!zfgxTyIM8K7>9dEpPcO z_O+uZzbs9kcOjb&6y9-Z`hCr8I#KwBWc)?@rK~w1W$hs;ork4tIws}vk*s`I%9Y7e zQms0jmFKeZyp*diNGU#+au!~d>hI3{Yf>-7>p68(sweS|RBx=b+?Bc+KbL9^PD&NV zeQm>7XBo*CmCi%BTRnu&ThgcSfFe%eq>?_3$(woNG(Ms-*sL;mOl9zJK4aJO8Cyb( zrHHXp#MoV8Y<_{n3K$!(GIq|&*rSDvy;>-J3mKbXOP|N{MdCc(EJ}~zQW6g51*}jn l;F0uYT delta 2348 zcma)74NP0t6~5=#JPyX#4sjj~8Smj)1X6-X3Y5~dgYc98EGa)CQPbwtJcAe4AlqS0 z*3{6Js*JLRzOt5Tjh1Yg+9;Vu(@qHsQ&M%)=$fvp*8ON=8&w-M(#X0@o6wfR&V3F^ z8)edDzjNOA-S7O|bN!y5{L1Lv*?$(oJ?a-?vwmzeyTD$Q+`MD7w56i%=zp$sIkxH# zKhP3+XkXOmtNH6pS7v=U90_$ByH~X7U0KaN@rSm@BeBr&yJk*I{OSZPbGJ71#FFuz zXnBi~Z0+g2a_Z|@O*ZqF&W_Y?LzT4ENF?+wBO!jnpk;reEg6X>#5)Yy^>{>&B@^Q9 zP-SLAR8J&W^#(7jkL$hNkx)XMWpFKdLOc?x%#hU+qMY@O5k1<|l@LLhHQCvajC0o9 zP-RwIERwVu6n67yPX2D6Smkb&an_dfWTYqd)b2l)9`kFi&$Acz);ApUS8I-qv7{02 z)1y)2;+wAXIk`1jHjkh+651#;7QzwL0|wD{Bi=<|9P9OZ0| z#Pn$7fHkN7rhn*WL?2MwT8)H@I2fmasJ7K<|Hx_!xH zPmJruy9_VRW|uj>+H1tp$K-YVJ-f`+)EPrzn zAwFig7=HXJ3i0^4-pSURsXddAn9nTF!{4F#^73}~*`@WtbM7Zz12e~azw7PKa^vQj z6%SjHW6$m_#wfY1RVrFC)h@CKfz-J{RB@C ze3#%`1dRmG5*#J?K0!0V4+vf+NF66QLC{KYFTsxpb`iWv@B+b$1m7VzOpqj~BzTgb znxKZDmf$IZZxY-?@HD|8f-MBk5qz5GNX=k7_y|e}`~(_7fRq6q#{jOfMp03$jN!dD#lul+VFW$+uDo^N8uZ~R zpLJV>H~V#1=EEy0{>y=PVhR3R#jElz9SK;0S*YSNbiz;yRTx6mMt=Eqs8+(XqLNke zl1i`5k$-Ke4`~Ru~Sjc_fi5*rVm#pi+)O!I7-i;c%3b52tIBXt2zQ#6)KX$+% za|hC;(kc$nupSHea$*x28Ojvq^F#|cqsPkno)1qKFyq0Emc*+}W02=vf|GJL4i@p= zF&Bn*TIaB&Q3**39o$6xx(T!9Wg&x=;kBB`gk>GW4Jb&PZ5N z+{7>!Me(3aUp*vk%?PI0)s9Q>4b%3L^vy@4-EhpZuSmP;q_kTmEc?1;&q%xNytF@Y z*nTE`4qlM%dz1KU=}YnbwEKf}t8rF3@sYGmcuBgAIENyILdWM?$FSZunkg!B$FWZt z$JMrllNhm!lQ?Z(n84RF!~|Z-V6ISM?x4cl{!Hd3GMW1*lesElPABHZiMjVla#_r+ zaWEHgF!z#!xj6@OU&v-|NA|)QoL!eK&LB7!rm&8LC-*#-Dd+L{!Zg--7+$~{B)c7Unv8>Sl3wiHJJpcdz diff --git a/UnitSimule.pas b/UnitSimule.pas index dd65b56..48140d1 100644 --- a/UnitSimule.pas +++ b/UnitSimule.pas @@ -71,7 +71,8 @@ begin if s[1]='=' then delete(s,1,1); if s[1]=' ' then delete(s,1,1); val(s,k,erreur); - Tablo_simule[index_simule].detecteur:=k; + Tablo_simule[index_simule].adresse:=k; + Tablo_simule[index_simule].modele:=det; i:=pos('=',s); if i<>0 then begin @@ -96,18 +97,20 @@ begin if s[1]='=' then delete(s,1,1); if s[1]=' ' then delete(s,1,1); val(s,k,erreur); - Tablo_simule[index_simule].aiguillage:=k; + Tablo_simule[index_simule].adresse:=k; + Tablo_simule[index_simule].modele:=aig; i:=pos('=',s); if i<>0 then begin Delete(s,1,i); val(s,k,erreur); - Tablo_simule[index_simule].etat:=k; + if (k=1) or (k=2) then Tablo_simule[index_simule].etat:=k + else Affiche('Erreur 622 : Position aiguillage '+intToSTR(Tablo_simule[index_simule].adresse)+' inconnue dans le fichier de simulation',clred); {s:=IntToSTR(Index_simule)+' Tick='+intToSTR(Tablo_simule[index_simule].tick)+ - ' Aiguillage='+intToSTR(Tablo_simule[index_simule].aiguillage)+ + ' Aiguillage='+intToSTR(Tablo_simule[index_simule].adresse)+ '='+intToSTR(Tablo_simule[index_simule].etat); - Affiche(s,ClLime); } + Affiche(s,ClLime); } inc(index_simule); end; @@ -120,7 +123,6 @@ begin dec(index_simule); closeFile(fte); formprinc.ButtonArretSimu.Visible:=true; - formprinc.ButtonArretSimu.top:=88; FormSimulation.Close; end; diff --git a/UnitTCO.dcu b/UnitTCO.dcu index ee4d2fcdd8da315e63a1d711b7c7a872e91ed56c..411c3428d5103b6a6e124f004e03c20411e7c5b3 100644 GIT binary patch delta 45379 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 TBy+eiN|8lALdpq`rJDZ%dTOs> delta 44446 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 F%~x&$9hv|D diff --git a/UnitTCO.dfm b/UnitTCO.dfm index 34b51df..08cfe2e 100644 --- a/UnitTCO.dfm +++ b/UnitTCO.dfm @@ -1,6 +1,6 @@ object FormTCO: TFormTCO - Left = 117 - Top = 151 + Left = 151 + Top = 72 Width = 1139 Height = 694 VertScrollBar.Visible = False diff --git a/UnitTCO.pas b/UnitTCO.pas index 7350f49..afe74e1 100644 --- a/UnitTCO.pas +++ b/UnitTCO.pas @@ -3231,10 +3231,8 @@ begin s:='Erreur TCO: '; adresse:=tco[x,y].Adresse; i:=index_aig(adresse); - if i<>0 then - begin - s:=s+'position aiguillage '+intToSTR(adresse)+' inconnue'; - end; + if i=0 then s:=s+'aiguillage '+intToSTR(adresse)+' inconnu'; + if i<>0 then s:=s+'position aiguillage '+intToSTR(adresse)+' inconnue'; Affiche(s,clred); end; @@ -3297,7 +3295,11 @@ begin case Bimage of // voie 1 : begin - //if debugTCO then AfficheDebug('El 1',clyellow); + if debugTCO then + begin + s:='El 1';if adresse<>0 then s:=s+'adr='+intToStr(adresse); + AfficheDebug(s,clyellow); + end; if ancienX0 then begin j:=Index_Aig(adresse); - pos:=aiguillage[j].position; - if (pos=const_inconnu) then begin Erreur_TCO(x,y);exit;end; mdl:=aiguillage[j].modele; - if mdl=tjd then + if (mdl=tjs) or (mdl=tjd) then begin - j:=Index_Aig(aiguillage[j].Ddroit); - pos2:=aiguillage[j].position; // 2eme adresse de la TJD - if (pos2=const_inconnu) then Erreur_TCO(x,y); - if (pos=const_droit) and (pos2=const_droit) then + // tjd ou tjs + pos:=aiguillage[j].position; + if (pos=const_inconnu) then begin Erreur_TCO(x,y);exit;end; + + if (mdl=tjd) or (mdl=tjs) and (aiguillage[j].EtatTJD=4) then begin - if ancienXx) and (ancienY=Y) then xn:=x-1; if (ancienXY) then begin xn:=x+1;yn:=y-1;end; @@ -3445,70 +3455,72 @@ begin end; // TJD ou croisement 22 : begin - // tjd ou tjs - //if debugTCO then AfficheDebug('El 22',clyellow); - if adresse<>0 then + //if debugTCO then AfficheDebug('El 22',clyellow); + mdl:=rien; + if adresse<>0 then begin j:=Index_Aig(adresse); - pos:=aiguillage[j].position; - if (pos=const_inconnu) then begin Erreur_TCO(x,y);exit;end; mdl:=aiguillage[j].modele; - if mdl=tjd then + if (mdl=tjd) or (mdl=tjs) then begin - j:=Index_Aig(aiguillage[j].Ddroit); - pos2:=aiguillage[j].position; // 2eme adresse de la TJD - if (pos2=const_inconnu) then begin Erreur_TCO(x,y);exit;end; - if (pos=const_droit) and (pos2=const_droit) then + pos:=aiguillage[j].position; + if (pos=const_inconnu) then begin Erreur_TCO(x,y);exit;end; + + if (mdl=tjd) or (mdl=tjs) and (aiguillage[j].EtatTJD=4) then begin - if ancienXx) and (ancienY=Y) then xn:=x-1; if (ancienX>x) and (ancienY>Y) then begin xn:=x-1;yn:=y-1;end; if (ancienXmJ_7^)Nf`!)!q{CCxmW5kKF@JW;|_5xEX^!P%}vcKxhy;3N;-35X1dOC UmfCdYlB^V6D5F?!mJ_7^)Nf`zP@5H4OxmW6L%ljCe#vS5XSejXonwy$evPX8pm2~FB%yiM? UEVb#(C0QwAP)4!%#)mJY0gHDUo&W#< diff --git a/tco.cfg b/tco.cfg index 17bdf77..c2503d0 100644 --- a/tco.cfg +++ b/tco.cfg @@ -22,9 +22,9 @@ Ratio=10 (0,0,0,0,0,0,,2,,0,000000,)(0,0,20,0,0,0,,2,,0,00FFFF,)(0,0,20,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,4,15,0,0,0,,2,,0,00FF00,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,514,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,522,1,0,0,0,,2,,0,00FFFF,)(0,0,7,0,0,0,,2,,0,000000,)(0,0,10,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) (0,0,0,0,0,0,,2,,0,000000,)(0,0,20,0,0,0,,2,,0,00FFFF,)(0,0,20,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,3,15,0,0,0,,2,,0,00FF00,)(0,5,2,0,0,0,,2,,0,00FF00,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,515,1,0,0,0,,2,,0,00FFFF,)(0,515,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,7,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) (0,0,0,0,0,0,,2,,0,000000,)(0,0,19,0,0,0,,2,,0,00FFFF,)(0,0,19,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,260,30,0,2,1,,2,,0,00FF00,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,10,0,0,0,,2,,0,000000,)(0,0,10,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,316,30,0,3,1,,2,,0,00FF00,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,23,0,0,0,,2,,0,000000,)(0,0,23,0,0,0,,2,,0,000000,)(0,0,23,0,0,0,QUAI 1,1,ARIAL,12,FFFFFF,G)(0,0,23,0,0,0,,2,,0,000000,)(0,0,23,0,0,0,,2,,0,000000,)(0,0,23,0,0,0,,2,,0,000000,)(0,0,23,0,0,0,,2,,0,000000,)(0,0,23,0,0,0,,2,,0,000000,)(0,0,23,0,0,0,,2,,0,000000,)(0,0,23,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,190,30,0,2,1,,2,,0,00FF00,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) -(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,11,0,0,0,,2,,0,00FFFF,)(0,0,6,0,0,0,,2,,0,000000,)(0,518,1,0,0,0,,0,,0,00FFFF,)(0,518,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,1,3,0,0,0,,2,,0,00FF00,)(0,0,21,0,0,0,,2,,0,00FF00,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,VOIE 2,2,ARIAL,10,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,523,1,0,0,0,,0,,0,00FFFF,)(0,523,1,0,0,0,,0,,0,00FFFF,)(0,523,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) +(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,11,0,0,0,,2,,0,00FFFF,)(0,0,6,0,0,0,,2,,0,000000,)(0,518,1,0,0,0,,0,,0,00FFFF,)(0,518,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,1,3,0,0,0,,2,,0,00FF00,)(0,100,21,0,0,0,,2,,0,00FF00,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,VOIE 2,2,ARIAL,10,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,523,1,0,0,0,,0,,0,00FFFF,)(0,523,1,0,0,0,,0,,0,00FFFF,)(0,523,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) (0,530,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,8,0,0,0,,2,,0,00FFFF,)(0,0,6,0,0,0,,2,,0,000000,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,12,4,1,0,0,,2,,0,00FF00,)(0,2,3,0,0,0,,2,,0,00FF00,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,519,1,0,0,0,,2,,0,00FFFF,)(0,519,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,VOIE 1,2,ARIAL,10,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,8,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,7,2,0,0,0,,2,,0,00FF00,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,527,1,0,0,0,,2,,8,00FFFF,)(0,0,1,0,0,0,,3,,8,00FFFF,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) (0,529,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,26,22,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,8,0,0,0,,0,,0,000000,)(0,0,11,0,0,0,,0,,0,000000,)(0,330,30,0,3,1,,0,,0,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,QUAI 2,0,ARIAL,12,FFFFFF,G)(0,0,23,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,10,0,0,0,,0,,0,000000,)(0,204,30,0,3,1,,0,,0,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,8,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) -(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,6,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,21,5,0,0,0,,0,,0,00FF00,)(0,20,5,0,0,0,,0,,0,00FF00,)(0,520,1,0,0,0,,2,,8,00FFFF,)(0,520,1,0,0,0,,0,,0,00FFFF,)(0,520,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,8,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,8,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,8,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,8,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,8,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,7,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,8,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) +(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,6,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,21,5,0,0,0,,0,,0,00FF00,)(0,20,5,0,0,0,,0,,0,00FF00,)(0,520,1,0,0,0,,2,,8,00FFFF,)(0,520,1,0,0,0,,0,,0,00FFFF,)(0,520,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,8,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,8,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,8,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,8,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,8,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,7,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,8,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) (0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,176,30,0,3,1,,0,,0,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,3,,8,00FF00,)(0,0,0,0,0,0,,0,,8,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,8,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,8,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,8,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) (0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) diff --git a/verif_version.dcu b/verif_version.dcu index 00b41332d202a2a482c571fda2e9324f0cfd0ea9..7c1c8ff194980d5fd2e33cc7fa6233d11123bfac 100644 GIT binary patch delta 83 zcmZ1+zA&8oJ_7^)LTv^HQMV%#xn-FfCm-6V9V#evdUr{K43orvAYf)-U@*}$+B`|{ kHb0}$6`48t7(`hZm>3vYWI+_eS7y@g9Ba?3JrC|tTxJ5*5U)b5f7877JUK)}qvz+j?hxOtM` nZGJ|>$$5$@jE0*hD>8EmJif&w%EG|Jz{nyCqJ$v