This commit is contained in:
f1iwq2
2020-10-22 11:32:07 +02:00
parent 1e91ee0126
commit c636f7ddfa
14 changed files with 298 additions and 129 deletions

Binary file not shown.

View File

@@ -1,6 +1,6 @@
object FormConfig: TFormConfig object FormConfig: TFormConfig
Left = 305 Left = 235
Top = 330 Top = 312
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'
@@ -1744,6 +1744,13 @@ object FormConfig: TFormConfig
Proportional = True Proportional = True
Visible = False Visible = False
end end
object Label29: TLabel
Left = 144
Top = 68
Width = 6
Height = 13
Caption = #224
end
object ButtonAppliquerEtFermer: TButton object ButtonAppliquerEtFermer: TButton
Left = 384 Left = 384
Top = 440 Top = 440
@@ -1769,7 +1776,7 @@ object FormConfig: TFormConfig
Top = 8 Top = 8
Width = 585 Width = 585
Height = 417 Height = 417
ActivePage = TabSheetAig ActivePage = TabSheetAct
Font.Charset = DEFAULT_CHARSET Font.Charset = DEFAULT_CHARSET
Font.Color = clBackground Font.Color = clBackground
Font.Height = -11 Font.Height = -11
@@ -2433,14 +2440,14 @@ object FormConfig: TFormConfig
object LabelTJD1: TLabel object LabelTJD1: TLabel
Left = 112 Left = 112
Top = 208 Top = 208
Width = 28 Width = 52
Height = 13 Height = 13
Caption = 'LabelTJD1' Caption = 'LabelTJD1'
end end
object LabelTJD2: TLabel object LabelTJD2: TLabel
Left = 168 Left = 168
Top = 208 Top = 208
Width = 28 Width = 52
Height = 13 Height = 13
Caption = 'LabelTJD1' Caption = 'LabelTJD1'
end end
@@ -2739,7 +2746,7 @@ object FormConfig: TFormConfig
Top = 48 Top = 48
Width = 129 Width = 129
Height = 21 Height = 21
ItemHeight = 13 ItemHeight = 0
TabOrder = 1 TabOrder = 1
OnChange = ComboBoxDecChange OnChange = ComboBoxDecChange
end end
@@ -2879,26 +2886,37 @@ object FormConfig: TFormConfig
TabOrder = 0 TabOrder = 0
object RadioButtonLoc: TRadioButton object RadioButtonLoc: TRadioButton
Left = 24 Left = 24
Top = 24 Top = 16
Width = 193 Width = 193
Height = 17 Height = 17
Caption = 'Fonction F pour locomotive' Caption = 'Fonction F pour locomotive'
Enabled = False
TabOrder = 0 TabOrder = 0
end end
object RadioButtonPN: TRadioButton object RadioButtonPN: TRadioButton
Left = 24 Left = 24
Top = 40 Top = 48
Width = 193 Width = 193
Height = 17 Height = 17
Caption = 'Gestion de passage '#224' niveau' Caption = 'Gestion de passage '#224' niveau'
Enabled = False
TabOrder = 1 TabOrder = 1
end end
object RadioButtonAccess: TRadioButton
Left = 24
Top = 32
Width = 161
Height = 17
Caption = 'Fonction F pour accessoire'
Enabled = False
TabOrder = 2
end
end end
object GroupBoxAct: TGroupBox object GroupBoxAct: TGroupBox
Left = 16 Left = 8
Top = 208 Top = 200
Width = 225 Width = 225
Height = 129 Height = 145
Caption = 'Actionneur fonction de locomotive ' Caption = 'Actionneur fonction de locomotive '
TabOrder = 1 TabOrder = 1
object LabelActionneur: TLabel object LabelActionneur: TLabel
@@ -2936,6 +2954,13 @@ object FormConfig: TFormConfig
Height = 13 Height = 13
Caption = 'Tempo (ms)' Caption = 'Tempo (ms)'
end end
object Label30: TLabel
Left = 168
Top = 24
Width = 6
Height = 13
Caption = #224
end
object EditAct: TEdit object EditAct: TEdit
Left = 112 Left = 112
Top = 20 Top = 20
@@ -2952,15 +2977,15 @@ object FormConfig: TFormConfig
TabOrder = 1 TabOrder = 1
Text = 'EditTrain' Text = 'EditTrain'
end end
object EditEtat: TEdit object EditEtatFoncSortie: TEdit
Left = 160 Left = 160
Top = 68 Top = 68
Width = 25 Width = 25
Height = 21 Height = 21
TabOrder = 2 TabOrder = 2
Text = 'EditEtat' Text = 'EditEtatFoncSortie'
end end
object EditFonction: TEdit object EditFonctionAccess: TEdit
Left = 112 Left = 112
Top = 68 Top = 68
Width = 25 Width = 25
@@ -2976,10 +3001,26 @@ object FormConfig: TFormConfig
TabOrder = 4 TabOrder = 4
Text = 'EditTempo' Text = 'EditTempo'
end end
object EditEtatActionneur: TEdit
Left = 184
Top = 20
Width = 25
Height = 21
TabOrder = 5
Text = 'EditEtat'
end
object CheckRAZ: TCheckBox
Left = 48
Top = 120
Width = 145
Height = 17
Caption = 'Remise '#224' 0 apr'#232's pilotage'
TabOrder = 6
end
end end
object GroupBoxPN: TGroupBox object GroupBoxPN: TGroupBox
Left = 16 Left = 72
Top = 104 Top = 8
Width = 225 Width = 225
Height = 193 Height = 193
Caption = 'Actionneurs gestion passage '#224' niveau' Caption = 'Actionneurs gestion passage '#224' niveau'

View File

@@ -125,9 +125,9 @@ type
EditAct: TEdit; EditAct: TEdit;
EditTrain: TEdit; EditTrain: TEdit;
LabelTrain: TLabel; LabelTrain: TLabel;
EditEtat: TEdit; EditEtatFoncSortie: TEdit;
Labela: TLabel; Labela: TLabel;
EditFonction: TEdit; EditFonctionAccess: TEdit;
LabelFonction: TLabel; LabelFonction: TLabel;
EditTempo: TEdit; EditTempo: TEdit;
LabelTempo: TLabel; LabelTempo: TLabel;
@@ -176,6 +176,11 @@ type
Label28: TLabel; Label28: TLabel;
LabelTJD2: TLabel; LabelTJD2: TLabel;
CheckInverse: TCheckBox; CheckInverse: TCheckBox;
RadioButtonAccess: TRadioButton;
Label29: TLabel;
Label30: TLabel;
EditEtatActionneur: TEdit;
CheckRAZ: TCheckBox;
procedure ButtonAppliquerEtFermerClick(Sender: TObject); procedure ButtonAppliquerEtFermerClick(Sender: TObject);
procedure Button2Click(Sender: TObject); procedure Button2Click(Sender: TObject);
procedure FormActivate(Sender: TObject); procedure FormActivate(Sender: TObject);
@@ -1324,13 +1329,10 @@ begin
LabelElSuiv.visible:=false; LabelElSuiv.visible:=false;
end; end;
end; end;
end; end;
Procedure aff_champs_act; Procedure aff_champs_act;
var i,v, ligne,etatact,erreur, adresse,fonction,tempo : integer; var i,v, ligne,etatact,erreur, adresse,sortie,fonction,tempo,access : integer;
s,s2,ss : string; s,s2,ss : string;
trouve : bool; trouve : bool;
begin begin
@@ -1351,10 +1353,12 @@ begin
begin begin
GroupBoxact.Visible:=false; GroupBoxact.Visible:=false;
GroupBoxPN.Top:=104; GroupBoxPN.Top:=104;
GroupBoxPN.Left:=16;
GroupBoxPN.Visible:=true; GroupBoxPN.Visible:=true;
Visible:=true; Visible:=true;
RadioButtonPN.Checked:=true; RadioButtonPN.Checked:=true;
RadioButtonLoc.Checked:=false; RadioButtonLoc.Checked:=false;
RadioButtonAccess.Checked:=false;
end; end;
// trouver l'index dans le tableau // trouver l'index dans le tableau
i:=pos('PN(',s); i:=pos('PN(',s);
@@ -1409,15 +1413,16 @@ begin
end; end;
end end
else else
// actionneur fonction F locomotive
// actionneur fonction F locomotive ou Accessoire
begin begin
with formconfig do with formconfig do
begin begin
GroupBoxAct.Top:=104; GroupBoxAct.Top:=104;
GroupBoxAct.Left:=16;
GroupBoxact.Visible:=true; GroupBoxact.Visible:=true;
GroupBoxPN.Visible:=false; GroupBoxPN.Visible:=false;
formconfig.RadioButtonPN.Checked:=false;
formconfig.RadioButtonLoc.Checked:=true;
end; end;
// trouver l'index dans le tableau // trouver l'index dans le tableau
val(s,adresse,erreur); val(s,adresse,erreur);
@@ -1428,20 +1433,60 @@ begin
until trouve or (i>MaxTablo_act); until trouve or (i>MaxTablo_act);
if not(trouve) then exit; if not(trouve) then exit;
s:=Tablo_actionneur[i].train;
etatAct:=Tablo_actionneur[i].etat ;
Adresse:=Tablo_actionneur[i].actionneur;
fonction:=Tablo_actionneur[i].fonction; fonction:=Tablo_actionneur[i].fonction;
s2:=Tablo_actionneur[i].train; Access:=Tablo_actionneur[i].accessoire;
tempo:=tablo_actionneur[i].Tempo; if fonction<>0 then
with formconfig do
begin begin
EditAct.text:=IntToSTR(Adresse); etatAct:=Tablo_actionneur[i].etat ;
EditTrain.Text:=s; //etatFonc:=Tablo_actionneur[i].
editFonction.Text:=intToSTR(fonction); Adresse:=Tablo_actionneur[i].actionneur;
editEtat.Text:=intToSTR(etatAct); s2:=Tablo_actionneur[i].train;
editTempo.Text:=intToSTR(tempo); tempo:=tablo_actionneur[i].Tempo;
with formconfig do
begin
CheckRaz.Visible:=false;
GroupBoxAct.Caption:='Actionneur de fonction F de locomotive';
LabelTempo.Visible:=true; EditTempo.visible:=true; editEtatFoncSortie.visible:=false;LabelA.Visible:=false;
editEtatActionneur.Text:=IntToSTR(etatAct);
LabelFonction.caption:='Fonction';
RadioButtonPN.Checked:=false;
RadioButtonLoc.Checked:=true;
RadioButtonAccess.Checked:=false;
EditAct.text:=IntToSTR(Adresse);
EditTrain.Text:=s2;
editFonctionAccess.Text:=intToSTR(fonction);
//editEtat.Text:=intToSTR(etatAct);
editTempo.Text:=intToSTR(tempo);
end;
end; end;
if Access<>0 then
begin
etatAct:=Tablo_actionneur[i].etat ;
Adresse:=Tablo_actionneur[i].actionneur;
sortie:=Tablo_actionneur[i].sortie;
s2:=Tablo_actionneur[i].train;
tempo:=tablo_actionneur[i].Tempo;
with formconfig do
begin
GroupBoxAct.Caption:='Actionneur d''accessoire';
CheckRaz.Visible:=true;
CheckRaz.Checked:=Tablo_actionneur[i].Raz;
LabelTempo.Visible:=false; EditTempo.visible:=false;editEtatFoncSortie.visible:=true;LabelA.Visible:=true;
LabelFonction.caption:='Accessoire';
RadioButtonPN.Checked:=false;
RadioButtonLoc.Checked:=false;
RadioButtonAccess.Checked:=true;
EditAct.text:=IntToSTR(Adresse);
EditTrain.Text:=s2;
EditEtatActionneur.Text:=IntToSTR(etatAct);
editFonctionAccess.Text:=intToSTR(Access);
editEtatFoncSortie.Text:=intToSTR(sortie);
editTempo.Text:=intToSTR(tempo);
end;
end;
end; end;
ss:='Actionneur '+InttoSTr(Adresse); ss:='Actionneur '+InttoSTr(Adresse);

Binary file not shown.

Binary file not shown.

View File

@@ -18,7 +18,7 @@ object FormPrinc: TFormPrinc
OnClose = FormClose OnClose = FormClose
OnCreate = FormCreate OnCreate = FormCreate
DesignSize = ( DesignSize = (
1179 1196
606) 606)
PixelsPerInch = 96 PixelsPerInch = 96
TextHeight = 13 TextHeight = 13
@@ -667,7 +667,7 @@ object FormPrinc: TFormPrinc
Visible = False Visible = False
end end
object Image2feux: TImage object Image2feux: TImage
Left = 776 Left = 984
Top = 128 Top = 128
Width = 33 Width = 33
Height = 57 Height = 57
@@ -741,8 +741,8 @@ object FormPrinc: TFormPrinc
Visible = False Visible = False
end end
object Image2Dir: TImage object Image2Dir: TImage
Left = 696 Left = 936
Top = 184 Top = 144
Width = 41 Width = 41
Height = 25 Height = 25
Picture.Data = { Picture.Data = {
@@ -1221,7 +1221,7 @@ object FormPrinc: TFormPrinc
end end
object ScrollBox1: TScrollBox object ScrollBox1: TScrollBox
Left = 631 Left = 631
Top = 176 Top = 168
Width = 537 Width = 537
Height = 377 Height = 377
HorzScrollBar.Smooth = True HorzScrollBar.Smooth = True
@@ -1317,8 +1317,8 @@ object FormPrinc: TFormPrinc
end end
object StatusBar1: TStatusBar object StatusBar1: TStatusBar
Left = 0 Left = 0
Top = 577 Top = 576
Width = 1179 Width = 1196
Height = 30 Height = 30
Panels = <> Panels = <>
SimplePanel = True SimplePanel = True
@@ -1459,19 +1459,12 @@ object FormPrinc: TFormPrinc
object StaticText: TStaticText object StaticText: TStaticText
Left = 16 Left = 16
Top = 560 Top = 560
Width = 1145 Width = 14
Height = 17 Height = 17
Anchors = [akLeft, akRight, akBottom] Anchors = [akLeft, akRight, akBottom]
Caption = 'xx' Caption = 'xx'
TabOrder = 7 TabOrder = 7
end end
object StaticText1: TStaticText
Left = 8
Top = 560
Width = 4
Height = 4
TabOrder = 8
end
object Timer1: TTimer object Timer1: TTimer
Interval = 100 Interval = 100
OnTimer = Timer1Timer OnTimer = Timer1Timer

View File

@@ -91,7 +91,6 @@ type
ButtonLanceCDM: TButton; ButtonLanceCDM: TButton;
Affichefentredebug1: TMenuItem; Affichefentredebug1: TMenuItem;
StaticText: TStaticText; StaticText: TStaticText;
StaticText1: TStaticText;
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure MSCommUSBLenzComm(Sender: TObject); procedure MSCommUSBLenzComm(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormClose(Sender: TObject; var Action: TCloseAction);
@@ -251,7 +250,9 @@ var ancien_tablo_signalCplx,EtatsignalCplx : array[0..MaxAcc] of word;
MemZone : array[0..1024,0..1024] of boolean ; // mémoires de zones MemZone : array[0..1024,0..1024] of boolean ; // mémoires de zones
Tablo_actionneur : array[1..100] of Tablo_actionneur : array[1..100] of
record record
actionneur,etat,fonction,tempo : integer; actionneur,etat,fonction,tempo,
accessoire,sortie : integer;
Raz : boolean;
train : string; train : string;
end; end;
KeyInputs: array of TInput; KeyInputs: array of TInput;
@@ -1418,7 +1419,7 @@ begin
end; end;
// active ou désactive une sortie. Une adresse comporte deux sorties identifiées par "octet" // active ou désactive une sortie par xpressnet. Une adresse comporte deux sorties identifiées par "octet"
// Adresse : adresse de l'accessoire // Adresse : adresse de l'accessoire
// octet : numéro (1-2) de la sortie à cette adresse // octet : numéro (1-2) de la sortie à cette adresse
// etat : false (désactivé) true (activé) // etat : false (désactivé) true (activé)
@@ -3892,7 +3893,7 @@ begin
//Affiche(intTostr(adr),clblue); //Affiche(intTostr(adr),clblue);
Aiguillage[aig].inversionCDM:=adr; Aiguillage[aig].inversionCDM:=adr;
end; end;
//Affiche(s+'/'+Enregistrement,clLime); //Affiche(s+'/'+Enregistrement,clLime);
// si vitesse définie // si vitesse définie
Val(enregistrement,adr,erreur); Val(enregistrement,adr,erreur);
@@ -4210,13 +4211,85 @@ begin
end; end;
end; end;
until (finifeux) or (s='0'); until (finifeux) or (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);
// raz des actionneurs
for i:=1 to maxTablo_act do
begin
Tablo_actionneur[i].train:='';
Tablo_actionneur[i].etat:=0; Tablo_actionneur[i].etat:=0;
Tablo_actionneur[i].actionneur:=0; Tablo_actionneur[i].actionneur:=0;
Tablo_actionneur[i].accessoire:=0; Tablo_actionneur[i].accessoire:=0;
Tablo_actionneur[i].sortie:=0; Tablo_actionneur[i].sortie:=0;
end; end;
// définition des actionneurs
maxTablo_act:=1;
NbrePN:=0;Nligne:=1;
repeat
s:=lit_ligne;
// vérifier si F ou A au 4eme champ
sa:=s;
i:=pos(',',sa);
if i>0 then delete(sa,1,i) else s:='0'; if i>0 then delete(sa,1,i) else s:='0';
// définition des actionneurs i:=pos(',',sa);
if i>0 then delete(sa,1,i) else s:='0';
i:=pos(',',sa);
if i>0 then delete(sa,1,i) else s:='0';
mod_act[Nligne]:=s;inc(Nligne);
if length(sa)>1 then if (sa[1]='A') then
// -----------------accessoire
begin
// 815,1,CC406526,A600,1
i:=pos(',',s);
if i<>0 then
begin
val(copy(s,1,i-1),j,erreur);
Tablo_actionneur[maxTablo_act].actionneur:=j;
Delete(s,1,i);
i:=pos(',',s);
if i<>0 then
begin
i:=pos(',',s);
val(copy(s,1,i-1),j,erreur);
Tablo_actionneur[maxTablo_act].etat:=j;
Delete(s,1,i);
i:=pos(',',s);
Tablo_actionneur[maxTablo_act].train:=copy(s,1,i-1);
Delete(s,1,i);
i:=pos('A',s);
if i<>0 then
begin
Delete(s,1,1);
val(s,j,erreur);
Tablo_actionneur[maxTablo_act].Accessoire:=j;
i:=pos(',',s);
if i<>0 then
begin
Delete(S,1,i);
val(s,j,erreur);
Tablo_actionneur[maxTablo_act].sortie:=j;
end;
i:=pos(',',s);
if i<>0 then
begin
Delete(S,1,i);
Tablo_actionneur[maxTablo_act].RAZ:=s[1]='Z';
inc(maxTablo_act);
end;
end;
s:='';i:=0;
end; end;
end; end;
@@ -4258,6 +4331,7 @@ begin
val(s,j,erreur); val(s,j,erreur);
Tablo_actionneur[maxTablo_act].Tempo:=j; Tablo_actionneur[maxTablo_act].Tempo:=j;
inc(maxTablo_act); inc(maxTablo_act);
end;
end; end;
s:='';i:=0; s:='';i:=0;
end; end;
@@ -6376,27 +6450,45 @@ end;
for i:=1 to maxaiguillage do for i:=1 to maxaiguillage do
begin begin
demande_info_acc(i); demande_info_acc(i);
end; end;
end; end;
// traitement des évènements actionneurs // traitement des évènements actionneurs
procedure Event_act(adr,etat : integer;train : string); procedure Event_act(adr,etat : integer;train : string);
var i,v,va,j,etatAct,Af,Ao,Access,sortie : integer; var i,v,va,j,etatAct,Af,Ao,Access,sortie : integer;
s : string; s : string;
s : string;
presTrain_PN : boolean; presTrain_PN : boolean;
Ts : TAccessoire; Ts : TAccessoire;
begin begin
// vérifier si l'actionneur en évènement a été déclaré pour réagir // vérifier si l'actionneur en évènement a été déclaré pour réagir
if AffActionneur then Affiche('Actionneur '+intToSTR(Adr)+'='+intToSTR(etat),clyellow);
for i:=1 to maxTablo_act do for i:=1 to maxTablo_act do
begin begin
s:=Tablo_actionneur[i].train;
etatAct:=Tablo_actionneur[i].etat ; etatAct:=Tablo_actionneur[i].etat ;
// actionneur pour fonction train // actionneur pour fonction train
if (Tablo_actionneur[i].actionneur=adr) and (Tablo_actionneur[i].fonction<>0) and ((s=train) or (s='X')) and (etatAct=etat) then if (Tablo_actionneur[i].actionneur=adr) and (Tablo_actionneur[i].fonction<>0) and ((s=train) or (s='X')) and (etatAct=etat) then
begin begin
Affiche('Actionneur '+intToSTR(adr)+' Train='+train+' F'+IntToSTR(Tablo_actionneur[i].fonction)+':'+intToSTR(etat),clyellow);
// exécutione la fonction F vers CDM
envoie_fonction_CDM(Tablo_actionneur[i].fonction,etat,train);
TempoAct:=tablo_actionneur[i].Tempo div 100;
RangActCours:=i;
end;
// actionneur pour accessoire
if (Tablo_actionneur[i].actionneur=adr) and (Tablo_actionneur[i].accessoire<>0) and ((s=train) or (s='X')) and (etatAct=etat) then
begin
access:=Tablo_actionneur[i].accessoire;
sortie:=Tablo_actionneur[i].sortie;
Affiche('Actionneur '+intToSTR(adr)+' Train='+train+' Accessoire '+IntToSTR(access)+':'+intToSTR(sortie),clyellow);
// exécution la fonction accessoire vers CDM
if Tablo_actionneur[i].RAZ then Ts:=aig else Ts:=Feu; if Tablo_actionneur[i].RAZ then Ts:=aig else Ts:=Feu;
pilote_acc(access,sortie,Ts); // sans RAZ pilote_acc(access,sortie,Ts); // sans RAZ
RangActCours:=i;
end;
end; end;
@@ -6461,7 +6553,7 @@ begin
//Affiche(IntToSTR(Adresse)+' déja stocké',clorange); //Affiche(IntToSTR(Adresse)+' déja stocké',clorange);
exit; // déja stocké exit; // déja stocké
end; end;
end; end;
*) *)
if Traceliste then AfficheDebug('--------------------- détecteur '+intToSTR(Adresse)+' à '+intToSTR(etat01)+'-----------------------------',clOrange); if Traceliste then AfficheDebug('--------------------- détecteur '+intToSTR(Adresse)+' à '+intToSTR(etat01)+'-----------------------------',clOrange);
if AffAigDet then if AffAigDet then
@@ -6474,15 +6566,18 @@ begin
end; end;
//if etat then Mem[Adresse]:=true; // mémoriser l'état à 1 //if etat then Mem[Adresse]:=true; // mémoriser l'état à 1
ancien_detecteur[Adresse]:=detecteur[Adresse]; ancien_detecteur[Adresse]:=detecteur[Adresse];
detecteur[Adresse]:=etat; detecteur[Adresse]:=etat;
detecteur_chgt:=Adresse; detecteur_chgt:=Adresse;
// stocke les changements d'état des détecteurs dans le tableau chronologique
if (N_Event_tick<Max_Event_det_tick) then
begin
// stocke les changements d'état des détecteurs dans le tableau chronologique
if (N_Event_tick>=Max_Event_det_tick) then
begin
N_Event_tick:=0;
Affiche('Raz Evts détecteurs',clLime);
end;
inc(N_Event_tick);
event_det_tick[N_event_tick].tick:=tick; event_det_tick[N_event_tick].tick:=tick;
event_det_tick[N_event_tick].detecteur:=Adresse; event_det_tick[N_event_tick].detecteur:=Adresse;
event_det_tick[N_event_tick].etat:=etat01; event_det_tick[N_event_tick].etat:=etat01;
@@ -6573,24 +6668,28 @@ begin
// init objet // init objet
if aiguillage[adresse].objet=0 then if aiguillage[adresse].objet=0 then
begin begin
aiguillage[adresse].objet:=objet;
//affiche('stockage Aiguillage '+intToSTR(adresse)+' objet='+intToSTR(objet),clYellow); //affiche('stockage Aiguillage '+intToSTR(adresse)+' objet='+intToSTR(objet),clYellow);
//affiche('stockage Aiguillage '+intToSTR(adresse)+' objet='+intToSTR(objet),clYellow); end;
aiguillage[adresse].position:=pos;
aiguillage[adresse].position:=pos;
// ------------- stockage évènement aiguillage dans tampon event_det_tick -------------------------
if (N_Event_tick<Max_Event_det_tick) then
begin
if AffAigDet then
begin
s:='Evt Aig '+intToSTR(adresse)+'='+intToSTR(pos);
if pos=const_droit then s:=s+' droit' else s:=s+' dévié';
if objet<>0 then s:=s+' objet='+IntToSTR(objet);
Affiche(s,clyellow);
AfficheDebug(s,clyellow);
end;
// ------------- stockage évènement aiguillage dans tampon event_det_tick -------------------------
if (N_Event_tick>=Max_Event_det_tick) then
begin
N_Event_tick:=0;
Affiche('Raz Evts détecteurs',clLime);
end;
s:='Evt Aig '+intToSTR(adresse)+'='+intToSTR(pos);
if pos=const_droit then s:=s+' droit' else s:=s+' dévié';
if AffAigDet then
begin
if objet<>0 then s:=s+' objet='+IntToSTR(objet);
Affiche(s,clyellow);
AfficheDebug(s,clyellow);
end;
FormDebug.MemoEvtDet.lines.add(s) ;
if (n_Event_tick mod 10) =0 then affiche_memoire; if (n_Event_tick mod 10) =0 then affiche_memoire;
inc(N_Event_tick); inc(N_Event_tick);
event_det_tick[N_event_tick].tick:=tick; event_det_tick[N_event_tick].tick:=tick;
@@ -7292,7 +7391,7 @@ begin
TraceSign:=True; TraceSign:=True;
PremierFD:=false; PremierFD:=false;
// services commIP CDM // services commIP CDM
Srvc_Aig:=true; Srvc_Aig:=true;
Srvc_Det:=true; Srvc_Det:=true;
Srvc_Act:=true; Srvc_Act:=true;
Srvc_PosTrain:=false; Srvc_PosTrain:=false;
@@ -7312,7 +7411,7 @@ begin
// créée la fenetre debug // créée la fenetre debug
FormDebug:=TFormDebug.Create(Self); FormDebug:=TFormDebug.Create(Self);
FormDebug.Caption:=AF+' debug'; FormDebug.Caption:=AF+' debug';
N_Trains:=0; N_Trains:=0;
NivDebug:=0; NivDebug:=0;
TempoAct:=0; TempoAct:=0;
@@ -7409,7 +7508,7 @@ begin
event_det_tick[i].traite:=false ; // non traité event_det_tick[i].traite:=false ; // non traité
end; end;
I_Simule:=0; I_Simule:=0;
tick:=0; tick:=0;
N_Event_tick:=0 ; // dernier index N_Event_tick:=0 ; // dernier index
@@ -7422,41 +7521,20 @@ begin
FormTCO:=TformTCO.Create(nil); FormTCO:=TformTCO.Create(nil);
FormTCO.show; FormTCO.show;
end; end;
//essai &&&&&&&&&& //essai &&&&&&&&&&
Affiche('Fin des initialisations',clyellow); Affiche('Fin des initialisations',clyellow);
LabelEtat.Caption:=' ';
Affiche_memoire;
//---------------------------------
{
aiguillage[20].position:=const_droit;
LabelEtat.Caption:=' '; LabelEtat.Caption:=' ';
aiguillage[25].position:=const_devie;
aiguillage[26].position:=const_droit;
aiguillage[27].position:=const_droit;
aiguillage[28].position:=const_devie;
aiguillage[31].position:=const_devie;
aiguillage[77].position:=const_droit;
aiguillage[78].position:=const_droit;
aiguillage[79].position:=const_droit;
aiguillage[83].position:=const_devie;
aiguillage[85].position:=const_droit;
aiguillage[87].position:=const_devie;
aiguillage[89].position:=const_devie;
aiguillage[90].position:=const_droit;
Affiche_memoire; Affiche_memoire;
//--------------------------------- //---------------------------------
{ {
aiguillage[20].position:=const_droit; aiguillage[20].position:=const_droit;
aiguillage[21].position:=const_droit; aiguillage[21].position:=const_droit;
NivDebug:=3; NivDebug:=3;
FormDebug.show; FormDebug.show;
//i:=Detecteur_suivant_El(591,1,602,1); //i:=Detecteur_suivant_El(591,1,602,1);
//i:=Detecteur_suivant_El(597,1,601,1); //i:=Detecteur_suivant_El(597,1,601,1);
// posent pb: // posent pb:
// i:=Detecteur_suivant_El(598,1,599,1); // i:=Detecteur_suivant_El(598,1,599,1);
@@ -7654,17 +7732,17 @@ begin
end; end;
while tick=Tablo_simule[i_simule+1].tick do while tick=Tablo_simule[i_simule+1].tick do
//while i_simule<Index_simule do //while i_simule<Index_simule do
begin begin
inc(I_simule); inc(I_simule);
// evt détecteur ? // evt détecteur ?
if Tablo_simule[i_simule].detecteur<>0 then if Tablo_simule[i_simule].detecteur<>0 then
begin begin
s:='Simulation '+intToSTR(I_simule)+' Tick='+IntToSTR(tick)+' det='+intToSTR(Tablo_simule[i_simule].detecteur)+'='+IntToSTR(Tablo_simule[i_simule].etat); s:='Simulation '+intToSTR(I_simule)+' Tick='+IntToSTR(tick)+' det='+intToSTR(Tablo_simule[i_simule].detecteur)+'='+IntToSTR(Tablo_simule[i_simule].etat);
Event_Detecteur(Tablo_simule[i_simule].detecteur, Tablo_simule[i_simule].etat=1); // créer évt détecteur Event_Detecteur(Tablo_simule[i_simule].detecteur, Tablo_simule[i_simule].etat=1); // créer évt détecteur
// statusBar1.Hint:=' det='+intToSTR(Tablo_simule[i_simule].detecteur)+'='+IntToSTR(Tablo_simule[i_simule].etat); StaticText.caption:=s;
end; end;
// evt aiguillage ? // evt aiguillage ?
if Tablo_simule[i_simule].aiguillage<>0 then if Tablo_simule[i_simule].aiguillage<>0 then
begin begin
@@ -7675,6 +7753,7 @@ begin
end; end;
if i_Simule>=Index_simule then
begin begin
Index_Simule:=0; // fin de simulation Index_Simule:=0; // fin de simulation
I_Simule:=0; I_Simule:=0;
@@ -8460,7 +8539,7 @@ end;
procedure TFormPrinc.ConfigClick(Sender: TObject); procedure TFormPrinc.ConfigClick(Sender: TObject);
begin begin
Tformconfig.create(nil); Tformconfig.create(nil);
formconfig.showmodal; formconfig.showmodal;
formconfig.close; formconfig.close;
end; end;
@@ -8473,28 +8552,36 @@ begin
begin begin
Affiche('Aucun actionneur déclaré',clYellow); Affiche('Aucun actionneur déclaré',clYellow);
exit; exit;
end; end;
for i:=1 to maxTablo_act do
begin
s:=Tablo_actionneur[i].train;
etatAct:=Tablo_actionneur[i].etat ; etatAct:=Tablo_actionneur[i].etat ;
AdrAct:=Tablo_actionneur[i].actionneur; AdrAct:=Tablo_actionneur[i].actionneur;
s:=Tablo_actionneur[i].train; s2:=Tablo_actionneur[i].train;
etatAct:=Tablo_actionneur[i].etat ; acc:=Tablo_actionneur[i].accessoire;
sortie:=Tablo_actionneur[i].sortie;
fonction:=Tablo_actionneur[i].fonction;
if (s2<>'') then
begin
if fonction<>0 then
s:='FonctionF Actionneur='+intToSTR(adrAct)+':'+intToSTR(etatAct)+' Train='+s2+' F'+IntToSTR(fonction)+ s:='FonctionF Actionneur='+intToSTR(adrAct)+':'+intToSTR(etatAct)+' Train='+s2+' F'+IntToSTR(fonction)+
' Temporisation='+intToSTR(tablo_actionneur[i].Tempo); ' Temporisation='+intToSTR(tablo_actionneur[i].Tempo);
if acc<>0 then if acc<>0 then
s:='Accessoire Actionneur='+intToSTR(adrAct)+':'+intToSTR(etatAct)+' Train='+s2+' A'+IntToSTR(acc)+ s:='Accessoire Actionneur='+intToSTR(adrAct)+':'+intToSTR(etatAct)+' Train='+s2+' A'+IntToSTR(acc)+
' sortie='+intToSTR(sortie); ' sortie='+intToSTR(sortie);
Affiche(s,clYellow); Affiche(s,clYellow);
end; end;
end; end;
// dans le tableau des PN // dans le tableau des PN
for i:=1 to NbrePN do for i:=1 to NbrePN do
begin begin
s:='PN'+intToSTR(i)+' Adresse fermeture PN='+IntToSTR(Tablo_PN[i].AdresseFerme); s:='PN'+intToSTR(i)+' Adresse fermeture PN='+IntToSTR(Tablo_PN[i].AdresseFerme);
s:=s+' Adresse ouverture PN='+IntToSTR(Tablo_PN[i].AdresseOuvre); s:=s+' Adresse ouverture PN='+IntToSTR(Tablo_PN[i].AdresseOuvre);
Affiche(s,clyellow); Affiche(s,clyellow);
s:=' Commande fermeture='+intToSTR(Tablo_PN[i].commandeFerme); s:=' Commande fermeture='+intToSTR(Tablo_PN[i].commandeFerme);
s:=s+' Commande ouverture='+intToSTR(Tablo_PN[i].commandeOuvre); s:=s+' Commande ouverture='+intToSTR(Tablo_PN[i].commandeOuvre);
s:=s+' Nbre de voies='+intToSTR(Tablo_PN[i].nbVoies); s:=s+' Nbre de voies='+intToSTR(Tablo_PN[i].nbVoies);
Affiche(s,clyellow); Affiche(s,clyellow);

Binary file not shown.

View File

@@ -53,7 +53,7 @@ begin
index_simule:=1; index_simule:=1;
repeat repeat
readln(fte,s); readln(fte,s);
Affiche(s,clLime); //Affiche(s,clLime);
i:=pos('Tick=',s); i:=pos('Tick=',s);
if i<>0 then if i<>0 then
begin begin

Binary file not shown.

Binary file not shown.

View File

@@ -23,7 +23,7 @@ var
Lance_verif : integer; Lance_verif : integer;
verifVersion,notificationVersion : boolean; verifVersion,notificationVersion : boolean;
Const Version='2.0'; // sert à la comparaison de la version publiée Const Version='2.1'; // sert à la comparaison de la version publiée
implementation implementation

View File

@@ -33,6 +33,9 @@ version 1.76 : Modification des aiguillages mod
Correction d'un bug sur les feux dont l'élément suivant est un détecteur Correction d'un bug sur les feux dont l'élément suivant est un détecteur
version 2.0 : Changement de description des TJD version 2.0 : Changement de description des TJD
Amélioration de l'algorithme des routes Amélioration de l'algorithme des routes
Variables nommées dans config-GL.cfg
version 2.1 : Possibilité de piloter des accessoires par des actionneurs CDM