This commit is contained in:
f1iwq2
2020-03-16 21:41:53 +01:00
parent 473bd0dcfe
commit d8af138d78
15 changed files with 202 additions and 105 deletions

View File

@@ -3581,6 +3581,7 @@ begin
//if fini then Affiche('fini',clyellow);
end;
end;
if (j>4) or (not(multiple)) then begin Affiche('Erreur: fichier de configuration ligne erronnée : '+chaine,clred); closefile(fichier);exit;end;
k:=pos(',',s);
delete(s,1,k);
@@ -5036,11 +5037,9 @@ begin
// trouve une séquence chronologique 010 sur un détecteur
function trouve_seq_chrono_010(Adresse : integer) : boolean;
var i,etat : integer;
etat0_seq1,etat1_seq2,etat0_seq3 : boolean;
etat0_seq1,etat1_seq2,etat0_seq3 : boolean;
begin
i:=N_Event_tick;
if i<2 then exit;
Affiche('test si seq 010 sur det '+intToSTR(Adresse),clyellow);
i:=N_Event_tick;
if i<2 then exit;
Affiche('test si seq 010 sur det '+intToSTR(Adresse),clyellow);
etat0_seq1:=false; etat1_seq2:=false; etat0_seq3:=false;
@@ -5070,18 +5069,19 @@ begin
// supprime un évènement détecteur dans la liste Event_det[]
procedure supprime_event(i : integer);
var l : integer;
var l : integer;
begin
for l:=i to N_Event_det do event_det[l]:=event_det[l+1];
dec(N_event_det);
end;
// trouve adresse d'un détecteur à "etat" avant "index" dans le tableau chrono
function trouve_index_det_chrono(Adr,etat,index : integer) : integer;
var i : integer;
trouve : boolean;
begin
begin
i:=index;
if index<=0 then begin affiche('Erreur 784 index invalide',clred);exit; end;
i:=index;
if i>N_Event_tick then begin trouve_index_det_chrono:=0;exit; end;
inc(i);
repeat
@@ -5332,6 +5332,7 @@ begin
i:=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
@@ -5339,6 +5340,7 @@ begin
// signal directionnel ?
if (modele>10) then
begin
//Affiche('Signal directionnel '+IntToSTR(AdrFeu),clyellow);
Signal_direction(AdrFeu);
exit;
@@ -5357,16 +5359,21 @@ begin
exit;
end;
if (AdrFeu=217) then
begin
if ((aiguillage[24].position<>const_droit) and (aiguillage[26].position<>const_droit)) then
begin
if ((aiguillage[24].position<>const_droit) and (aiguillage[26].position<>const_droit)) then
Maj_Etat_Signal(AdrFeu,blanc) else Maj_Etat_Signal(AdrFeu,violet);
envoi_LEB(AdrFeu);
exit;
end;
exit;
end;
// signal à 2 feux = carré violet+blanc
if (Feux[i].aspect=2) then //or (feux[i].check<>nil) then // si carré violet
begin
// si aiguillage après signal mal positionnées
if (Feux[i].aspect=2) then //or (feux[i].check<>nil) then // si carré violet
begin
if carre_signal(AdrFeu) then
begin
Maj_Etat_Signal(AdrFeu,violet);
Envoi_signauxCplx;
exit;
end
else
@@ -5778,7 +5785,7 @@ begin
var i,trainAdj1,TrainAdj2,TrainActuel,Etat01 : integer;
s : string;
begin
if Etat then Etat01:=1 else Etat01:=0;
if Etat then Etat01:=1 else Etat01:=0;
// vérifier si l'état du détecteur est déja stocké, car on peut reçevoir plusieurs évènements pour le même détecteur dans le même état
// on reçoit un doublon dans deux index consécutifs.
if N_Event_tick>=1 then
@@ -5805,7 +5812,8 @@ begin
end;
// stocke les changements d'état des détecteurs dans le tableau chronologique
if (N_Event_tick<Max_Event_det_tick) then
if (N_Event_tick<Max_Event_det_tick) then
begin
inc(N_Event_tick);
// event_det_tick[N_event_tick].train:=0;
@@ -5857,7 +5865,7 @@ begin
// évènement d'aiguillage
procedure Event_Aig(adresse,pos : integer);
begin
begin
if (N_Event_tick<Max_Event_det_tick) then
begin
inc(N_Event_tick);
@@ -6521,8 +6529,12 @@ begin
begin
cree_image(i); // et initialisation tableaux signaux
end;
Tempo_init:=10; // démarre les initialisation des signaux et des aiguillages dans 1 s
Tempo_init:=10; // démarre les initialisation des signaux et des aiguillages dans 1 s
// initialisation de la chronologie des évènements détecteurs
for i:=0 to Max_Event_det_tick do
begin
event_det_tick[i].aiguillage:=-1;
//for j:=1 to 1100 do
//event_det_tick[i].detecteur[j]:=-1; // initialiser les détecteurs à -1
event_det_tick[i].detecteur:=-1;
@@ -7266,6 +7278,8 @@ begin
Affiche('Version 1.11 : compatibilité pour la rétrosignalisation non XpressNet (intellibox)',clLime);
Affiche(' verrouillages routes pour trains consécutifs',clLime);
Affiche('Version 1.2 : Renforcement de l''algorithme de suivi des trains',clLime);
Affiche('Version 1.3 : Décodeur Unisemaf fonctionnel - Lecture/écriture des CV',clLime);
Affiche(' Protocoles variables de l''interface',clLime);
Affiche(' Configuration statique modifiable dans menu',clLime);
Affiche('Version 1.31 : Correction des positions aiguillages triples et TJD',clLime);
Affiche('Version 1.4 : Gestion des Fx vers les locomotives par actionneurs',clLime);
@@ -7282,14 +7296,15 @@ begin
end;
procedure TFormPrinc.ChronoDetectClick(Sender: TObject);
var i,j,etat : integer;
var i,j,etat : integer;
s : string;
begin
begin
for i:=1 to N_Event_tick do
begin
//for j:=1 to 1100 do
begin
begin
etat:=event_det_tick[i].etat;
if etat<>-1 then
begin
j:=event_det_tick[i].detecteur;
@@ -7298,7 +7313,7 @@ begin
// s:=s+' Det suiv='+intTostr(event_det_tick[i].suivant);
Affiche(s,clyellow);
end;
end;
end;
etat:=event_det_tick[i].aiguillage;
if etat<>-1 then