This commit is contained in:
f1iwq2
2021-10-04 13:30:33 +02:00
parent 72b4c8563f
commit 86979f40ea
15 changed files with 464 additions and 245 deletions
+3 -1
View File
@@ -9,7 +9,8 @@ uses
UnitSimule in 'UnitSimule.pas' {FormSimulation},
UnitTCO in 'UnitTCO.pas' {FormTCO},
UnitConfig in 'UnitConfig.pas' {FormConfig},
UnitConfigTCO in 'UnitConfigTCO.pas' {FormConfigTCO};
UnitConfigTCO in 'UnitConfigTCO.pas' {FormConfigTCO},
UnitSR in '..\macro fichier\UnitSR.pas' {FormSR};
{$R *.res}
@@ -22,5 +23,6 @@ begin
Application.CreateForm(TFormConfig, FormConfig);
Application.CreateForm(TFormConfigTCO, FormConfigTCO);
Application.CreateForm(TFormVersion, FormVersion);
Application.CreateForm(TFormSR, FormSR);
Application.Run;
end.
BIN
View File
Binary file not shown.
+44 -20
View File
@@ -1,6 +1,6 @@
object FormConfig: TFormConfig
Left = 291
Top = 218
Left = 268
Top = 207
Hint =
'Modifie les fichiers de configuration selon les s'#233'lections chois' +
'ies'
@@ -1748,11 +1748,11 @@ object FormConfig: TFormConfig
object Label20: TLabel
Left = 648
Top = 312
Width = 208
Height = 39
Width = 170
Height = 52
Caption =
'Tous les param'#232'tres doivent '#234'tre valid'#233's en appuyant sur la touc' +
'he ENTREE apr'#232's leur introduction/modification'
'Les param'#232'tres en vert doivent '#234'tre valid'#233's en appuyant sur la t' +
'ouche ENTREE apr'#232's leur introduction/modification'
WordWrap = True
end
object ButtonAppliquerEtFermer: TButton
@@ -2486,7 +2486,7 @@ object FormConfig: TFormConfig
Width = 33
Height = 21
TabOrder = 2
OnKeyPress = EditAdrAigKeyPress
OnChange = EditAdrAigChange
end
object ComboBoxAig: TComboBox
Left = 8
@@ -2617,7 +2617,7 @@ object FormConfig: TFormConfig
ParentShowHint = False
ShowHint = True
TabOrder = 0
OnKeyPress = Edit_HGKeyPress
OnChange = Edit_HGChange
end
object EditPointe_BG: TEdit
Left = 24
@@ -2627,13 +2627,14 @@ object FormConfig: TFormConfig
ParentShowHint = False
ShowHint = True
TabOrder = 1
OnKeyPress = EditPointe_BGKeyPress
OnChange = EditPointe_BGChange
end
object EditP1: TEdit
Left = 88
Top = 28
Width = 33
Height = 21
Color = clLime
TabOrder = 2
OnKeyPress = EditP1KeyPress
end
@@ -2642,6 +2643,7 @@ object FormConfig: TFormConfig
Top = 48
Width = 33
Height = 21
Color = clLime
TabOrder = 3
OnKeyPress = EditP2KeyPress
end
@@ -2650,6 +2652,7 @@ object FormConfig: TFormConfig
Top = 22
Width = 33
Height = 21
Color = clLime
TabOrder = 4
OnKeyPress = EditP3KeyPress
end
@@ -2658,6 +2661,7 @@ object FormConfig: TFormConfig
Top = 44
Width = 33
Height = 21
Color = clLime
TabOrder = 5
OnKeyPress = EditP4KeyPress
end
@@ -2669,7 +2673,7 @@ object FormConfig: TFormConfig
ParentShowHint = False
ShowHint = True
TabOrder = 6
OnKeyPress = EditDevie_HDKeyPress
OnChange = EditDevie_HDChange
end
object EditDroit_BD: TEdit
Left = 232
@@ -2679,13 +2683,14 @@ object FormConfig: TFormConfig
ParentShowHint = False
ShowHint = True
TabOrder = 7
OnKeyPress = EditDroit_BDKeyPress
OnChange = EditDroit_BDChange
end
object EditDevieS2: TEdit
Left = 232
Top = 68
Width = 33
Height = 21
Color = clLime
TabOrder = 8
OnKeyPress = EditDevieS2KeyPress
end
@@ -2720,7 +2725,7 @@ object FormConfig: TFormConfig
Height = 21
TabOrder = 6
Visible = False
OnKeyPress = EditAigTripleKeyPress
OnChange = EditAigTripleChange
end
object GroupBox21: TGroupBox
Left = 8
@@ -2749,7 +2754,7 @@ object FormConfig: TFormConfig
Width = 41
Height = 21
TabOrder = 0
OnKeyPress = EditTempo10KeyPress
OnChange = EditTempo10Change
end
object ComboBoxDD: TComboBox
Left = 160
@@ -3046,7 +3051,7 @@ object FormConfig: TFormConfig
Top = 48
Width = 129
Height = 21
ItemHeight = 0
ItemHeight = 13
TabOrder = 1
OnChange = ComboBoxDecChange
end
@@ -3056,6 +3061,7 @@ object FormConfig: TFormConfig
Width = 41
Height = 21
TabOrder = 3
OnChange = EditDet1Change
OnKeyPress = EditDet1KeyPress
end
object EditSuiv1: TEdit
@@ -3066,6 +3072,7 @@ object FormConfig: TFormConfig
ParentShowHint = False
ShowHint = True
TabOrder = 4
OnChange = EditSuiv1Change
OnKeyPress = EditSuiv1KeyPress
end
object EditDet2: TEdit
@@ -3074,6 +3081,7 @@ object FormConfig: TFormConfig
Width = 41
Height = 21
TabOrder = 5
OnChange = EditDet2Change
OnKeyPress = EditDet2KeyPress
end
object EditSuiv2: TEdit
@@ -3084,6 +3092,7 @@ object FormConfig: TFormConfig
ParentShowHint = False
ShowHint = True
TabOrder = 6
OnChange = EditSuiv2Change
OnKeyPress = EditSuiv2KeyPress
end
object EditDet3: TEdit
@@ -3092,6 +3101,7 @@ object FormConfig: TFormConfig
Width = 41
Height = 21
TabOrder = 7
OnChange = EditDet3Change
OnKeyPress = EditDet3KeyPress
end
object EditSuiv3: TEdit
@@ -3102,6 +3112,7 @@ object FormConfig: TFormConfig
ParentShowHint = False
ShowHint = True
TabOrder = 8
OnChange = EditSuiv3Change
OnKeyPress = EditSuiv3KeyPress
end
object EditDet4: TEdit
@@ -3110,6 +3121,7 @@ object FormConfig: TFormConfig
Width = 41
Height = 21
TabOrder = 9
OnChange = EditDet4Change
OnKeyPress = EditDet4KeyPress
end
object EditSuiv4: TEdit
@@ -3120,6 +3132,7 @@ object FormConfig: TFormConfig
ParentShowHint = False
ShowHint = True
TabOrder = 10
OnChange = EditSuiv4Change
OnKeyPress = EditSuiv4KeyPress
end
object CheckVerrouCarre: TCheckBox
@@ -3143,6 +3156,7 @@ object FormConfig: TFormConfig
Height = 21
TabOrder = 0
Text = ' '
OnChange = EditAdrSigChange
OnKeyPress = EditAdrSigKeyPress
end
object ComboBoxAsp: TComboBox
@@ -3173,11 +3187,12 @@ object FormConfig: TFormConfig
Height = 21
TabOrder = 14
Visible = False
OnChange = EditSpecUniChange
OnKeyPress = EditSpecUniKeyPress
end
object Buttonrestaure: TButton
Left = 8
Top = 216
Top = 200
Width = 75
Height = 25
Hint = 'Restaure la configuration du feu d'#39'avant sa modification'
@@ -3196,6 +3211,15 @@ object FormConfig: TFormConfig
TabOrder = 15
OnClick = CheckBoxFBClick
end
object ButtonConfigSR: TButton
Left = 8
Top = 232
Width = 75
Height = 25
Caption = 'Configuration'
TabOrder = 16
OnClick = ButtonConfigSRClick
end
end
object RichSig: TRichEdit
Left = 0
@@ -3275,8 +3299,8 @@ object FormConfig: TFormConfig
WordWrap = True
end
object GroupBoxPN: TGroupBox
Left = 16
Top = 16
Left = 8
Top = 24
Width = 225
Height = 289
Caption = 'Actionneurs gestion passage '#224' niveau'
@@ -3444,7 +3468,7 @@ object FormConfig: TFormConfig
end
object GroupBoxRadio: TGroupBox
Left = 16
Top = 72
Top = 40
Width = 225
Height = 65
Caption = 'Type d'#39'actionneur '
@@ -3469,8 +3493,8 @@ object FormConfig: TFormConfig
end
end
object GroupBoxAct: TGroupBox
Left = 48
Top = 176
Left = 40
Top = 248
Width = 225
Height = 225
Caption = 'Actionneur fonction de locomotive '
+288 -203
View File
@@ -230,6 +230,7 @@ type
EditL: TEdit;
CheckBoxFB: TCheckBox;
Label20: TLabel;
ButtonConfigSR: TButton;
procedure ButtonAppliquerEtFermerClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
@@ -293,19 +294,12 @@ type
procedure CheckBoxFBClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure EditAdrAigKeyPress(Sender: TObject; var Key: Char);
procedure EditAdrSigKeyPress(Sender: TObject; var Key: Char);
procedure EditP3KeyPress(Sender: TObject; var Key: Char);
procedure EditP4KeyPress(Sender: TObject; var Key: Char);
procedure EditAigTripleKeyPress(Sender: TObject; var Key: Char);
procedure Edit_HGKeyPress(Sender: TObject; var Key: Char);
procedure EditPointe_BGKeyPress(Sender: TObject; var Key: Char);
procedure EditP1KeyPress(Sender: TObject; var Key: Char);
procedure EditP2KeyPress(Sender: TObject; var Key: Char);
procedure EditDevie_HDKeyPress(Sender: TObject; var Key: Char);
procedure EditDroit_BDKeyPress(Sender: TObject; var Key: Char);
procedure EditDevieS2KeyPress(Sender: TObject; var Key: Char);
procedure EditTempo10KeyPress(Sender: TObject; var Key: Char);
procedure EditDet1KeyPress(Sender: TObject; var Key: Char);
procedure EditSuiv1KeyPress(Sender: TObject; var Key: Char);
procedure EditDet2KeyPress(Sender: TObject; var Key: Char);
@@ -315,6 +309,24 @@ type
procedure EditDet4KeyPress(Sender: TObject; var Key: Char);
procedure EditSuiv4KeyPress(Sender: TObject; var Key: Char);
procedure EditSpecUniKeyPress(Sender: TObject; var Key: Char);
procedure ButtonConfigSRClick(Sender: TObject);
procedure EditDet1Change(Sender: TObject);
procedure EditSuiv1Change(Sender: TObject);
procedure EditAdrSigChange(Sender: TObject);
procedure EditDet2Change(Sender: TObject);
procedure EditSuiv2Change(Sender: TObject);
procedure EditDet3Change(Sender: TObject);
procedure EditSuiv3Change(Sender: TObject);
procedure EditDet4Change(Sender: TObject);
procedure EditSuiv4Change(Sender: TObject);
procedure EditSpecUniChange(Sender: TObject);
procedure EditAdrAigChange(Sender: TObject);
procedure EditAigTripleChange(Sender: TObject);
procedure EditPointe_BGChange(Sender: TObject);
procedure EditDroit_BDChange(Sender: TObject);
procedure EditDevie_HDChange(Sender: TObject);
procedure EditTempo10Change(Sender: TObject);
procedure Edit_HGChange(Sender: TObject);
private
{ Déclarations privées }
public
@@ -368,10 +380,11 @@ Procedure aff_champs_sig_feux(index : integer);
procedure decode_ligne_feux(chaine_signal : string;i : integer);
function verif_coherence : boolean;
function compile_branche(s : string;i : integer) : boolean;
function encode_sig_feux(i : integer): string;
implementation
uses UnitDebug, UnitTCO;
uses UnitDebug, UnitTCO, UnitSR;
{$R *.dfm}
@@ -572,7 +585,7 @@ begin
encode_init_aig:=s;
end;
// transforme l'aiguillage du tableau aiguillage en texte
// transforme l'aiguillage de la base de données aiguillage en texte
function encode_aig(index : integer): string;
var s : string;
c : char;
@@ -646,103 +659,6 @@ begin
encode_aig:=s;
end;
// transforme l'aiguillage des champs graphiques en texte
function encode_aig_gfx : string;
var s,ss : string;
c : char;
tjd,tjs,tri : boolean;
modele,erreur,i : integer;
begin
val(formconfig.EditAdrAig.text,i,erreur);
s:=intToSTR(i);
modele:=Formconfig.comboBoxAig.ItemIndex;
tjd:=modele=1;
tjs:=modele=2;
tri:=modele=3;
if tjd then s:=s+'TJD';
if tjs then s:=s+'TJS';
if tri then begin s:=s+'TRI,';val(formconfig.editAigTriple.text,i,erreur);s:=s+intToSTR(i);end;
s:=s+',';
if not(tjd) then
with formconfig do
begin
// P
s:=s+'P';
ss:=EditPointe_BG.Text;
val(ss,i,erreur);s:=s+intToSTR(i);
if erreur<>0 then c:=ss[erreur] ;
if (c<>'Z') and (c<>#0) then s:=s+c;
// D
s:=s+',D';
ss:=EditDroit_BD.Text;
val(ss,i,erreur);s:=s+intToSTR(i);
if erreur<>0 then c:=ss[erreur] ;
if (c<>'Z') and (c<>#0) then s:=s+c;
// S
s:=s+',S';
ss:=EditDevie_HD.Text;
val(ss,i,erreur);s:=s+intToSTR(i);
if erreur<>0 then c:=ss[erreur] ;
if (c<>'Z') and (c<>#0) then s:=s+c;
// S2 aiguillage triple
if tri then
begin
s:=s+',S2-';
ss:=EditDevieS2.Text;
val(ss,i,erreur);s:=s+intToSTR(i);
if erreur<>0 then c:=ss[erreur] ;
if (c<>'Z') and (c<>#0) then s:=s+c;
end;
// vitesse de franchissement
if radioButtonSans.Checked then s:=s+',V0';
if radioButton30kmh.Checked then s:=s+',V30';
if radioButton60kmh.Checked then s:=s+',V60';
if checkinverse.Checked then s:=s+',I1' else s:=s+',I0';
end
else
// tjd
begin
with formconfig do
begin
s:=s+'D(';
ss:=Edit_HG.Text;
val(ss,i,erreur);s:=s+intToSTR(i);
if erreur<>0 then c:=ss[erreur] ;
if (c<>'Z') and (c<>#0) then s:=s+c;
s:=s+',';
ss:=EditP1.Text;
val(ss,i,erreur);s:=s+intToSTR(i);
if erreur<>0 then c:=ss[erreur] ;
if (c<>'Z') and (c<>#0) then s:=s+c;
s:=s+'),';
s:=s+',S(';
ss:=EditPointe_BG.Text;
val(ss,i,erreur);s:=s+intToSTR(i);
if erreur<>0 then c:=ss[erreur] ;
if (c<>'Z') and (c<>#0) then s:=s+c;
s:=s+',';
ss:=EditP2.Text;
val(ss,i,erreur);s:=s+intToSTR(i);
if erreur<>0 then c:=ss[erreur] ;
if (c<>'Z') and (c<>#0) then s:=s+c;
s:=s+'),';
s:=s+'I';
if checkInverse.Checked then s:=s+'1' else s:=s+'0';
end;
end;
encode_aig_gfx:=s;
end;
// renvoie un A si BT est un aiguillage
function TypeEl_to_char(BT : TEquipement) : string;
begin
@@ -799,6 +715,41 @@ begin
j:=feux[i].Adr_det4;
if j<>0 then s:=s+','+IntToSTR(feux[i].Adr_det4)+','+TypeEl_To_char(feux[i].Btype_suiv4)+IntToSTR(feux[i].Adr_el_suiv4);
s:=s+'),';
//verrouillage au carré
if feux[i].verrouCarre then s:=s+'1' else s:=s+'0';
// si unsemaf, paramètre supplémentaire
if feux[i].decodeur=6 then s:=s+',U'+intToSTR(feux[i].unisemaf);
// conditions supplémentaires pour le carré
for nc:=1 to 6 do
begin
CondCarre:=Length(feux[i].condcarre[nc]); // nombre de conditions (nombre de parenthèses ex 3 pour (A21S,A6D)(A30S,A20D)(A1D,A2S,A3D)
dec(condcarre);
if condCarre>0 then
begin
s:=s+',(';
for k:=1 to condcarre do
begin
s:=s+'A'+IntToSTR(feux[i].condcarre[nc][k].Adresse)+feux[i].condcarre[nc][k].PosAig;
if k<condcarre then s:=s+',';
end;
s:=s+')';
end;
end;
// déodeur SR
if feux[i].decodeur=7 then
begin
s:=s+',SR(';
for nc:=1 to 8 do
begin
s:=s+intToSTR(feux[i].SR[nc].sortie1)+',';
s:=s+intToSTR(feux[i].SR[nc].sortie0);
if nc<8 then s:=s+',' else s:=s+')';
end;
end;
end
else
// feux directionnels
@@ -815,34 +766,7 @@ begin
s:=s+')';
end;
end;
//verrouillage au carré
if aspect<10 then
begin
if feux[i].verrouCarre then s:=s+'1' else s:=s+'0';
// si unsemaf, paramètre supplémentaire
if feux[i].decodeur=6 then s:=s+','+intToSTR(feux[i].unisemaf);
end;
// conditions supplémentaires pour le carré
if aspect<10 then
begin
for nc:=1 to 6 do
begin
CondCarre:=Length(feux[i].condcarre[nc]); // nombre de conditions (nombre de parenthèses ex 3 pour (A21S,A6D)(A30S,A20D)(A1D,A2S,A3D)
if condCarre<>0 then dec(condcarre);
if condCarre<>0 then
begin
s:=s+',(';
for k:=1 to condcarre do
begin
s:=s+'A'+IntToSTR(feux[i].condcarre[nc][k].Adresse)+feux[i].condcarre[nc][k].PosAig;
if k<condcarre then s:=s+',';
end;
s:=s+')';
end;
end;
end;
encode_sig_feux:=s;
end;
@@ -874,13 +798,14 @@ begin
val(sa,l,erreur); // nombre de feux du signal directionnel
if l>6 then
begin
Affiche('Ligne '+s+' 6 feux maximum pour un panneau directionnel',clred);
Affiche('Ligne '+chaine_signal+' 6 feux maximum pour un panneau directionnel',clred);
exit;
end;
feux[i].aspect:=l+10;Delete(s,1,j);
// décodeur
val(s,adr,erreur);
Feux[i].decodeur:=adr;
if (adr>NbDecodeur-1) then Affiche('Ligne '+chaine_signal+' : erreur décodeur inconnu',clred);
j:=pos(',',s);Delete(s,1,j);
// liste des aiguillages
k:=1; // numéro de feu directionnel
@@ -889,7 +814,7 @@ begin
delete(s,1,1); // supprimer ( ou le ,
j:=1; // Nombre de descriptions d'aiguillages dans le feu
repeat
if s[1]<>'A' then begin Affiche('Erreur a la ligne '+s,clred);exit;end;
if s[1]<>'A' then begin Affiche('Erreur a la ligne '+chaine_signal,clred);exit;end;
delete(s,1,1);
val(s,adr,erreur); // adresse
c:=s[erreur]; // type
@@ -923,6 +848,7 @@ begin
if j>1 then begin Feux[i].FeuBlanc:=(copy(s,1,j-1))='1';delete(s,1,j);end;
j:=pos(',',s);
val(s,Feux[i].decodeur,erreur);
if (Feux[i].decodeur>NbDecodeur-1) then Affiche('Ligne '+chaine_signal+' : erreur décodeur inconnu',clred);
if j<>0 then delete(s,1,j);
feux[i].Adr_el_suiv1:=0;feux[i].Adr_el_suiv2:=0;feux[i].Adr_el_suiv3:=0;feux[i].Adr_el_suiv4:=0;
feux[i].Btype_Suiv1:=rien;feux[i].Btype_Suiv2:=rien;feux[i].Btype_Suiv3:=rien;feux[i].Btype_Suiv4:=rien;
@@ -930,7 +856,6 @@ begin
// éléments optionnels des voies supplémentaires
if j<>0 then
begin
//Affiche('Entrée:s='+s,clyellow);
sa:=s;
multiple:=s[1]='(';
if multiple then
@@ -944,8 +869,6 @@ begin
val(s,adr,erreur); // extraire l'adresse
Delete(s,1,k);
end;
//Affiche('Adr='+IntToSTR(adr)+' ' +intToSTR(erreur),clyellow);
//Affiche('S avec premier champ supprimé='+s,clyellow);
inc(j);
if (j=1) then feux[i].Adr_det1:=adr;
if (j=2) then feux[i].Adr_det2:=adr;
@@ -968,17 +891,14 @@ begin
if (j=4) then feux[i].Btype_Suiv4:=det;
end;
Val(s,adr,erreur);
//Affiche('Adr='+IntToSTR(Adr),clyellow);
if (j=1) then feux[i].Adr_el_suiv1:=Adr;
if (j=2) then feux[i].Adr_el_suiv2:=Adr;
if (j=3) then feux[i].Adr_el_suiv3:=Adr;
if (j=4) then feux[i].Adr_el_suiv4:=Adr;
delete(s,1,erreur-1);
if s[1]=',' then delete(s,1,1);
//Affiche('S en fin de traitement s='+s,clyellow);
fini:=s[1]=')';
until (fini) or (j>4);
//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_signal,clred); closefile(fichier);exit;end;
@@ -986,16 +906,20 @@ begin
k:=pos(',',s);
delete(s,1,k);
//Affiche('s='+s,clyellow);
if length(s)=0 then begin Affiche('Erreur: fichier de configuration ligne erronnée : '+chaine_signal,clred); closefile(fichier);exit;end;
feux[i].VerrouCarre:=s[1]='1';
delete(s,1,1);
if length(s)>0 then if s[1]=',' then delete(s,1,1);
if length(s)>0 then if s[1]='U' then delete(s,1,1);
// si décodeur UniSemaf (6) champ supplémentaire
if Feux[i].decodeur=6 then
begin
k:=pos(',',s);
if k=0 then begin Affiche('Ligne '+chaine_signal,clred);Affiche('Manque définition de la cible pour le décodeur UniSemaf',clred);end
else
begin
Delete(S,1,k);
Val(s,k,erreur);
Feux[i].UniSemaf:=k;
erreur:=verif_UniSemaf(adresse,k);
@@ -1008,17 +932,18 @@ begin
end;
end;
end;
// voir si conditions supplémentaires de carré
l:=1; // nombre de parenthèses
repeat
t:=pos('(',s);
if t<>0 then
if t=1 then
begin
//Affiche('Conditions supplémentaires pour le feu '+IntToSTR(adresse)+' parenthèse '+intToSTR(l),clyellow);
k:=pos(')',s);
sa:=copy(s,t+1,k-t-1); // contient l'intérieur des parenthèses sans les parenthèses
//Affiche(sa,clLime);
delete(s,1,k);//Affiche(s,clYellow);
// boucle dans la parenthèse
bd:=0;
repeat
@@ -1033,7 +958,6 @@ begin
if chaine[1]='A' then
begin
delete(chaine,1,1);
//Affiche(chaine,ClOrange);
val(chaine,adresse,erreur);
feux[i].condCarre[l][bd].Adresse:=adresse;
if erreur<>0 then feux[i].condCarre[l][bd].PosAig:=chaine[erreur] else
@@ -1041,11 +965,31 @@ begin
end;
k:=pos(',',sa);if k<>0 then delete(sa,1,k);
//Affiche(sa,clyellow);
until k=0;
inc(l);
end;
until t=0;
until t<>1;
if length(s)>1 then if s[1]=',' then delete(s,1,1);
// champ SR
if length(s)>2 then
if copy(s,1,2)='SR' then
begin
delete(s,1,3);
for l:=1 to 8 do
begin
k:=pos(',',s);
val(s,j,erreur);
delete(s,1,k);
feux[i].SR[l].sortie1:=j;
k:=pos(',',s);
val(s,j,erreur);
delete(s,1,k);
feux[i].SR[l].sortie0:=j;
end;
end;
end;
end;
end;
@@ -1953,12 +1897,18 @@ begin
EditDet3.Text:=''; EditSuiv3.Text:='';
EditDet4.Text:=''; EditSuiv4.Text:='';
ComboBoxDec.ItemIndex:=feux[i].decodeur;
if feux[i].decodeur=7 then
ButtonConfigSR.Visible:=true else ButtonConfigSR.Visible:=false;
if feux[i].decodeur=6 then
begin
EditSpecUni.Visible:=true;LabelUni.Visible:=true;
EditSpecUni.Text:=IntToSTR(feux[i].Unisemaf);
end
else begin EditSpecUni.Visible:=false;LabelUni.Visible:=false;end;
d:=feux[i].aspect;
case d of
2 : ComboBoxAsp.ItemIndex:=0;
@@ -2264,13 +2214,12 @@ begin
clicliste:=false;
end;
// on change la valeur de la description du champ HG pour les TJD
procedure TFormConfig.Edit_HGKeyPress(Sender: TObject; var Key: Char);
procedure TFormConfig.Edit_HGChange(Sender: TObject);
var s : string;
adr,adraig,erreur,index : integer;
b : char;
begin
if clicliste or (ord(Key)<>VK_RETURN) then exit;
if clicliste then exit;
if affevt then affiche('Evt change HG',clyellow);
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then
@@ -2302,8 +2251,8 @@ begin
end;
end;
// on change la valeur de la description de la déviation de l'aiguillage
procedure TFormConfig.EditDevie_HDKeyPress(Sender: TObject; var Key: Char);
// on change la valeur de la description du champ HG pour les TJD
procedure TFormConfig.EditDevie_HDChange(Sender: TObject);
var AdrAig,adr,adr2,erreur,index : integer;
b : char;
modele:Tequipement;
@@ -2311,7 +2260,7 @@ var AdrAig,adr,adr2,erreur,index : integer;
begin
// cliqué sur le edit dévié aiguillage
// ne pas traiter si on a cliqué sur la liste
if clicliste or (ord(Key)<>VK_RETURN) then exit;
if clicliste then exit;
if affevt then affiche('Evt change dévié',clyellow);
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then
@@ -2364,8 +2313,8 @@ begin
end;
end;
// on change la valeur de la description du droit de l'aiguillage
procedure TFormConfig.EditDroit_BDKeyPress(Sender: TObject; var Key: Char);
// on change la valeur de la description de la déviation de l'aiguillage
procedure TFormConfig.EditDroit_BDChange(Sender: TObject);
var AdrAig,adr,erreur,index,adr2 : integer;
b : char;
modele: TEquipement;
@@ -2373,7 +2322,7 @@ var AdrAig,adr,erreur,index,adr2 : integer;
begin
// cliqué sur le edit droit aiguillage
// ne pas traiter si on a cliqué sur la liste
if clicliste or (ord(Key)<>VK_RETURN) then exit;
if clicliste then exit;
if affevt then affiche('Evt change droit',clyellow);
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then
@@ -2421,10 +2370,10 @@ begin
LabelInfo.caption:='Modification de la TJD homologe ('+IntToSTR(adr2)+')';
end;
end;
end;
procedure TFormConfig.EditPointe_BGKeyPress(Sender: TObject;
var Key: Char);
procedure TFormConfig.EditPointe_BGChange(Sender: TObject);
var AdrAig,adr,erreur,index : integer;
b : char;
normal,tjdC,tjsC,triC : boolean;
@@ -2432,7 +2381,7 @@ var AdrAig,adr,erreur,index : integer;
begin
// cliqué sur le edit pointe aiguillage
// ne pas traiter si on a cliqué sur la liste
if clicliste or (ord(Key)<>VK_RETURN) then exit;
if clicliste then exit;
if affevt then affiche('Evt change pointe',clyellow);
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then
@@ -2477,7 +2426,10 @@ begin
else
LabelInfo.caption:='Erreur pointe aiguillage '+intToSTR(AdrAig);
end;
end;
procedure TFormConfig.EditDevieS2KeyPress(Sender: TObject; var Key: Char);
var AdrAig,adr,erreur,index : integer;
@@ -2645,11 +2597,11 @@ begin
clicliste:=false;
end;
procedure TFormConfig.EditDet1KeyPress(Sender: TObject; var Key: Char);
procedure Det1;
var s : string;
i,erreur : integer;
begin
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
if clicliste or (ligneClicSig<0) then exit;
if affevt then Affiche('Evt detecteur 1',clOrange);
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
@@ -2667,12 +2619,23 @@ begin
end;
end;
procedure TFormConfig.EditSuiv1KeyPress(Sender: TObject; var Key: Char);
var s : string;
procedure TFormConfig.EditDet1KeyPress(Sender: TObject; var Key: Char);
begin
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
Det1;
end;
procedure TFormConfig.EditDet1Change(Sender: TObject);
begin
Det1;
end;
procedure Suiv1;
var s : string;
i,erreur : integer;
bt : Tequipement;
begin
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
begin
if clicliste or (ligneClicSig<0) then exit;
if affevt then Affiche('Evt Element suivant1',clOrange);
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
@@ -2707,11 +2670,23 @@ begin
end;
end;
procedure TFormConfig.EditDet2KeyPress(Sender: TObject; var Key: Char);
procedure TFormConfig.EditSuiv1Change(Sender: TObject);
begin
Suiv1;
end;
procedure TFormConfig.EditSuiv1KeyPress(Sender: TObject; var Key: Char);
begin
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
Suiv1;
end;
procedure Det2;
var s : string;
i,erreur : integer;
begin
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
if clicliste or (ligneClicSig<0) then exit;
if affevt then Affiche('Evt detecteur 2',clOrange);
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
@@ -2729,6 +2704,17 @@ begin
end;
end;
procedure TFormConfig.EditDet2Change(Sender: TObject);
begin
det2;
end;
procedure TFormConfig.EditDet2KeyPress(Sender: TObject; var Key: Char);
begin
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
det2;
end;
procedure TFormConfig.CheckVerrouCarreClick(Sender: TObject);
var s : string;
begin
@@ -2759,12 +2745,11 @@ begin
end;
end;
procedure TFormConfig.EditSuiv2KeyPress(Sender: TObject; var Key: Char);
procedure Suiv2;
var s : string;
erreur,i: integer;
bt : Tequipement;
begin
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
if affevt then Affiche('Evt Element suivant2',clOrange);
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
@@ -2799,12 +2784,24 @@ begin
end;
end;
procedure TFormConfig.EditSuiv2Change(Sender: TObject);
begin
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) then exit;
Suiv2;
end;
procedure TFormConfig.EditDet3KeyPress(Sender: TObject; var Key: Char);
procedure TFormConfig.EditSuiv2KeyPress(Sender: TObject; var Key: Char);
begin
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
Suiv2;
end;
procedure det3;
var s : string;
i,erreur : integer;
begin
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
if clicliste or (ligneClicSig<0) then exit;
if affevt then Affiche('Evt detecteur 3',clOrange);
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
@@ -2822,12 +2819,24 @@ begin
end;
end;
procedure TFormConfig.EditSuiv3KeyPress(Sender: TObject; var Key: Char);
procedure TFormConfig.EditDet3Change(Sender: TObject);
begin
if clicliste or (ligneClicSig<0) then exit;
det3;
end;
procedure TFormConfig.EditDet3KeyPress(Sender: TObject; var Key: Char);
begin
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
det3;
end;
procedure Suiv3;
var s : string;
erreur,i : integer;
bt : Tequipement;
begin
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
if clicliste or (ligneClicSig<0) then exit;
if affevt then Affiche('Evt Element suivant3',clOrange);
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
@@ -2860,13 +2869,25 @@ begin
s:=encode_sig_feux(ligneClicSig+1);
RichSig.Lines[ligneClicSig]:=s;
end;
end;
procedure TFormConfig.EditSuiv3Change(Sender: TObject);
begin
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) then exit;
suiv3;
end;
procedure TFormConfig.EditDet4KeyPress(Sender: TObject; var Key: Char);
procedure TFormConfig.EditSuiv3KeyPress(Sender: TObject; var Key: Char);
begin
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) then exit;
suiv3;
end;
procedure det4;
var s : string;
i,erreur : integer;
begin
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
if clicliste then exit;
if affevt then Affiche('Evt detecteur 4',clOrange);
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
@@ -2882,14 +2903,26 @@ begin
RichSig.Lines[ligneClicSig]:=s;
feux[ligneClicSig+1].modifie:=true;
end;
end;
procedure TFormConfig.EditDet4Change(Sender: TObject);
begin
if clicliste or (ligneClicSig<0) then exit;
det4;
end;
procedure TFormConfig.EditSuiv4KeyPress(Sender: TObject; var Key: Char);
procedure TFormConfig.EditDet4KeyPress(Sender: TObject; var Key: Char);
begin
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
det4;
end;
procedure suiv4;
var s : string;
erreur,i : integer;
bt : Tequipement;
begin
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
if clicliste or (ligneClicSig<0) then exit;
if affevt then Affiche('Evt Element suivant4',clOrange);
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
@@ -2924,6 +2957,19 @@ begin
end;
end;
procedure TFormConfig.EditSuiv4Change(Sender: TObject);
begin
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) then exit;
Suiv4;
end;
procedure TFormConfig.EditSuiv4KeyPress(Sender: TObject; var Key: Char);
begin
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
Suiv4;
end;
procedure TFormConfig.EditActChange(Sender: TObject);
var s : string;
act,erreur : integer;
@@ -3119,11 +3165,11 @@ begin
end;
end;
procedure TFormConfig.EditAdrSigKeyPress(Sender: TObject; var Key: Char);
procedure AdrSig;
var s : string;
i, erreur : integer;
begin
if clicliste or (ord(Key)<>VK_RETURN) then exit;
if clicliste then exit;
if affevt then Affiche('Evt adresse signal',clOrange);
// attention interférence avec clic droit propriétés sur un signal qui génère un evt sur ce contrôle
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
@@ -3151,13 +3197,25 @@ begin
end;
end;
procedure TFormConfig.EditAdrAigKeyPress(Sender: TObject; var Key: Char);
var s : string;
procedure TFormConfig.EditAdrSigChange(Sender: TObject);
begin
AdrSig;
end;
procedure TFormConfig.EditAdrSigKeyPress(Sender: TObject; var Key: Char);
begin
if clicliste or (ord(Key)<>VK_RETURN) then exit;
AdrSig;
end;
procedure TFormConfig.EditAdrAigChange(Sender: TObject);
var s : string;
i,vide,erreur,index,adr2 : integer;
modele: TEquipement;
c : char;
begin
if clicliste or (ord(Key)<>VK_RETURN) then exit;
if clicliste then exit;
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then
with Formconfig do
begin
@@ -3184,12 +3242,12 @@ begin
LabelInfo.caption:='aiguillage '+IntToSTR(i)+' existe déja - ne sera pas écrasé' ;
exit;
end;
EditAdrAig.Color:=clWindow;
LabelInfo.caption:=' ';
s:=encode_aig_gfx;
aiguillage[index].adresse:=i;
aiguillage[index].modifie:=true;
s:=encode_aig(index);
formconfig.RichAig.Lines[ligneclicAig]:=s;
end;
if (modele=tjd) or (modele=tjs) then
@@ -3256,11 +3314,11 @@ begin
dessine_feu_mx(Feux[index].Img.Canvas,0,0,1,1,feux[index].adresse,1); // dessine les feux du signal
end;
procedure TFormConfig.EditSpecUniKeyPress(Sender: TObject; var Key: Char);
procedure Uni;
var erreur,i,Adr : integer ;
s : string ;
begin
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
if clicliste or (ligneClicSig<0) then exit;
if affevt then Affiche('Evt Unisemaf',clOrange);
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
@@ -3280,6 +3338,18 @@ begin
s:=encode_sig_feux(ligneClicSig+1);
RichSig.Lines[ligneClicSig]:=s;
end;
end;
procedure TFormConfig.EditSpecUniChange(Sender: TObject);
begin
if clicliste or (ligneClicSig<0) then exit;
uni;
end;
procedure TFormConfig.EditSpecUniKeyPress(Sender: TObject; var Key: Char);
begin
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
uni;
end;
procedure TFormConfig.ButtonrestaureClick(Sender: TObject);
@@ -3566,7 +3636,7 @@ begin
begin
LabelInfo.caption:='Erreur adresse actionneur voie 2 ouvre';exit
end else LabelInfo.caption:=' ';
i:=lignecliqueePN;
i:=lignecliqueePN+1;
tablo_PN[i].voie[2].ActOuvre:=act;
V2valide:=(EditV2O.text<>'') and (EditV2F.text<>'');
NbVoies:=tablo_PN[i].NbVoies;
@@ -4992,8 +5062,9 @@ begin
LabelInfo.Caption:='';
end;
procedure TFormConfig.EditAigTripleKeyPress(Sender: TObject; var Key: Char);
var s : string;
procedure TFormConfig.EditAigTripleChange(Sender: TObject);
var s : string;
i,erreur,index : integer;
model: TEquipement;
begin
@@ -5020,9 +5091,10 @@ begin
end ;
if i=0 then EditAigTriple.Color:=clred else EditAigTriple.Color:=clWindow;
LabelInfo.caption:='';
s:=encode_aig_gfx;
aiguillage[index].AdrTriple:=i;
aiguillage[index].modifie:=true;
s:=encode_aig(index);
formconfig.RichAig.Lines[ligneclicAig]:=s;
end;
end;
@@ -5036,7 +5108,7 @@ begin
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then
with Formconfig do
begin
s:=encode_aig_gfx;
i:=ComboBoxDD.ItemIndex;
case i of
0 : pos:=const_devie;
@@ -5046,17 +5118,16 @@ begin
aiguillage[ligneclicAig+1].PosInit:=pos;
aiguillage[ligneclicAig+1].modifie:=true;
formconfig.RichAig.Lines[ligneclicAig]:=s;
s:=encode_aig(ligneclicAig+1);
RichAig.lines[ligneclicAig]:=s;
end;
end;
procedure TFormConfig.EditTempo10KeyPress(Sender: TObject; var Key: Char);
procedure TFormConfig.EditTempo10Change(Sender: TObject);
var s : string;
i,erreur : integer;
begin
if clicliste or (ord(Key)<>VK_RETURN) or (ligneclicAig<0) then exit;
if clicliste or (ligneclicAig<0) then exit;
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then
with Formconfig do
@@ -5066,14 +5137,12 @@ begin
if (i>0) and (i<50) then
begin
LabelInfo.caption:='';
s:=encode_aig_gfx;
aiguillage[ligneclicAig+1].temps:=i;
aiguillage[ligneclicAig+1].modifie:=true;
formconfig.RichAig.Lines[ligneclicAig]:=s;
s:=encode_aig(ligneclicAig+1);
RichAig.lines[ligneclicAig]:=s;
end ;
end;
end;
end;
procedure TFormConfig.CheckInvInitClick(Sender: TObject);
@@ -5198,13 +5267,29 @@ begin
end;
end;
procedure TFormConfig.ButtonConfigSRClick(Sender: TObject);
begin
begin
clicListe:=true;
formSR.showmodal;
formSR.close;
clicListe:=false;
end;
begin
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -1,5 +1,5 @@
object FormPrinc: TFormPrinc
Left = 13
Left = 15
Top = 175
Width = 1212
Height = 664
+124 -18
View File
@@ -198,8 +198,11 @@ Max_Simule=10000;
EtatSign : array[0..13] of string[20] =('carré','sémaphore','sémaphore cli','vert','vert cli','violet',
'blanc','blanc cli','jaune','jaune cli','ral 30','ral 60','rappel 30','rappel 60');
NbDecodeur = 7;
decodeur : array[0..NbDecodeur-1] of string[20] =('rien','digital Bahn','CDF','LDT','LEB','NMRA','Unisemaf');
NbDecodeur = 8;
decodeur : array[0..NbDecodeur-1] of string[20] =('rien','digital Bahn','CDF','LDT','LEB','NMRA','Unisemaf','SR');
Etats : array[0..19] of string[30]=('Non commandé','carré','sémaphore','sémaphore cli','vert','vert cli','violet',
'blanc','blanc cli','jaune','jaune cli','ralen 30','ralen 60','ralen 60 + jaune cli','rappel 30','rappel 60',
'rappel 30 + jaune','rappel 30 + jaune cli','rappel 60 + jaune','rappel 60 + jaune cli');
type
Taccessoire = (aigP,feu);
@@ -278,6 +281,9 @@ TBranche = record
Adresse : integer; // aiguillage
posAig : char;
end;
SR : array[1..8] of record // décodeur Stéphane Ravaut
sortie1,sortie0 : integer;
end;
end;
@@ -421,8 +427,25 @@ begin
StatusBar1.Simpletext:=Application.Hint;
end;
// fonctions sur les bits
function testBit(n : word;position : integer) : boolean;
begin
testBit:=n and (1 shl position) = (1 shl position);
end;
Function RazBit(n : word;position : integer) : word;
begin
RazBit:=n and not(1 shl position);
end;
Function SetBit(n : word;position : integer) : word;
begin
SetBit:=n or (1 shl position);
end;
// renvoie le 1er numéro de bit à 1
// ex BitNum(4)=2
// PremBitNum(1)=0
// PremBitNum(4)=2
Function PremBitNum(n : word) : integer;
var i : integer;
trouve : boolean;
@@ -436,6 +459,7 @@ begin
PremBitNum:=i;
end;
// conversion du motif de bits (codebin) de la configuration du signal complexe en deux mots:
// en sortie :
// premierBit : code de la signalisation
@@ -447,6 +471,47 @@ begin
combine:=PremBitNum(CodeBin and $fc00);
end;
// conversion d'un état signal binaire en état unique
// exemple code_to_etat(10001000000000) (jaune_cli et rappel 60) renvoie 19
function code_to_etat(code : word) : integer;
var aspect,combine : word;
begin
code_to_aspect(code,aspect,combine);
result:=9999;
if aspect=0 then result:=1; // carré
if aspect=1 then result:=2; // sémaphore
if aspect=2 then result:=3; // sémaphore cli
if aspect=3 then result:=4; // vert
if aspect=4 then result:=5; // vert cli
if aspect=5 then result:=6; // violet
if aspect=6 then result:=7; // blanc
if aspect=7 then result:=8; // blanc cli
if aspect=8 then result:=9; // jaune
if aspect=9 then result:=10; // jaune cli
if aspect=16 then
begin
if combine=10 then result:=11; // ralen 30
if combine=11 then result:=12; // ralen 60
if combine=12 then result:=14; // rappel 30
if combine=13 then result:=15; // rappel 60
end
else
begin
if (aspect=9) and (combine=11) then result:=13; //ralen 60 + jaune cli
if (aspect=8) and (combine=12) then result:=16; //rappel 30 + jaune
if (aspect=9) and (combine=12) then result:=17; //rappel 30 + jaune cli
if (aspect=8) and (combine=13) then result:=18; //rappel 60 + jaune
if (aspect=9) and (combine=13) then result:=19; //rappel 60 + jaune cli
end;
code_to_etat:=result;
{'Non commandé','carré','sémaphore','sémaphore cli','vert','vert cli','violet',
'blanc','blanc cli','jaune','jaune cli','ralen 30','ralen 60','ralen 60 + jaune cli','rappel 30','rappel 60',
7 8 9 10 11 12 13 14 15
'rappel 30 + jaune','rappel 30 + jaune cli','rappel 60 + jaune','rappel 60 + jaune cli');
16 17 18 19 }
end;
// dessine un cercle plein dans le feu
procedure cercle(ACanvas : Tcanvas;x,y,rayon : integer;couleur : Tcolor);
@@ -1593,21 +1658,6 @@ begin
end;
end;
// fonctions sur les bits
function testBit(n : word;position : integer) : boolean;
begin
testBit:=n and (1 shl position) = (1 shl position);
end;
Function RazBit(n : word;position : integer) : word;
begin
RazBit:=n and not(1 shl position);
end;
Function SetBit(n : word;position : integer) : word;
begin
SetBit:=n or (1 shl position);
end;
// renvoie la chaîne de l'état du signal
function chaine_signal(etat : word) : string;
@@ -1820,6 +1870,51 @@ begin
end;
end;
{==========================================================================
envoie les données au décodeur SR
===========================================================================*}
procedure envoi_SR(adresse : integer);
var
code,aspect,combine : word;
index,i,etat : integer;
s : string;
begin
if (ancien_tablo_signalCplx[adresse]<>EtatSignalCplx[adresse]) then //; && (stop_cmd==FALSE))
begin
ancien_tablo_signalCplx[adresse]:=EtatSignalCplx[adresse];
code:=EtatSignalCplx[adresse];
//code_to_aspect(code,aspect,combine);
s:='Signal SR: ad'+IntToSTR(adresse)+'='+chaine_signal(code);
if traceSign then affiche(s,clOrange);
if Affsignal then afficheDebug(s,clOrange);
index:=index_feu(adresse);
etat:=code_to_etat(code);
//Affiche('Code a chercher='+IntToSTR(etat),clyellow);
inc(aspect);
if index<>0 then
begin
i:=0;
repeat
inc(i);
until (feux[index].SR[i].sortie1=etat) or (feux[index].SR[i].sortie0=etat) or (i=8);
if (feux[index].SR[i].sortie1=etat) then
begin
//affiche('trouvé en sortie1 index '+IntToSTR(i),clyellow);
Pilote_acc(adresse+i-1,2,feu);
end;
if (feux[index].SR[i].sortie0=etat) then
begin
//affiche('trouvé en sortie0 index '+IntToSTR(i),clyellow);
Pilote_acc(adresse+i-1,1,feu);
end;
end;
end;
end;
{==========================================================================
envoie les données au décodeur LEB
===========================================================================*}
@@ -2403,6 +2498,7 @@ begin
4 : envoi_LEB(Adr);
5 : envoi_NMRA(Adr);
6 : envoi_UniSemaf(Adr);
7 : envoi_SR(Adr);
end;
// vérifier si on quitte le rouge
@@ -3035,6 +3131,7 @@ begin
repeat
inc(Nligne);
s:=lit_ligne;
//affiche(s,clyellow);
ici3:
if s<>'0' then
begin
@@ -7652,6 +7749,15 @@ begin
inc(l);
if nc>0 then s:=s+'/';
until (nc<=0) or (l>6);
s:=s+' RV(';
for l:=1 to 8 do
begin
s:=s+intToSTR(feux[i].SR[l].sortie1)+',';
s:=s+intToSTR(feux[i].SR[l].sortie0);
if l<8 then s:=s+'/' else s:=s+')';
end;
end
else
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+2 -2
View File
@@ -23,8 +23,8 @@ var
Lance_verif : integer;
verifVersion,notificationVersion : boolean;
Const Version='3.2'; // sert à la comparaison de la version publiée
SousVersion='C'; // en cas d'absence de sous version mettre un espace
Const Version='3.3'; // sert à la comparaison de la version publiée
SousVersion=' '; // en cas d'absence de sous version mettre un espace
implementation
+2
View File
@@ -64,6 +64,8 @@ version 3.1 : Renforcement de la v
Correction d'un bug sur présence train avant signal sur aiguille en talon mal positionnée.
version 3.2 : Correction bug cohérence signal unisemaf.
: Simplification des aiguillages pilotés inversés
version 3.3 : Gestion du décodeur de signaux Stéphane Ravaut