V3.1 B
This commit is contained in:
BIN
Binary file not shown.
+2
-2
@@ -10,5 +10,5 @@ Fichiers sources.
|
||||
:lien: http://cdmrail.free.fr/ForumCDR/viewtopic.php?f=77&t=3906#p50499
|
||||
:cdm: http://cdmrail.free.fr/SiteCDR/index.html
|
||||
|
||||
* {lien} [Lien vers le fil] -- Forum de CDM rail
|
||||
* {cdm} [Lin vers CDM rail] -- Site de CDM rail
|
||||
* {lien}[Lien vers le fil] -- Forum de CDM rail
|
||||
* {cdm}[Lien vers CDM rail] -- Site de CDM rail
|
||||
|
||||
Binary file not shown.
+133
-146
@@ -1,6 +1,6 @@
|
||||
object FormConfig: TFormConfig
|
||||
Left = 285
|
||||
Top = 127
|
||||
Left = 277
|
||||
Top = 203
|
||||
Hint =
|
||||
'Modifie les fichiers de configuration selon les s'#233'lections chois' +
|
||||
'ies'
|
||||
@@ -17,6 +17,7 @@ object FormConfig: TFormConfig
|
||||
OldCreateOrder = False
|
||||
Position = poScreenCenter
|
||||
OnActivate = FormActivate
|
||||
OnClose = FormClose
|
||||
OnCreate = FormCreate
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
@@ -1528,13 +1529,6 @@ object FormConfig: TFormConfig
|
||||
Height = 13
|
||||
Caption = 'Element suivant'
|
||||
end
|
||||
object Label20: TLabel
|
||||
Left = 24
|
||||
Top = 160
|
||||
Width = 50
|
||||
Height = 13
|
||||
Caption = 'LabelTrain'
|
||||
end
|
||||
object Label10: TLabel
|
||||
Left = 80
|
||||
Top = 120
|
||||
@@ -1769,13 +1763,14 @@ object FormConfig: TFormConfig
|
||||
Height = 25
|
||||
Caption = 'Fermer sans enregistrer la configuration'
|
||||
TabOrder = 1
|
||||
OnClick = Button2Click
|
||||
end
|
||||
object PageControl: TPageControl
|
||||
Left = 8
|
||||
Top = 8
|
||||
Width = 633
|
||||
Height = 457
|
||||
ActivePage = TabSheetCDM
|
||||
ActivePage = TabSheetAutonome
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clBlack
|
||||
Font.Height = -11
|
||||
@@ -1783,7 +1778,6 @@ object FormConfig: TFormConfig
|
||||
Font.Style = []
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
OnChange = PageControlChange
|
||||
object TabSheetCDM: TTabSheet
|
||||
Caption = 'CDM Rail'
|
||||
object GroupBox1: TGroupBox
|
||||
@@ -2104,6 +2098,13 @@ object FormConfig: TFormConfig
|
||||
Height = 13
|
||||
Caption = 'Seuil du nombre de d'#233'tecteurs trop distants'
|
||||
end
|
||||
object Label41: TLabel
|
||||
Left = 8
|
||||
Top = 36
|
||||
Width = 188
|
||||
Height = 13
|
||||
Caption = 'Taille de la fonte de la fen'#234'tre principale'
|
||||
end
|
||||
object EditNbDetDist: TEdit
|
||||
Left = 232
|
||||
Top = 12
|
||||
@@ -2112,6 +2113,14 @@ object FormConfig: TFormConfig
|
||||
TabOrder = 0
|
||||
Text = 'EditNbDetDist'
|
||||
end
|
||||
object EditFonte: TEdit
|
||||
Left = 232
|
||||
Top = 32
|
||||
Width = 25
|
||||
Height = 21
|
||||
ReadOnly = True
|
||||
TabOrder = 1
|
||||
end
|
||||
end
|
||||
end
|
||||
object TabSheetAutonome: TTabSheet
|
||||
@@ -2358,10 +2367,8 @@ object FormConfig: TFormConfig
|
||||
Left = 8
|
||||
Top = 32
|
||||
Width = 281
|
||||
Height = 33
|
||||
Caption =
|
||||
'Initialisation des aiguillages suivant liste dans fichier client' +
|
||||
'-gl.cfg [section init]'
|
||||
Height = 25
|
||||
Caption = 'Initialisation des aiguillages '
|
||||
ParentShowHint = False
|
||||
ShowHint = False
|
||||
TabOrder = 1
|
||||
@@ -2396,20 +2403,6 @@ object FormConfig: TFormConfig
|
||||
Height = 13
|
||||
Caption = 'LabelTJD1'
|
||||
end
|
||||
object Label35: TLabel
|
||||
Left = 0
|
||||
Top = 56
|
||||
Width = 134
|
||||
Height = 13
|
||||
Caption = 'Configuration des aiguillages'
|
||||
end
|
||||
object Label36: TLabel
|
||||
Left = 232
|
||||
Top = 56
|
||||
Width = 86
|
||||
Height = 13
|
||||
Caption = 'Liste d'#39'initialisation'
|
||||
end
|
||||
object GroupBox11: TGroupBox
|
||||
Left = 328
|
||||
Top = 32
|
||||
@@ -2430,20 +2423,6 @@ object FormConfig: TFormConfig
|
||||
Font.Style = [fsBold]
|
||||
ParentFont = False
|
||||
end
|
||||
object LabelLigne: TLabel
|
||||
Left = 16
|
||||
Top = 42
|
||||
Width = 104
|
||||
Height = 16
|
||||
Alignment = taCenter
|
||||
Caption = ' - '
|
||||
Font.Charset = ANSI_CHARSET
|
||||
Font.Color = clBlack
|
||||
Font.Height = -13
|
||||
Font.Name = 'Arial'
|
||||
Font.Style = []
|
||||
ParentFont = False
|
||||
end
|
||||
object GroupBox10: TGroupBox
|
||||
Left = 8
|
||||
Top = 88
|
||||
@@ -2484,7 +2463,10 @@ object FormConfig: TFormConfig
|
||||
Top = 269
|
||||
Width = 137
|
||||
Height = 17
|
||||
Hint = 'Cocher si l'#39'aiguillage est invers'#233' dans CDM rail'
|
||||
Caption = 'Inversion de l'#39#233'tat CDM'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 1
|
||||
OnClick = CheckInverseClick
|
||||
end
|
||||
@@ -2494,7 +2476,7 @@ object FormConfig: TFormConfig
|
||||
Width = 33
|
||||
Height = 21
|
||||
TabOrder = 2
|
||||
OnChange = EditAdrAigChange
|
||||
OnKeyPress = EditAdrAigKeyPress
|
||||
end
|
||||
object ComboBoxAig: TComboBox
|
||||
Left = 8
|
||||
@@ -2520,7 +2502,7 @@ object FormConfig: TFormConfig
|
||||
TabOrder = 4
|
||||
object LabelHG: TLabel
|
||||
Left = 10
|
||||
Top = 17
|
||||
Top = 21
|
||||
Width = 9
|
||||
Height = 16
|
||||
Caption = 'D'
|
||||
@@ -2590,27 +2572,40 @@ object FormConfig: TFormConfig
|
||||
ParentFont = False
|
||||
end
|
||||
object LabelTJD1: TLabel
|
||||
Left = 96
|
||||
Left = 80
|
||||
Top = 76
|
||||
Width = 52
|
||||
Height = 13
|
||||
Caption = 'LabelTJD1'
|
||||
end
|
||||
object LabelTJD2: TLabel
|
||||
Left = 168
|
||||
Left = 176
|
||||
Top = 76
|
||||
Width = 52
|
||||
Height = 13
|
||||
Caption = 'LabelTJD1'
|
||||
end
|
||||
object LabelL: TLabel
|
||||
Left = 10
|
||||
Top = 69
|
||||
Width = 8
|
||||
Height = 16
|
||||
Caption = 'L'
|
||||
Font.Charset = ANSI_CHARSET
|
||||
Font.Color = clBlack
|
||||
Font.Height = -13
|
||||
Font.Name = 'Arial'
|
||||
Font.Style = [fsBold]
|
||||
ParentFont = False
|
||||
Visible = False
|
||||
end
|
||||
object Edit_HG: TEdit
|
||||
Left = 24
|
||||
Top = 20
|
||||
Width = 41
|
||||
Height = 21
|
||||
TabOrder = 0
|
||||
Text = 'EditPointe'
|
||||
OnChange = Edit_HGChange
|
||||
OnKeyPress = Edit_HGKeyPress
|
||||
end
|
||||
object EditPointe_BG: TEdit
|
||||
Left = 24
|
||||
@@ -2618,8 +2613,7 @@ object FormConfig: TFormConfig
|
||||
Width = 41
|
||||
Height = 21
|
||||
TabOrder = 1
|
||||
Text = 'EditPointe_BG'
|
||||
OnChange = EditPointe_BGChange
|
||||
OnKeyPress = EditPointe_BGKeyPress
|
||||
end
|
||||
object EditP1: TEdit
|
||||
Left = 88
|
||||
@@ -2627,8 +2621,7 @@ object FormConfig: TFormConfig
|
||||
Width = 33
|
||||
Height = 21
|
||||
TabOrder = 2
|
||||
Text = 'EditDDroit'
|
||||
OnChange = EditP1Change
|
||||
OnKeyPress = EditP1KeyPress
|
||||
end
|
||||
object EditP2: TEdit
|
||||
Left = 88
|
||||
@@ -2636,8 +2629,7 @@ object FormConfig: TFormConfig
|
||||
Width = 33
|
||||
Height = 21
|
||||
TabOrder = 3
|
||||
Text = 'EditDdevie'
|
||||
OnChange = EditP2Change
|
||||
OnKeyPress = EditP2KeyPress
|
||||
end
|
||||
object EditP3: TEdit
|
||||
Left = 160
|
||||
@@ -2645,8 +2637,7 @@ object FormConfig: TFormConfig
|
||||
Width = 33
|
||||
Height = 21
|
||||
TabOrder = 4
|
||||
Text = 'EditDDroit'
|
||||
OnChange = EditP3Change
|
||||
OnKeyPress = EditP3KeyPress
|
||||
end
|
||||
object EditP4: TEdit
|
||||
Left = 160
|
||||
@@ -2654,8 +2645,7 @@ object FormConfig: TFormConfig
|
||||
Width = 33
|
||||
Height = 21
|
||||
TabOrder = 5
|
||||
Text = 'EditDDroit'
|
||||
OnChange = EditP4Change
|
||||
OnKeyPress = EditP4KeyPress
|
||||
end
|
||||
object EditDevie_HD: TEdit
|
||||
Left = 232
|
||||
@@ -2663,8 +2653,7 @@ object FormConfig: TFormConfig
|
||||
Width = 33
|
||||
Height = 21
|
||||
TabOrder = 6
|
||||
Text = 'EditDevie_HD'
|
||||
OnChange = EditDevie_HDChange
|
||||
OnKeyPress = EditDevie_HDKeyPress
|
||||
end
|
||||
object EditDroit_BD: TEdit
|
||||
Left = 232
|
||||
@@ -2672,8 +2661,7 @@ object FormConfig: TFormConfig
|
||||
Width = 33
|
||||
Height = 21
|
||||
TabOrder = 7
|
||||
Text = 'EditDroit_BD'
|
||||
OnChange = EditDroit_BDChange
|
||||
OnKeyPress = EditDroit_BDKeyPress
|
||||
end
|
||||
object EditDevieS2: TEdit
|
||||
Left = 232
|
||||
@@ -2681,8 +2669,16 @@ object FormConfig: TFormConfig
|
||||
Width = 33
|
||||
Height = 21
|
||||
TabOrder = 8
|
||||
Text = 'EditDevie_HD'
|
||||
OnChange = EditDevieS2Change
|
||||
OnKeyPress = EditDevieS2KeyPress
|
||||
end
|
||||
object EditL: TEdit
|
||||
Left = 40
|
||||
Top = 68
|
||||
Width = 25
|
||||
Height = 21
|
||||
TabOrder = 9
|
||||
Visible = False
|
||||
OnChange = EditLChange
|
||||
end
|
||||
end
|
||||
object ButtonRestaureAig: TButton
|
||||
@@ -2706,7 +2702,7 @@ object FormConfig: TFormConfig
|
||||
Height = 21
|
||||
TabOrder = 6
|
||||
Visible = False
|
||||
OnChange = EditAigTripleChange
|
||||
OnKeyPress = EditAigTripleKeyPress
|
||||
end
|
||||
object GroupBox21: TGroupBox
|
||||
Left = 8
|
||||
@@ -2717,7 +2713,7 @@ object FormConfig: TFormConfig
|
||||
TabOrder = 7
|
||||
object Label37: TLabel
|
||||
Left = 8
|
||||
Top = 26
|
||||
Top = 18
|
||||
Width = 66
|
||||
Height = 13
|
||||
Caption = 'D'#233'vi'#233' ou droit'
|
||||
@@ -2729,44 +2725,46 @@ object FormConfig: TFormConfig
|
||||
Height = 13
|
||||
Caption = 'Temporisation (1/10'#232'me s)'
|
||||
end
|
||||
object LabelDevie: TLabel
|
||||
Left = 200
|
||||
Top = 24
|
||||
Width = 3
|
||||
Height = 13
|
||||
end
|
||||
object EditDevDroit: TEdit
|
||||
Left = 152
|
||||
Top = 18
|
||||
Width = 41
|
||||
Height = 21
|
||||
TabOrder = 0
|
||||
OnChange = EditDevDroitChange
|
||||
end
|
||||
object EditTempo10: TEdit
|
||||
Left = 152
|
||||
Left = 160
|
||||
Top = 40
|
||||
Width = 41
|
||||
Height = 21
|
||||
TabOrder = 1
|
||||
OnChange = EditTempo10Change
|
||||
TabOrder = 0
|
||||
OnKeyPress = EditTempo10KeyPress
|
||||
end
|
||||
object CheckInvInit: TCheckBox
|
||||
Left = 8
|
||||
Top = 64
|
||||
Width = 153
|
||||
Height = 17
|
||||
Hint = 'Inverse le pilotage de l'#39'aiguillage'
|
||||
Caption = 'Pilotage invers'#233
|
||||
TabOrder = 2
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 1
|
||||
OnClick = CheckInvInitClick
|
||||
end
|
||||
object ComboBoxDD: TComboBox
|
||||
Left = 160
|
||||
Top = 16
|
||||
Width = 97
|
||||
Height = 21
|
||||
ItemHeight = 13
|
||||
TabOrder = 2
|
||||
OnChange = ComboBoxDDChange
|
||||
Items.Strings = (
|
||||
'D'#233'vi'#233
|
||||
'Droit'
|
||||
'Non positionn'#233)
|
||||
end
|
||||
end
|
||||
end
|
||||
object RichAig: TRichEdit
|
||||
Left = 0
|
||||
Top = 72
|
||||
Width = 233
|
||||
Height = 353
|
||||
Top = 56
|
||||
Width = 321
|
||||
Height = 369
|
||||
Color = clBlack
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clYellow
|
||||
@@ -2807,23 +2805,6 @@ object FormConfig: TFormConfig
|
||||
TabOrder = 4
|
||||
OnClick = ButtonAjSupClick
|
||||
end
|
||||
object RichInitAig: TRichEdit
|
||||
Left = 232
|
||||
Top = 72
|
||||
Width = 89
|
||||
Height = 353
|
||||
Color = clBlack
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clYellow
|
||||
Font.Height = -11
|
||||
Font.Name = 'MS Sans Serif'
|
||||
Font.Style = []
|
||||
ParentFont = False
|
||||
ReadOnly = True
|
||||
ScrollBars = ssBoth
|
||||
TabOrder = 5
|
||||
WordWrap = False
|
||||
end
|
||||
end
|
||||
object TabSheetBranches: TTabSheet
|
||||
Caption = 'Branches'
|
||||
@@ -2922,9 +2903,9 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
object GroupBox12: TGroupBox
|
||||
Left = 336
|
||||
Top = 40
|
||||
Top = 32
|
||||
Width = 281
|
||||
Height = 385
|
||||
Height = 393
|
||||
Caption = 'Description du signal'
|
||||
TabOrder = 0
|
||||
object ImageSignal: TImage
|
||||
@@ -2969,7 +2950,7 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
object Label17: TLabel
|
||||
Left = 8
|
||||
Top = 248
|
||||
Top = 264
|
||||
Width = 228
|
||||
Height = 26
|
||||
Caption =
|
||||
@@ -3046,11 +3027,11 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
object MemoCarre: TMemo
|
||||
Left = 8
|
||||
Top = 280
|
||||
Top = 296
|
||||
Width = 265
|
||||
Height = 89
|
||||
ScrollBars = ssBoth
|
||||
TabOrder = 0
|
||||
TabOrder = 12
|
||||
WordWrap = False
|
||||
OnChange = MemoCarreChange
|
||||
end
|
||||
@@ -3068,80 +3049,77 @@ object FormConfig: TFormConfig
|
||||
Top = 120
|
||||
Width = 41
|
||||
Height = 21
|
||||
TabOrder = 2
|
||||
Text = 'EditDet1'
|
||||
OnChange = EditDet1Change
|
||||
TabOrder = 3
|
||||
OnKeyPress = EditDet1KeyPress
|
||||
end
|
||||
object EditSuiv1: TEdit
|
||||
Left = 184
|
||||
Top = 120
|
||||
Width = 41
|
||||
Height = 21
|
||||
TabOrder = 3
|
||||
Text = 'EditSuiv1'
|
||||
OnChange = EditSuiv1Change
|
||||
TabOrder = 4
|
||||
OnKeyPress = EditSuiv1KeyPress
|
||||
end
|
||||
object EditDet2: TEdit
|
||||
Left = 120
|
||||
Top = 144
|
||||
Width = 41
|
||||
Height = 21
|
||||
TabOrder = 4
|
||||
Text = 'Edit1'
|
||||
OnChange = EditDet2Change
|
||||
TabOrder = 5
|
||||
OnKeyPress = EditDet2KeyPress
|
||||
end
|
||||
object EditSuiv2: TEdit
|
||||
Left = 184
|
||||
Top = 144
|
||||
Width = 41
|
||||
Height = 21
|
||||
TabOrder = 5
|
||||
Text = 'Edit2'
|
||||
OnChange = EditSuiv2Change
|
||||
TabOrder = 6
|
||||
OnKeyPress = EditSuiv2KeyPress
|
||||
end
|
||||
object EditDet3: TEdit
|
||||
Left = 120
|
||||
Top = 168
|
||||
Width = 41
|
||||
Height = 21
|
||||
TabOrder = 6
|
||||
Text = 'Edit1'
|
||||
OnChange = EditDet3Change
|
||||
TabOrder = 7
|
||||
OnKeyPress = EditDet3KeyPress
|
||||
end
|
||||
object EditSuiv3: TEdit
|
||||
Left = 184
|
||||
Top = 168
|
||||
Width = 41
|
||||
Height = 21
|
||||
TabOrder = 7
|
||||
Text = 'Edit2'
|
||||
OnChange = EditSuiv3Change
|
||||
TabOrder = 8
|
||||
OnKeyPress = EditSuiv3KeyPress
|
||||
end
|
||||
object EditDet4: TEdit
|
||||
Left = 120
|
||||
Top = 192
|
||||
Width = 41
|
||||
Height = 21
|
||||
TabOrder = 8
|
||||
Text = 'Edit1'
|
||||
OnChange = EditDet4Change
|
||||
TabOrder = 9
|
||||
OnKeyPress = EditDet4KeyPress
|
||||
end
|
||||
object EditSuiv4: TEdit
|
||||
Left = 184
|
||||
Top = 192
|
||||
Width = 41
|
||||
Height = 21
|
||||
TabOrder = 9
|
||||
Text = 'Edit2'
|
||||
OnChange = EditSuiv4Change
|
||||
TabOrder = 10
|
||||
OnKeyPress = EditSuiv4KeyPress
|
||||
end
|
||||
object CheckVerrouCarre: TCheckBox
|
||||
Left = 120
|
||||
Top = 224
|
||||
Width = 145
|
||||
Height = 17
|
||||
Hint =
|
||||
'Passe le feu au carr'#233' ci aucun train n'#39'est pr'#233'sent 3 cantons ava' +
|
||||
'nt le signal'
|
||||
Caption = 'Verrouillable au carr'#233
|
||||
TabOrder = 10
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 11
|
||||
OnClick = CheckVerrouCarreClick
|
||||
end
|
||||
object EditAdrSig: TEdit
|
||||
@@ -3149,9 +3127,9 @@ object FormConfig: TFormConfig
|
||||
Top = 18
|
||||
Width = 33
|
||||
Height = 21
|
||||
TabOrder = 11
|
||||
TabOrder = 0
|
||||
Text = ' '
|
||||
OnChange = EditAdrSigChange
|
||||
OnKeyPress = EditAdrSigKeyPress
|
||||
end
|
||||
object ComboBoxAsp: TComboBox
|
||||
Left = 144
|
||||
@@ -3159,7 +3137,7 @@ object FormConfig: TFormConfig
|
||||
Width = 129
|
||||
Height = 21
|
||||
ItemHeight = 13
|
||||
TabOrder = 12
|
||||
TabOrder = 2
|
||||
OnChange = ComboBoxAspChange
|
||||
Items.Strings = (
|
||||
'2 feux'
|
||||
@@ -3179,9 +3157,9 @@ object FormConfig: TFormConfig
|
||||
Top = 176
|
||||
Width = 33
|
||||
Height = 21
|
||||
TabOrder = 13
|
||||
TabOrder = 14
|
||||
Visible = False
|
||||
OnChange = EditSpecUniChange
|
||||
OnKeyPress = EditSpecUniKeyPress
|
||||
end
|
||||
object Buttonrestaure: TButton
|
||||
Left = 8
|
||||
@@ -3192,9 +3170,18 @@ object FormConfig: TFormConfig
|
||||
Caption = 'Restaurer'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 14
|
||||
TabOrder = 13
|
||||
OnClick = ButtonrestaureClick
|
||||
end
|
||||
object CheckBoxFB: TCheckBox
|
||||
Left = 120
|
||||
Top = 240
|
||||
Width = 153
|
||||
Height = 17
|
||||
Caption = 'Avec demande feu blanc'
|
||||
TabOrder = 15
|
||||
OnClick = CheckBoxFBClick
|
||||
end
|
||||
end
|
||||
object RichSig: TRichEdit
|
||||
Left = 0
|
||||
@@ -3237,7 +3224,7 @@ object FormConfig: TFormConfig
|
||||
object ButtonInsFeu: TButton
|
||||
Left = 144
|
||||
Top = 32
|
||||
Width = 113
|
||||
Width = 145
|
||||
Height = 17
|
||||
Caption = 'Ajouter le feu supprim'#233
|
||||
TabOrder = 4
|
||||
@@ -3274,8 +3261,8 @@ object FormConfig: TFormConfig
|
||||
WordWrap = True
|
||||
end
|
||||
object GroupBoxPN: TGroupBox
|
||||
Left = -32
|
||||
Top = 24
|
||||
Left = 16
|
||||
Top = 16
|
||||
Width = 225
|
||||
Height = 289
|
||||
Caption = 'Actionneurs gestion passage '#224' niveau'
|
||||
@@ -3468,8 +3455,8 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
end
|
||||
object GroupBoxAct: TGroupBox
|
||||
Left = 16
|
||||
Top = 104
|
||||
Left = 48
|
||||
Top = 176
|
||||
Width = 225
|
||||
Height = 225
|
||||
Caption = 'Actionneur fonction de locomotive '
|
||||
|
||||
+463
-284
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+15
-2
@@ -1,6 +1,6 @@
|
||||
object FormDebug: TFormDebug
|
||||
Left = 192
|
||||
Top = 290
|
||||
Left = 203
|
||||
Top = 155
|
||||
Width = 855
|
||||
Height = 817
|
||||
Caption = 'Fen'#234'tre de d'#233'bug'
|
||||
@@ -434,6 +434,19 @@ object FormDebug: TFormDebug
|
||||
TabOrder = 6
|
||||
OnClick = CheckBoxAffDebDecSigClick
|
||||
end
|
||||
object EditDebugSignal: TEdit
|
||||
Left = 168
|
||||
Top = 12
|
||||
Width = 33
|
||||
Height = 18
|
||||
Hint =
|
||||
'Adresse du signal seul '#224' surveiller ou si 0 surveille tous les s' +
|
||||
'ignaux'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 7
|
||||
OnChange = EditDebugSignalChange
|
||||
end
|
||||
end
|
||||
object RichDebug: TRichEdit
|
||||
Left = 8
|
||||
|
||||
+15
-6
@@ -50,6 +50,7 @@ type
|
||||
ButtonSimuDet1: TButton;
|
||||
EditSimuDet: TEdit;
|
||||
ButtonRazTout: TButton;
|
||||
EditDebugSignal: TEdit;
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure ButtonEcrLogClick(Sender: TObject);
|
||||
procedure EditNivDebugKeyPress(Sender: TObject; var Key: Char);
|
||||
@@ -78,6 +79,7 @@ type
|
||||
procedure ButtonRazToutClick(Sender: TObject);
|
||||
procedure RichEditChange(Sender: TObject);
|
||||
procedure MemoEvtDetChange(Sender: TObject);
|
||||
procedure EditDebugSignalChange(Sender: TObject);
|
||||
private
|
||||
{ Déclarations privées }
|
||||
public
|
||||
@@ -91,7 +93,7 @@ Max_Trains=50;
|
||||
|
||||
var
|
||||
FormDebug: TFormDebug;
|
||||
NivDebug : integer;
|
||||
NivDebug,signalDebug : integer;
|
||||
AffSignal,AffAffect,initform,AffFD,debug_dec_sig : boolean;
|
||||
N_event_det : integer; // index du dernier évènement (de 1 à 20)
|
||||
event_det : array[1..Max_event_det] of integer;
|
||||
@@ -114,8 +116,6 @@ var
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure AfficheDebug(s : string;lacouleur : TColor);
|
||||
Procedure Raz_tout;
|
||||
procedure RE_ColorLine(ARichEdit: TRichEdit; ARow: Integer; AColor: TColor);
|
||||
@@ -139,8 +139,11 @@ end;
|
||||
|
||||
procedure AfficheDebug(s : string;lacouleur : TColor);
|
||||
begin
|
||||
FormDebug.RichDebug.Lines.add(s);
|
||||
RE_ColorLine(FormDebug.RichDebug,FormDebug.RichDebug.lines.count-1,lacouleur);
|
||||
with FormDebug.RichDebug do
|
||||
begin
|
||||
Lines.add(s);
|
||||
RE_ColorLine(FormDebug.RichDebug,FormDebug.RichDebug.lines.count-1,lacouleur);
|
||||
end;
|
||||
end;
|
||||
|
||||
Procedure Raz_tout;
|
||||
@@ -361,7 +364,7 @@ begin
|
||||
if s2[1]='A' then begin type2:=2;delete(s2,1,1);end else type2:=1;
|
||||
Val(s1,prec,erreur); if erreur<>0 then exit;
|
||||
Val(s2,Actuel,erreur); if erreur<>0 then exit;
|
||||
Adr:=detecteur_suivant_El(prec,type1,actuel,type2);
|
||||
Adr:=detecteur_suivant_El(prec,type1,actuel,type2,1);
|
||||
if Adr<9996 then AfficheDebug('Le détecteur suivant aux éléments '+IntToSTR(prec)+'/'+IntToSTR(actuel)+' est '+IntToSTR(Adr),clyellow)
|
||||
else AfficheDebug('Pas trouvé de détecteur suvant aux éléments '+IntToSTR(prec)+'/'+IntToSTR(actuel),clyellow);
|
||||
NivDebug:=AncDebug;
|
||||
@@ -449,4 +452,10 @@ begin
|
||||
SendMessage(MemoEvtDet.handle, WM_VSCROLL, SB_BOTTOM, 0);
|
||||
end;
|
||||
|
||||
procedure TFormDebug.EditDebugSignalChange(Sender: TObject);
|
||||
var erreur : integer;
|
||||
begin
|
||||
val(EditDebugSignal.text,signalDebug,erreur);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
Binary file not shown.
+2
-2
@@ -1,6 +1,6 @@
|
||||
object FormPrinc: TFormPrinc
|
||||
Left = 55
|
||||
Top = 177
|
||||
Left = 39
|
||||
Top = 183
|
||||
Width = 1212
|
||||
Height = 664
|
||||
Caption = 'Client TCP-IP CDM Rail ou USB - syst'#232'me LENZ'
|
||||
|
||||
+152
-96
@@ -177,6 +177,7 @@ type
|
||||
|
||||
const
|
||||
titre='Signaux complexes GL ';
|
||||
const espY = 15;//40; // espacement Y entre deux lignes de feux
|
||||
tempoFeu=100;
|
||||
MaxAcc=2048; // et aussi adresse maxi d'accessoire
|
||||
LargImg=50;HtImg=91; // Dimensions image des feux
|
||||
@@ -208,7 +209,7 @@ type TBranche = record
|
||||
Adresse : integer;
|
||||
modele : integer; // 0=n'existe pas 1=aiguillage 2=TJD 3=TJS 4=aiguillage triple
|
||||
position, // position actuelle : 1=dévié 2=droit (centrale LENZ)
|
||||
posInit, // position d'initialisation
|
||||
posInit, // position d'initialisation 1=dévié 2=droit 9=non positionné
|
||||
Adrtriple, // 2eme adresse pour un aiguillage triple
|
||||
temps, // temps de pilotage (durée de l'impulsion en x 100 ms)
|
||||
inversion : integer; // positionné dans fichier config_gl section_init
|
||||
@@ -245,7 +246,7 @@ TFeu = record
|
||||
adresse, aspect : integer; // adresse du feu, aspect (2 feux..9 feux 12=direction 2 feux .. 16=direction 6 feux)
|
||||
Img : TImage; // Pointeur sur structure TImage du feu
|
||||
Lbl : TLabel; // pointeur sur structure Tlabel du feu
|
||||
check : TCheckBox; // pointeur sur structure Checkbox avec feu blanc
|
||||
check : TCheckBox; // pointeur sur structure Checkbox "demande feu blanc"
|
||||
FeuBlanc : boolean ; // avec checkbox ou pas
|
||||
decodeur : integer; // type du décodeur
|
||||
Adr_det1 : integer; // adresse du détecteur1 sur lequel il est implanté
|
||||
@@ -349,8 +350,8 @@ var
|
||||
aiguillage : array[0..MaxAcc] of Taiguillage;
|
||||
// signaux - L'index du tableau n'est pas son adresse
|
||||
feux : array[1..MaxAcc] of Tfeu;
|
||||
Feu_supprime : Tfeu;
|
||||
Aig_supprime : TAiguillage;
|
||||
Feu_supprime,Feu_sauve : Tfeu;
|
||||
Aig_supprime,Aig_sauve : TAiguillage;
|
||||
|
||||
Fimage : Timage;
|
||||
BrancheN : array[1..100,1..200] of TBranche; //
|
||||
@@ -383,7 +384,7 @@ procedure Pilote_acc0_X(adresse : integer;octet : byte);
|
||||
procedure pilote_acc(adresse : integer;octet : byte;Acc : TAccessoire);
|
||||
function etat_signal_suivant(Adresse,rang : integer) : integer;
|
||||
function suivant_alg3(prec : integer;typeELprec : integer;var actuel : integer;typeElActuel : integer;alg : integer) : integer;
|
||||
function detecteur_suivant_El(el1: integer;TypeDet1 : integer;el2 : integer;TypeDet2 : integer) : integer ;
|
||||
function detecteur_suivant_El(el1: integer;TypeDet1 : integer;el2 : integer;TypeDet2,alg : integer) : integer ;
|
||||
function test_memoire_zones(adresse : integer) : boolean;
|
||||
function PresTrainPrec(AdrFeu : integer) : boolean;
|
||||
function cond_carre(adresse : integer) : boolean;
|
||||
@@ -1097,9 +1098,6 @@ begin
|
||||
begin
|
||||
FenRich.lines.add(s);
|
||||
RE_ColorLine(FenRich,FenRich.lines.count-1,lacouleur);
|
||||
//FenRich.SetFocus;
|
||||
//FenRich.SelStart := FenRich.GetTextLen;
|
||||
//FenRich.Perform(EM_SCROLLCARET, 0, 0);
|
||||
end;
|
||||
end;
|
||||
|
||||
@@ -1257,9 +1255,9 @@ end;
|
||||
|
||||
// créée une image dynamiquement pour un nouveau feu déclaré dans le fichier de config
|
||||
procedure cree_image(rang : integer);
|
||||
var TypeFeu : integer;
|
||||
var TypeFeu,adresse : integer;
|
||||
s : string;
|
||||
const espY = 15;//40; // espacement Y entre deux lignes de feux
|
||||
|
||||
begin
|
||||
TypeFeu:=feux[rang].aspect;
|
||||
if typeFeu<=0 then exit;
|
||||
@@ -1267,7 +1265,7 @@ begin
|
||||
with Feux[rang].Img do
|
||||
begin
|
||||
Parent:=Formprinc.ScrollBox1; // dire que l'image est dans la scrollBox1
|
||||
Name:='ImageFeu'+IntToSTR(rang); // nom de l'image - sert à identifier le composant si on fait clic droit.
|
||||
//Name:='ImageFeu'+IntToSTR(rang); // nom de l'image - sert à identifier le composant si on fait clic droit.
|
||||
Top:=(HtImg+espY+20)*((rang-1) div NbreImagePLigne); // détermine les points d'origine
|
||||
Left:=10+ (LargImg+5)*((rang-1) mod (NbreImagePLigne));
|
||||
width:=57;
|
||||
@@ -1289,10 +1287,11 @@ begin
|
||||
picture.Bitmap:=Select_dessin_feu(TypeFeu);
|
||||
|
||||
// mettre rouge par défaut
|
||||
if TypeFeu=2 then EtatSignalCplx[feux[rang].adresse]:=violet_F;
|
||||
if TypeFeu=3 then EtatSignalCplx[feux[rang].adresse]:=semaphore_F;
|
||||
if (TypeFeu>3) and (TypeFeu<10) then EtatSignalCplx[feux[rang].adresse]:=carre_F;
|
||||
if TypeFeu>10 then EtatSignalCplx[feux[rang].adresse]:=0;
|
||||
adresse:=Feux[rang].adresse;
|
||||
if TypeFeu=2 then EtatSignalCplx[adresse]:=violet_F;
|
||||
if TypeFeu=3 then EtatSignalCplx[adresse]:=semaphore_F;
|
||||
if (TypeFeu>3) and (TypeFeu<10) then EtatSignalCplx[adresse]:=carre_F;
|
||||
if TypeFeu>10 then EtatSignalCplx[adresse]:=0;
|
||||
|
||||
dessine_feu_mx(Feux[rang].Img.Canvas,0,0,1,1,feux[rang].adresse,1);
|
||||
//if feux[rang].aspect=5 then cercle(Picture.Bitmap.Canvas,13,22,6,ClYellow);
|
||||
@@ -1314,8 +1313,8 @@ begin
|
||||
if feux[rang].FeuBlanc then
|
||||
begin
|
||||
Feux[rang].check:=TCheckBox.create(Formprinc.ScrollBox1); // ranger l'adresse de la Checkbox dans la structure du feu
|
||||
Feux[rang].check.onClick:=formprinc.proc_checkBoxFB; // affecter l'adresse de la procédure de traitement quand on clique dessus
|
||||
Feux[rang].check.Hint:=intToSTR(rang); // affecter l'index du feu dans le HINT pour pouvoir le retrouver plus tard
|
||||
//Feux[rang].check.onClick:=formprinc.proc_checkBoxFB; // affecter l'adresse de la procédure de traitement quand on clique dessus non utilisé
|
||||
Feux[rang].check.Hint:=intToSTR(adresse); // affecter l'adresse du feu dans le HINT pour pouvoir le retrouver plus tard
|
||||
|
||||
with Feux[rang].Check do
|
||||
begin
|
||||
@@ -1326,7 +1325,8 @@ begin
|
||||
Left:=10+ (LargImg+5)*((rang-1) mod (NbreImagePLigne));
|
||||
BringToFront;
|
||||
end;
|
||||
end;
|
||||
end
|
||||
else Feux[rang].check:=nil;
|
||||
end;
|
||||
|
||||
// calcule le checksum d'une trame
|
||||
@@ -2597,7 +2597,7 @@ begin
|
||||
if (UniSem<>2) and (UniSem<>3) and (UniSem<>4) and (UniSem<>51) and (UniSem<>52) and (UniSem<>71) and (UniSem<>72) and (UniSem<>73) and
|
||||
((UniSem<90) or (UniSem>99)) then begin verif_UniSemaf:=1;exit;end;
|
||||
|
||||
aspect:=feux[adresse].aspect;
|
||||
aspect:=feux[index_feu(adresse)].aspect;
|
||||
if ((aspect=2) and (UniSem=2)) or
|
||||
((aspect=3) and (UniSem=3)) or
|
||||
((aspect=4) and (UniSem=4)) or
|
||||
@@ -2615,10 +2615,10 @@ var s,sa,chaine,SOrigine: string;
|
||||
trouve_sec_init,trouve_init_aig,trouve_lay,trouve_IPV4_INTERFACE,trouve_PROTOCOLE_SERIE,trouve_INTER_CAR,
|
||||
trouve_Tempo_maxi,trouve_Entete,trouve_tco,trouve_cdm,trouve_Serveur_interface,trouve_fenetre,
|
||||
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 : boolean;
|
||||
pds,trouve_section_branche,trouve_section_sig,trouve_section_act,compile_init_cfg : boolean;
|
||||
bd,virgule,i_detect,i,erreur,aig,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 : integer;
|
||||
postjd,postjs,nv,it,Num_Champ,asp,inversion : integer;
|
||||
label ici1,ici2,ici3,ici4 ;
|
||||
|
||||
function lit_ligne : string ;
|
||||
@@ -2674,6 +2674,7 @@ var s,sa,chaine,SOrigine: string;
|
||||
end;
|
||||
|
||||
begin
|
||||
compile_init_cfg:=true;
|
||||
debugConfig:=false;
|
||||
trouve_NbDetDist:=false;
|
||||
trouve_ipv4_PC:=false;
|
||||
@@ -2975,6 +2976,28 @@ begin
|
||||
virgule:=pos(',',enregistrement);if virgule=0 then virgule:=length(enregistrement)+1;
|
||||
delete(enregistrement,1,virgule);
|
||||
end;
|
||||
|
||||
// Init aiguillage
|
||||
i:=pos('INIT(',enregistrement);
|
||||
if i=1 then
|
||||
begin
|
||||
compile_init_cfg:=false; // ne pas compiler la section init du fichier config-gl.cfg
|
||||
inc(num_champ);
|
||||
delete(enregistrement,i,i+4);
|
||||
Val(enregistrement,position,erreur);
|
||||
i:=pos(',',enregistrement);
|
||||
if i<>0 then delete(enregistrement,1,i);
|
||||
Val(enregistrement,j,erreur);
|
||||
i:=pos(',',enregistrement);
|
||||
if i<>0 then delete(enregistrement,1,i);
|
||||
Val(enregistrement,inversion,erreur);
|
||||
aiguillage[maxaiguillage].temps:=j;
|
||||
aiguillage[maxaiguillage].inversion:=inversion;
|
||||
aiguillage[maxaiguillage].posinit:=position;
|
||||
i:=pos(')',enregistrement);
|
||||
delete(enregistrement,1,i);
|
||||
end;
|
||||
|
||||
inc(itl);
|
||||
until (enregistrement='') or (itl>3);
|
||||
if itl>4 then begin Affiche('Erreur 400 ligne '+sOrigine,clred);closefile(fichier);exit;end;
|
||||
@@ -3039,7 +3062,6 @@ begin
|
||||
end;
|
||||
until (s='0');
|
||||
NbreFeux:=i-1; if NbreFeux<0 then NbreFeux:=0;
|
||||
//Affiche('Nombre de feux='+IntToSTR(NbreFeux),clYellow);
|
||||
|
||||
configNulle:=(maxAiguillage=0) and (NbreBranches=0) and (Nbrefeux=0);
|
||||
if configNulle then Affiche('Fonctionnement en config nulle',ClYellow);
|
||||
@@ -3259,11 +3281,9 @@ begin
|
||||
inc(nv);
|
||||
trouve_fonte:=true;
|
||||
delete(s,i,length(sa));
|
||||
TailleFonte:=StrToINT(s);
|
||||
with FormPrinc.FenRich do
|
||||
begin
|
||||
Font.Size:=TailleFonte;
|
||||
end;
|
||||
val(s,TailleFonte,erreur);
|
||||
if (TailleFonte<8) or (tailleFonte>25) then taillefonte:=10;
|
||||
FormPrinc.FenRich.Font.Size:=TailleFonte;
|
||||
end;
|
||||
|
||||
// adresse ip et port de CDM
|
||||
@@ -3277,8 +3297,9 @@ begin
|
||||
i:=pos(':',s);
|
||||
if i<>0 then
|
||||
begin
|
||||
adresseIPCDM:=copy(s,1,i-1);Delete(s,1,i);portCDM:=StrToINT(s);
|
||||
if portCDM=0 then affiche('Erreur port nul : '+s,clred);
|
||||
adresseIPCDM:=copy(s,1,i-1);Delete(s,1,i);
|
||||
val(s,portCDM,erreur);
|
||||
if (portCDM=0) or (portCDM>65535) or (erreur<>0) then affiche('Erreur port CDM : '+s,clred);
|
||||
end
|
||||
else affiche('Erreur adresse ip cdm rail '+s,clred);
|
||||
end;
|
||||
@@ -3390,11 +3411,18 @@ begin
|
||||
end;
|
||||
|
||||
i:=pos(uppercase(section_init),s);
|
||||
if i<>0 then
|
||||
if (i<>0) then
|
||||
begin
|
||||
inc(nv);
|
||||
trouve_sec_init:=true;
|
||||
compile_section_init;
|
||||
if compile_init_cfg then
|
||||
begin
|
||||
trouve_sec_init:=true;
|
||||
compile_section_init;
|
||||
inc(nv);
|
||||
Affiche('compilation de la section [init aig]',cllime);
|
||||
end;
|
||||
Affiche('Attention la section [init_aig] n''est plus gérée, elle est déplacée dans la configuration des aiguillages',clWhite);
|
||||
Affiche('Veuillez regénérer les fichiers de configuration: ',clWhite);
|
||||
Affiche('Menu Divers/configuration bouton "Enregistrement de la configuration et fermer"',clWhite);
|
||||
end;
|
||||
|
||||
sa:=uppercase(verif_version_ch)+'=';
|
||||
@@ -3491,30 +3519,27 @@ begin
|
||||
end;
|
||||
inc(it);
|
||||
|
||||
until (Nv>=19) or (it>30);
|
||||
until ((Nv>=19) and compile_init_cfg) or ((Nv>=18) and not(compile_init_cfg)) or (it>30);
|
||||
|
||||
//affiche(IntToSTR(Nv)+' variables',cyan);
|
||||
s:='';
|
||||
if (nv<19) then s:='ERREUR: manque variables dans config-gl.cfg :';
|
||||
|
||||
if not(trouve_NbDetDist) then s:=s+' '+nb_det_dist_ch;
|
||||
if not(trouve_ipv4_PC) then s:=s+' '+IpV4_PC_ch;
|
||||
if not(trouve_retro) then s:=s+' '+retro_ch;
|
||||
if not(trouve_sec_init) then s:=s+' '+section_init;
|
||||
if not(trouve_init_aig) then s:=s+' '+INIT_AIG_ch;
|
||||
if not(trouve_lay) then s:=s+' '+LAY_ch;
|
||||
if not(trouve_INTER_CAR) then s:=s+' '+INTER_CAR_ch;
|
||||
if not(trouve_Tempo_maxi) then s:=s+' '+Tempo_maxi_ch;
|
||||
if not(trouve_Entete) then s:=s+' '+Entete_ch;
|
||||
if not(trouve_TCO) then s:=s+' '+TCO_ch;
|
||||
if not(trouve_CDM) then s:=s+' '+CDM_ch;
|
||||
if not(trouve_Serveur_interface) then s:=s+' '+Serveur_interface_ch;
|
||||
if not(trouve_fenetre) then s:=s+' '+fenetre_ch;
|
||||
if not(trouve_tempo_aig) then s:=s+' '+tempo_aig_ch;
|
||||
if not(trouve_NOTIF_VERSION) then s:=s+' '+NOTIF_VERSION_ch;
|
||||
if not(trouve_verif_version) then s:=s+' '+verif_version_ch;
|
||||
if not(trouve_fonte) then s:=s+' '+fonte_ch;
|
||||
if s<>'' then affiche(s,clred);
|
||||
s:='';//Affiche(intToSTR(Nv),clred);
|
||||
if not(trouve_NbDetDist) then s:=nb_det_dist_ch;
|
||||
if not(trouve_ipv4_PC) then s:=IpV4_PC_ch;
|
||||
if not(trouve_retro) then s:=retro_ch;
|
||||
//if not(trouve_sec_init) and compile_init_cfg then s:=section_init;
|
||||
if not(trouve_init_aig) then s:=INIT_AIG_ch;
|
||||
if not(trouve_lay) then s:=LAY_ch;
|
||||
if not(trouve_INTER_CAR) then s:=INTER_CAR_ch;
|
||||
if not(trouve_Tempo_maxi) then s:=Tempo_maxi_ch;
|
||||
if not(trouve_Entete) then s:=Entete_ch;
|
||||
if not(trouve_TCO) then s:=TCO_ch;
|
||||
if not(trouve_CDM) then s:=CDM_ch;
|
||||
if not(trouve_Serveur_interface) then s:=Serveur_interface_ch;
|
||||
if not(trouve_fenetre) then s:=fenetre_ch;
|
||||
if not(trouve_tempo_aig) then s:=tempo_aig_ch;
|
||||
if not(trouve_NOTIF_VERSION) then s:=NOTIF_VERSION_ch;
|
||||
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 config-gl.cfg '+s,clred);
|
||||
|
||||
closefile(fichier);
|
||||
verif_coherence;
|
||||
@@ -3622,7 +3647,8 @@ begin
|
||||
AfficheDebug(s,clred);
|
||||
Suivant_alg3:=9999;exit;
|
||||
end;
|
||||
if NivDebug=3 then AfficheDebug('Alg3 précédent='+intToSTR(prec)+'/'+intToStr(TypeElprec)+' actuel='+intToSTR(actuel)+'/'+IntToSTR(typeElActuel),clyellow);
|
||||
if NivDebug=3 then
|
||||
AfficheDebug('Alg3 précédent='+intToSTR(prec)+'/'+intToStr(TypeElprec)+' actuel='+intToSTR(actuel)+'/'+IntToSTR(typeElActuel)+' Alg='+intToSTr(alg),clyellow);
|
||||
// trouver les éléments du précédent
|
||||
trouve_element(prec,TypeELPrec,1); // branche_trouve IndexBranche_trouve
|
||||
if IndexBranche_trouve=0 then
|
||||
@@ -4187,9 +4213,10 @@ end;
|
||||
// algo= type d'algorythme pour suivant_alg3
|
||||
function detecteur_suivant(prec : integer;TypeElPrec : integer;actuel : integer;TypeElActuel,algo : integer) : integer ;
|
||||
var actuelCalc,PrecCalc,j,AdrSuiv ,indexCalc,
|
||||
TypeprecCalc,TypeActuelCalc : integer;
|
||||
TypeprecCalc,TypeActuelCalc : integer;
|
||||
begin
|
||||
if NivDebug>=2 then AfficheDebug('Proc Detecteur_suivant '+IntToSTR(prec)+','+IntToSTR(typeElPrec)+'/'+intToSTR(actuel)+','+intToSTR(TypeElActuel),clyellow);
|
||||
if NivDebug>=2 then
|
||||
AfficheDebug('Proc Detecteur_suivant '+IntToSTR(prec)+','+IntToSTR(typeElPrec)+'/'+intToSTR(actuel)+','+intToSTR(TypeElActuel)+' Alg='+IntToSTR(algo),clyellow);
|
||||
j:=0;
|
||||
|
||||
PrecCalc:=prec;
|
||||
@@ -4199,7 +4226,7 @@ begin
|
||||
// étape 1 trouver le sens
|
||||
repeat
|
||||
inc(j);
|
||||
AdrSuiv:=suivant_alg3(precCalc,TypeprecCalc,actuelCalc,TypeActuelCalc,algo);
|
||||
AdrSuiv:=suivant_alg3(precCalc,TypeprecCalc,actuelCalc,TypeActuelCalc,algo);
|
||||
indexCalc:=index_aig(actuelCalc);
|
||||
if (typeGen=2) and false then // si le précédent est une TJD/S et le suivant aussi
|
||||
begin
|
||||
@@ -4290,13 +4317,13 @@ end;
|
||||
// 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é
|
||||
function detecteur_suivant_El(el1: integer;TypeDet1 : integer;el2 : integer;TypeDet2 : integer) : integer ;
|
||||
function detecteur_suivant_El(el1: integer;TypeDet1 : integer;el2 : integer;TypeDet2,alg : integer) : integer ;
|
||||
var IndexBranche_det1,IndexBranche_det2,branche_trouve_det1,branche_trouve_det2,i,
|
||||
j,AdrPrec,Adr,AdrFonc,TypePrec,TypeFonc,i1,N_det : integer;
|
||||
Sortie : boolean;
|
||||
s : string;
|
||||
label reprise;
|
||||
|
||||
|
||||
begin
|
||||
if NivDebug>=2 then
|
||||
AfficheDebug('Proc Detecteur_suivant_EL '+intToSTR(el1)+','+intToSTR(Typedet1)+'/'+intToSTR(el2)+','+intToSTR(Typedet2)+'-------------------------',clLime);
|
||||
@@ -4362,7 +4389,7 @@ begin
|
||||
repeat
|
||||
//AfficheDebug('Engage '+IntToSTR(AdrPrec)+','+IntToSTR(typePrec)+'/'+IntToSTR(AdrFonc)+','+IntToSTR(typeFonc),clyellow);
|
||||
if nivDebug=3 then AfficheDebug('i='+IntToSTR(i)+' NDet='+IntToSTR(N_det),clyellow);
|
||||
if (AdrFonc<>0) or (TypeFonc<>0) then Adr:=suivant_alg3(AdrPrec,TypePrec,AdrFonc,TypeFonc,1) else
|
||||
if (AdrFonc<>0) or (TypeFonc<>0) then Adr:=suivant_alg3(AdrPrec,TypePrec,AdrFonc,TypeFonc,alg) else
|
||||
begin
|
||||
Adr:=9999;
|
||||
end;
|
||||
@@ -4401,7 +4428,7 @@ begin
|
||||
i:=0;
|
||||
repeat
|
||||
//AfficheDebug('Engage '+IntToSTR(AdrPrec)+','+IntToSTR(typePrec)+'/'+IntToSTR(AdrFonc)+','+IntToSTR(typeFonc),clyellow);
|
||||
Adr:=suivant_alg3(AdrPrec,TypePrec,AdrFonc,TypeFonc,1);
|
||||
Adr:=suivant_alg3(AdrPrec,TypePrec,AdrFonc,TypeFonc,alg);
|
||||
//AfficheDebug('Sortie Alg3: '+IntToSTR(Adr)+'/'+intToSTR(typeGen),clyellow);
|
||||
|
||||
if NivDebug=3 then
|
||||
@@ -5006,7 +5033,7 @@ function test_route_valide(det1,det2,det3 : integer) : integer;
|
||||
var det_suiv,resultat : integer;
|
||||
begin
|
||||
if TraceListe then AfficheDebug('test route valide '+IntToSTR(det1)+' '+IntToSTR(det2)+' vers '+IntToSTR(det3)+' ',clyellow);
|
||||
det_suiv:=detecteur_suivant_el(det1,1,det2,1);
|
||||
det_suiv:=detecteur_suivant_el(det1,1,det2,1,1);
|
||||
if det_suiv=det3 then begin test_route_valide:=10;exit;end;
|
||||
|
||||
test_route_valide:=9999;
|
||||
@@ -5018,7 +5045,7 @@ begin
|
||||
begin
|
||||
test_route_valide:=0;exit;
|
||||
// si manipulation proche aiguillage
|
||||
det_suiv:=detecteur_suivant_el(det3,1,det2,1);
|
||||
det_suiv:=detecteur_suivant_el(det3,1,det2,1,1);
|
||||
if (det_suiv>=9996) or (det1<>det_suiv) then begin test_route_valide:=0; NivDebug:=0;exit;end;
|
||||
end;
|
||||
test_route_valide:=10 ;
|
||||
@@ -5075,20 +5102,20 @@ begin
|
||||
if feux[i].Btype_suiv4=4 then Btype_el_suivant:=2;
|
||||
end;
|
||||
if (det_initial<>0) then
|
||||
begin
|
||||
begin
|
||||
DetPrec1:=detecteur_suivant(Adr_El_Suiv,Btype_el_suivant,det_initial,1,2); // 2= algo2 = arret sur aiguillage en talon mal positionné
|
||||
if nivdebug=3 then afficheDebug('detPrec1='+intToSTR(DetPrec1),clorange);
|
||||
if DetPrec1<1024 then // route bloquée par aiguillage mal positionné
|
||||
begin
|
||||
if detPrec1<>0 then DetPrec2:=detecteur_suivant_El(det_initial,1,DetPrec1,1) else DetPrec2:=0;
|
||||
if detPrec1<>0 then DetPrec2:=detecteur_suivant_El(det_initial,1,DetPrec1,1,2) else DetPrec2:=0;
|
||||
if nivdebug=3 then afficheDebug('detPrec2='+intToSTR(DetPrec2),clorange);
|
||||
if DetPrec2<1024 then
|
||||
begin
|
||||
if detPrec2<>0 then DetPrec3:=detecteur_suivant_El(DetPrec1,1,DetPrec2,1) else DetPrec3:=0;
|
||||
if detPrec2<>0 then DetPrec3:=detecteur_suivant_El(DetPrec1,1,DetPrec2,1,2) else DetPrec3:=0;
|
||||
if nivdebug=3 then afficheDebug('detPrec3='+intToSTR(DetPrec3),clorange);
|
||||
if DetPrec3<1024 then
|
||||
begin
|
||||
if detPrec3<>0 then DetPrec4:=detecteur_suivant_El(DetPrec2,1,DetPrec3,1) else DetPrec4:=0;
|
||||
if detPrec3<>0 then DetPrec4:=detecteur_suivant_El(DetPrec2,1,DetPrec3,1,2) else DetPrec4:=0;
|
||||
if nivdebug=3 then afficheDebug('detPrec4='+intToSTR(DetPrec4),clorange);
|
||||
if DetPrec4<1024 then
|
||||
begin
|
||||
@@ -5122,7 +5149,7 @@ end;
|
||||
|
||||
// mise à jour de l'état d'un feu en fontion de son environnement et affiche le feu
|
||||
procedure Maj_Feu(Adrfeu : integer);
|
||||
var i,Adr_det,etat,Aig,Adr_El_Suiv,
|
||||
var Adr_det,etat,Aig,Adr_El_Suiv,
|
||||
Btype_el_suivant,modele,index : integer ;
|
||||
PresTrain,Aff_semaphore,car : boolean;
|
||||
code,combine : word;
|
||||
@@ -5130,16 +5157,17 @@ var i,Adr_det,etat,Aig,Adr_El_Suiv,
|
||||
begin
|
||||
s:='Traitement du feu '+intToSTR(Adrfeu)+'------------------------------------';
|
||||
|
||||
if signalDebug=AdrFeu then AffSignal:=true;
|
||||
if AffSignal then AfficheDebug(s,clOrange);
|
||||
i:=index_feu(Adrfeu);
|
||||
index:=index_feu(Adrfeu);
|
||||
if AdrFeu<>0 then
|
||||
begin
|
||||
modele:=Feux[i].aspect;
|
||||
|
||||
Adr_det:=Feux[i].Adr_det1; // détecteur sur le signal
|
||||
Adr_El_Suiv:=Feux[i].Adr_el_suiv1; // adresse élément suivant au feu
|
||||
Btype_el_suivant:=Feux[i].Btype_suiv1;
|
||||
modele:=Feux[index].aspect;
|
||||
|
||||
Adr_det:=Feux[index].Adr_det1; // détecteur sur le signal
|
||||
Adr_El_Suiv:=Feux[index].Adr_el_suiv1; // adresse élément suivant au feu
|
||||
Btype_el_suivant:=Feux[index].Btype_suiv1;
|
||||
|
||||
// signal directionnel ?
|
||||
if (modele>10) then
|
||||
begin
|
||||
@@ -5179,7 +5207,7 @@ begin
|
||||
}
|
||||
|
||||
// signal à 2 feux = carré violet+blanc
|
||||
if (Feux[i].aspect=2) then //or (feux[i].check<>nil) then // si carré violet
|
||||
if (Feux[index].aspect=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
|
||||
@@ -5201,21 +5229,21 @@ begin
|
||||
|
||||
//if AffSignal then AfficheDebug('Debut du traitement général',clYellow);
|
||||
// traitement des feux >3 feux différents de violet (cas général)
|
||||
if (Feux[i].aspect>=3) and (EtatSignalCplx[AdrFeu]<>violet_F) then
|
||||
if (Feux[index].aspect>=3) and (EtatSignalCplx[AdrFeu]<>violet_F) then
|
||||
begin
|
||||
PresTrain:=false;
|
||||
// détecteurs précédent le feu , pour déterminer si leurs mémoires de zones sont à 1 pour libérer le carré
|
||||
if (Feux[i].VerrouCarre) and (Feux[i].aspect>=4) then presTrain:=PresTrainPrec(AdrFeu);
|
||||
if (Feux[index].VerrouCarre) and (Feux[index].aspect>=4) then presTrain:=PresTrainPrec(AdrFeu);
|
||||
|
||||
if AffSignal then afficheDebug('Fin de la recherche des 4 détecteurs précédents-----',clOrange);
|
||||
// si le signal peut afficher un carré et les aiguillages après le signal sont mal positionnées ou que pas présence train avant signal et signal
|
||||
// verrouillable au carré, afficher un carré
|
||||
car:=carre_signal(AdrFeu);
|
||||
// conditions supplémentaires de carré en fonction des aiguillages décrits
|
||||
car:=cond_carre(AdrFeu) or car;
|
||||
car:=cond_carre(AdrFeu) or car;
|
||||
if AffSignal and car then AfficheDebug('le signal a des aiguilles en talon aval mal positionnées',clYellow);
|
||||
if (NivDebug>=1) and car then AfficheDebug('le signal a des aiguilles en talon aval mal positionnées',clYellow);
|
||||
if (Feux[i].aspect>=4) and ( (not(PresTrain) and Feux[i].VerrouCarre) or car) then Maj_Etat_Signal(AdrFeu,carre)
|
||||
if (Feux[index].aspect>=4) and ( (not(PresTrain) and Feux[index].VerrouCarre) or car) then Maj_Etat_Signal(AdrFeu,carre)
|
||||
else
|
||||
begin
|
||||
// si on quitte le détecteur on affiche un sémaphore : attention tester le sens de circulation
|
||||
@@ -5232,12 +5260,11 @@ begin
|
||||
end
|
||||
else
|
||||
begin
|
||||
// si aiguille locale déviée
|
||||
Aig:=Aiguille_deviee(Adrfeu);
|
||||
index:=index_aig(Aig);
|
||||
if (aig<>0) and (feux[i].aspect>=9) then // si le signal peut afficher un rappel et aiguille déviée
|
||||
// si aiguille locale déviée
|
||||
if (aig<>0) and (feux[index].aspect>=9) then // si le signal peut afficher un rappel et aiguille déviée
|
||||
begin
|
||||
if AffSignal then AfficheDebug('Aiguille '+intToSTR(aig)+' déviée',clYellow);
|
||||
if AffSignal then AfficheDebug('Aiguille '+intToSTR(AdrFeu)+' déviée',clYellow);
|
||||
EtatSignalCplx[AdrFeu]:=0;
|
||||
if (aiguillage[index].vitesse=30) or (aiguillage[index].vitesse=0) then Maj_Etat_Signal(AdrFeu,rappel_30);
|
||||
if aiguillage[index].vitesse=60 then Maj_Etat_Signal(AdrFeu,rappel_60);
|
||||
@@ -5275,7 +5302,15 @@ begin
|
||||
else
|
||||
// si le signal suivant est jaune
|
||||
if TestBit(etat,jaune) then Maj_Etat_Signal(AdrFeu,jaune_cli)
|
||||
else Maj_Etat_Signal(AdrFeu,vert)
|
||||
else
|
||||
begin
|
||||
if feux[index].check<>nil then
|
||||
begin
|
||||
if feux[index].check.Checked then Maj_Etat_Signal(AdrFeu,blanc);
|
||||
end
|
||||
else
|
||||
Maj_Etat_Signal(AdrFeu,vert);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@@ -5283,6 +5318,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
envoi_signauxCplx;
|
||||
if signalDebug=AdrFeu then AffSignal:=false;
|
||||
end;
|
||||
|
||||
Procedure Maj_feux;
|
||||
@@ -5381,7 +5417,7 @@ begin
|
||||
resultat:=test_route_valide(det1,det2,det3);
|
||||
if resultat=10 then
|
||||
begin
|
||||
AdrSuiv:=detecteur_suivant_el(det2,1,det3,1); // ici on cherche le suivant à det2 det3
|
||||
AdrSuiv:=detecteur_suivant_el(det2,1,det3,1,1); // ici on cherche le suivant à det2 det3, algo=1
|
||||
if (Adrsuiv>=9996) then
|
||||
begin
|
||||
Affiche('Erreur 1500 : pas de suivant sur la route de '+intToSTR(det2)+' à '+intToSTR(det3),clRed);
|
||||
@@ -5781,12 +5817,9 @@ var s: string;
|
||||
faire_event,inv : boolean;
|
||||
prov,i,index : integer;
|
||||
begin
|
||||
// vérifier que l'évènement accessoire vient bien d'un aiguillage et pas d'un feu
|
||||
i:=0;
|
||||
repeat
|
||||
inc(i);
|
||||
until (i>MaxAiguillage) or (i=adresse);
|
||||
if i>MaxAiguillage then exit; // non ce n'est pas un aiguillage, on sort
|
||||
// vérifier que l'évènement accessoire vient bien d'un aiguillage et pas d'un feu qu'on pilote (et que cdm renvoie)
|
||||
index:=index_aig(adresse);
|
||||
if index>MaxAiguillage then exit; // non ce n'est pas un aiguillage, on sort
|
||||
|
||||
// si l'aiguillage est inversé dans CDM et qu'on est en mode autonome, inverser sa position
|
||||
inv:=false;
|
||||
@@ -7081,10 +7114,33 @@ begin
|
||||
demande_etat_acc;
|
||||
end;
|
||||
|
||||
// procédure Event appelée si on clique sur un checkbox des images des feux
|
||||
// procédure Event appelée si on clique sur un checkbox de demande de feu blanc des images des feux
|
||||
// non utilisé
|
||||
procedure TFormprinc.proc_checkBoxFB(Sender : Tobject);
|
||||
var s : string;
|
||||
Cb : TcheckBox;
|
||||
etat,adresse,erreur : integer;
|
||||
i : word;
|
||||
coche : boolean;
|
||||
begin
|
||||
Maj_feux ; // évalue l'état des signaux
|
||||
Cb:=Sender as TcheckBox;
|
||||
coche:=cb.Checked; // état de la checkbox
|
||||
s:=Cb.Hint;
|
||||
val(s,adresse,erreur); // adresse du signal correspondant au checkbox cliqué
|
||||
if erreur=0 then
|
||||
begin
|
||||
i:=index_feu(adresse);
|
||||
etat:=feux[i].EtatSignal;
|
||||
affiche(IntToSTR(etat),clyellow);
|
||||
// si le feu est vert et que la coche est mise, substituer le blanc
|
||||
if (etat=vert_F) and coche then
|
||||
begin
|
||||
Maj_Etat_Signal(Adresse,blanc);
|
||||
Envoi_signauxCplx;
|
||||
end;
|
||||
// si pas coché, on revient en normal
|
||||
if not(coche) then rafraichit;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
BIN
Binary file not shown.
+3
-6
@@ -2328,14 +2328,11 @@ begin
|
||||
AdrSuiv:=BrancheN[IndexMax,i+1].Adresse;
|
||||
index:=Index_aig(adresse);
|
||||
// connecté sur position droite : la pointe est à gauche
|
||||
if aiguillage[Index].Adroit=AdrSuiv then
|
||||
Bimage:=3; // ou 4
|
||||
if aiguillage[Index].Adroit=AdrSuiv then Bimage:=3; // ou 4
|
||||
// connecté sur position déviée : la pointe est à gauche, mais il faut changer de ligne
|
||||
if aiguillage[Index].Adevie=AdrSuiv then
|
||||
Bimage:=4; // ou 4
|
||||
if aiguillage[Index].Adevie=AdrSuiv then Bimage:=4; // ou 4
|
||||
// connecté sur pointe : la pointe est à droite
|
||||
if aiguillage[Index].Apointe=AdrSuiv then
|
||||
Bimage:=5; // ou 2
|
||||
if aiguillage[Index].Apointe=AdrSuiv then Bimage:=5; // ou 2
|
||||
TCO[i,ligne].BImage:=Bimage;
|
||||
end;
|
||||
|
||||
|
||||
@@ -59,6 +59,10 @@ version 3.0 : Ajout des fonctions Nouveau / supprimer feu, accessoires dans le
|
||||
version 3.1 : Renforcement de la vérification de la configuration.
|
||||
Modification de la liste d'initialisation des aiguillages en mode autonome.
|
||||
Indépendance des modifications entre les onglets du panneau de configuration.
|
||||
Correction d'un bug sur l'affichage des rappels de ralentissement non présentés.
|
||||
Correction d'un bug sur certains évènements aiguillages.
|
||||
Correction d'un bug sur présence train avant signal sur aiguille en talon mal positionnée.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user