This commit is contained in:
f1iwq2 committed 2021-08-05 11:48:19 +02:00
1 parent ba7be100e6
commit ed7a721910
15 files changed
+758 -513

No files matched your search

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