This commit is contained in:
f1iwq2
2020-12-03 17:19:54 +01:00
parent b4a32bcdea
commit d7ad7a4977
14 changed files with 303 additions and 286 deletions

View File

@@ -31,5 +31,5 @@
-M -M
-$M16384,1048576 -$M16384,1048576
-K$00400000 -K$00400000
-LE"c:\program files\borland\delphi7\Projects\Bpl" -LE"c:\program files (x86)\borland\delphi7\Projects\Bpl"
-LN"c:\program files\borland\delphi7\Projects\Bpl" -LN"c:\program files (x86)\borland\delphi7\Projects\Bpl"

Binary file not shown.

Binary file not shown.

View File

@@ -1776,7 +1776,7 @@ object FormConfig: TFormConfig
Top = 8 Top = 8
Width = 585 Width = 585
Height = 441 Height = 441
ActivePage = TabSheetSig ActivePage = TabSheetCDM
Font.Charset = DEFAULT_CHARSET Font.Charset = DEFAULT_CHARSET
Font.Color = clBackground Font.Color = clBackground
Font.Height = -11 Font.Height = -11
@@ -2091,6 +2091,29 @@ object FormConfig: TFormConfig
TabOrder = 4 TabOrder = 4
end end
end end
object GroupBox15: TGroupBox
Left = 296
Top = 328
Width = 273
Height = 73
Caption = 'Divers'
TabOrder = 5
object Label31: TLabel
Left = 8
Top = 16
Width = 204
Height = 13
Caption = 'Seuil du nombre de d'#233'tecteurs trop distants'
end
object EditNbDetDist: TEdit
Left = 232
Top = 12
Width = 25
Height = 21
TabOrder = 0
Text = 'EditNbDetDist'
end
end
end end
object TabSheetAutonome: TTabSheet object TabSheetAutonome: TTabSheet
Caption = 'Mode autonome' Caption = 'Mode autonome'
@@ -2760,7 +2783,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

View File

@@ -182,6 +182,9 @@ type
EditEtatActionneur: TEdit; EditEtatActionneur: TEdit;
CheckRAZ: TCheckBox; CheckRAZ: TCheckBox;
CheckFenEt: TCheckBox; CheckFenEt: TCheckBox;
GroupBox15: TGroupBox;
EditNbDetDist: TEdit;
Label31: TLabel;
procedure ButtonAppliquerEtFermerClick(Sender: TObject); procedure ButtonAppliquerEtFermerClick(Sender: TObject);
procedure Button2Click(Sender: TObject); procedure Button2Click(Sender: TObject);
procedure FormActivate(Sender: TObject); procedure FormActivate(Sender: TObject);
@@ -226,6 +229,7 @@ function envoi_CDM(s : string) : boolean;
procedure connecte_CDM; procedure connecte_CDM;
function place_id(s : string) : string; function place_id(s : string) : string;
procedure decodeAig(s : string;var adr : integer;var B : char); procedure decodeAig(s : string;var adr : integer;var B : char);
procedure sauve_config;
implementation implementation
@@ -500,7 +504,7 @@ begin
if j<>0 then s:=s+','+IntToSTR(feux[i].Adr_det2)+','+TypeEl_To_char(feux[i].Btype_suiv2)+IntToSTR(feux[i].Adr_el_suiv2); if j<>0 then s:=s+','+IntToSTR(feux[i].Adr_det2)+','+TypeEl_To_char(feux[i].Btype_suiv2)+IntToSTR(feux[i].Adr_el_suiv2);
j:=feux[i].Adr_det3; j:=feux[i].Adr_det3;
if j<>0 then s:=s+','+IntToSTR(feux[i].Adr_det3)+','+TypeEl_To_char(feux[i].Btype_suiv3)+IntToSTR(feux[i].Adr_el_suiv3); if j<>0 then s:=s+','+IntToSTR(feux[i].Adr_det3)+','+TypeEl_To_char(feux[i].Btype_suiv3)+IntToSTR(feux[i].Adr_el_suiv3);
j:=feux[i].Adr_det4; 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); 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+'),'; s:=s+'),';
end end
@@ -518,11 +522,15 @@ begin
end; end;
s:=s+')'; s:=s+')';
end; end;
end; end;
//verrouillage au carré //verrouillage au carré
if aspect<10 then if feux[i].verrouCarre then s:=s+'1' else s:=s+'0'; 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;
encode_sig:=s; encode_sig:=s;
end; end;
@@ -596,6 +604,11 @@ begin
// plein écran // plein écran
writeln(fichierN,'Fenetre=',fenetre); writeln(fichierN,'Fenetre=',fenetre);
copie_commentaire; copie_commentaire;
// Nombre maxi de détecteurs considérés distants
writeln(fichierN,'Nb_Det_Dist=',Nb_Det_Dist);
copie_commentaire;
// Vérification des versions au démarrage // Vérification des versions au démarrage
if verifVersion then s:='1' else s:='0'; if verifVersion then s:='1' else s:='0';
@@ -736,13 +749,16 @@ begin
end; end;
procedure TFormConfig.ButtonAppliquerEtFermerClick(Sender: TObject);
procedure Sauve_config;
var i,erreur : integer; var i,erreur : integer;
s : string; s : string;
ChangeCDM,changeInterface,changeUSB,change_srv : boolean; ChangeCDM,changeInterface,changeUSB,change_srv : boolean;
begin begin
// Vérification de la configuration------------------------------------------- // Vérification de la configuration-------------------------------------------
// contrôle adresse IP CDM // contrôle adresse IP CDM
with FormConfig do
begin
s:=EditAdrIPCDM.text; s:=EditAdrIPCDM.text;
if not(IpOk(s)) then begin labelInfo.Caption:='Adresse IP CDM rail incorrecte';exit;end; if not(IpOk(s)) then begin labelInfo.Caption:='Adresse IP CDM rail incorrecte';exit;end;
ChangeCDM:=s<>AdresseIPCDM; ChangeCDM:=s<>AdresseIPCDM;
@@ -780,6 +796,11 @@ begin
if erreur<>0 then begin labelInfo.Caption:='Valeur temporisation de réponse interface';exit;end; if erreur<>0 then begin labelInfo.Caption:='Valeur temporisation de réponse interface';exit;end;
TimoutMaxInterface:=i; TimoutMaxInterface:=i;
val(EditNbDetDist.text,i,erreur);
if (erreur<>0) or (i<3) then begin labelInfo.Caption:='Valeur nombre de détecteurs trop distants incorrecte';exit;end;
Nb_Det_Dist:=i;
if RadioButton1.checked then Valeur_entete:=0; if RadioButton1.checked then Valeur_entete:=0;
if RadioButton2.checked then Valeur_entete:=1; if RadioButton2.checked then Valeur_entete:=1;
if RadioButton3.checked then Valeur_entete:=2; if RadioButton3.checked then Valeur_entete:=2;
@@ -848,11 +869,18 @@ begin
Srvc_PosTrain:=CheckServPosTrains.checked; Srvc_PosTrain:=CheckServPosTrains.checked;
Srvc_Sig:=CheckBoxSrvSig.checked; Srvc_Sig:=CheckBoxSrvSig.checked;
Raz_Acc_signaux:=CheckBoxRazSignaux.checked; Raz_Acc_signaux:=CheckBoxRazSignaux.checked;
end;
if change_srv then services_CDM; if change_srv then services_CDM;
// générer le fichiers config.cfg et clieng-GL.cfg // générer le fichiers config.cfg et clieng-GL.cfg
genere_config2; genere_config2;
end;
procedure TFormConfig.ButtonAppliquerEtFermerClick(Sender: TObject);
begin
Sauve_config;
formConfig.close; formConfig.close;
end; end;
@@ -889,7 +917,8 @@ begin
EditDroit_BD.ReadOnly:=false; EditDroit_BD.ReadOnly:=false;
Edit_HG.ReadOnly:=false; Edit_HG.ReadOnly:=false;
EditNbDetDist.text:=IntToSTR(Nb_Det_dist);
EditAdrIPCDM.text:=adresseIPCDM; EditAdrIPCDM.text:=adresseIPCDM;
EditPortCDM.Text:=IntToSTR(portCDM); EditPortCDM.Text:=IntToSTR(portCDM);
EditIPLenz.text:=AdresseIP; EditIPLenz.text:=AdresseIP;

View File

@@ -121,7 +121,7 @@ object FormDebug: TFormDebug
Anchors = [akLeft, akTop, akRight, akBottom] Anchors = [akLeft, akTop, akRight, akBottom]
Lines.Strings = ( Lines.Strings = (
'MemoDebug') 'MemoDebug')
ScrollBars = ssVertical ScrollBars = ssBoth
TabOrder = 3 TabOrder = 3
WordWrap = False WordWrap = False
end end

Binary file not shown.

View File

@@ -163,7 +163,7 @@ const_devieG_CDM=3; // positions aiguillages transmises par cdm
const_devieD_CDM=2; // positions aiguillages transmises par cdm const_devieD_CDM=2; // positions aiguillages transmises par cdm
const_droit_CDM=0; // positions aiguillages transmises par cdm const_droit_CDM=0; // positions aiguillages transmises par cdm
ClBleuClair=$FF7070 ; ClBleuClair=$FF7070 ;
Cyan=$FFA0A0; Cyan=$FF6060;
clviolet=$FF00FF; clviolet=$FF00FF;
GrisF=$414141; GrisF=$414141;
clOrange=$0077FF; clOrange=$0077FF;
@@ -225,7 +225,7 @@ var ancien_tablo_signalCplx,EtatsignalCplx : array[0..MaxAcc] of word;
AvecInitAiguillages,tempsCli,NbreFeux,pasreponse,AdrDevie,fenetre, AvecInitAiguillages,tempsCli,NbreFeux,pasreponse,AdrDevie,fenetre,
NombreImages,signalCpx,branche_trouve,Indexbranche_trouve,Actuel,Signal_suivant, NombreImages,signalCpx,branche_trouve,Indexbranche_trouve,Actuel,Signal_suivant,
Nbre_recu_cdm,Tempo_chgt_feux,Adj1,Adj2,NbrePN,ServeurInterfaceCDM, Nbre_recu_cdm,Tempo_chgt_feux,Adj1,Adj2,NbrePN,ServeurInterfaceCDM,
ServeurRetroCDM,TailleFonte : integer; ServeurRetroCDM,TailleFonte,Nb_Det_Dist : integer;
Hors_tension2,traceSign,TraceZone,Ferme,parSocket,ackCdm,PremierFD, Hors_tension2,traceSign,TraceZone,Ferme,parSocket,ackCdm,PremierFD,
NackCDM,MsgSim,succes,recu_cv,AffActionneur,AffAigDet,Option_demarrage, NackCDM,MsgSim,succes,recu_cv,AffActionneur,AffAigDet,Option_demarrage,
@@ -404,23 +404,6 @@ begin
combine:=BitNum(CodeBin and $fc00); combine:=BitNum(CodeBin and $fc00);
end; end;
procedure Xcode_to_aspect(codebin : word;var premierbit,combine : word) ;
var i,mot : word;
begin
mot:=codebin;
i:=0;premierbit:=0;Combine:=0;
while (i<15) do
begin
if (mot and 1)=1 then // si bit 0 du mot est à 1
begin
if (premierbit=0) then premierbit:=i+1 else Combine:=i+1;
end;
mot:=mot shr 1; //décaler à droite
inc(i);
end;
end;
// dessine un cercle plein dans le feu // dessine un cercle plein dans le feu
procedure cercle(ACanvas : Tcanvas;x,y,rayon : integer;couleur : Tcolor); procedure cercle(ACanvas : Tcanvas;x,y,rayon : integer;couleur : Tcolor);
begin begin
@@ -433,7 +416,7 @@ begin
//Affiche(IntToSTR(y),clyellow); //Affiche(IntToSTR(y),clyellow);
end; end;
// dessine les feux sur une cible à 2 feux // dessine les feux sur une cible à 2 feux dans le canvas spécifié
// x,y : offset en pixels du coin supérieur gauche du feu // x,y : offset en pixels du coin supérieur gauche du feu
// frX, frY : facteurs de réduction // frX, frY : facteurs de réduction
procedure dessine_feu2(Acanvas : Tcanvas;x,y : integer;frX,frY : real;EtatSignal : word;orientation : integer); procedure dessine_feu2(Acanvas : Tcanvas;x,y : integer;frX,frY : real;EtatSignal : word;orientation : integer);
@@ -442,7 +425,7 @@ var Temp,rayon,xViolet,YViolet,xBlanc,yBlanc,
ech : real; ech : real;
code,combine : word; code,combine : word;
begin begin
code_to_aspect(Etatsignal,code,combine); // et aspect code_to_aspect(Etatsignal,code,combine);
rayon:=round(6*frX); rayon:=round(6*frX);
// récupérer les dimensions de l'image d'origine du feu // récupérer les dimensions de l'image d'origine du feu
@@ -3476,7 +3459,7 @@ end;
branche_trouve:=NBranche; branche_trouve:=NBranche;
IndexBranche_trouve:=i; IndexBranche_trouve:=i;
end; end;
procedure lit_config; procedure lit_config;
@@ -3524,6 +3507,8 @@ var s,sa,chaine,SOrigine: string;
aiguillage[adresse].inversion:=invers; aiguillage[adresse].inversion:=invers;
end; end;
end; end;
end;
until (adresse=0);
end; end;
begin begin
@@ -3751,12 +3736,28 @@ begin
if i<>0 then if i<>0 then
begin begin
inc(nv); inc(nv);
delete(s,i,length(sa));
i:=0;
val(s,i,erreur);
ServeurRetroCDM:=i;
end;
sa:='NB_DET_DIST=';
i:=pos(sa,s);
if i<>0 then
begin
inc(nv);
trouve_NbDetDist:=true;
delete(s,i,length(sa)); delete(s,i,length(sa));
i:=0; i:=0;
val(s,i,erreur); val(s,i,erreur);
ServeurRetroCDM:=i; if i<2 then i:=2;
end; Nb_Det_Dist:=i;
end;
inc(it);
until (Nv>=18) or (it>30);
//affiche(IntToSTR(Nv)+' variables',cyan);
if (it>30) then if (it>30) then
begin begin
s:='ERREUR: manque variables dans config-gl.cfg'; s:='ERREUR: manque variables dans config-gl.cfg';
@@ -5242,7 +5243,7 @@ begin
((aiguillage[actuel].modele=2) or (aiguillage[Actuel].modele=3)) then ((aiguillage[actuel].modele=2) or (aiguillage[Actuel].modele=3)) then
begin begin
if nivDebug=3 then AfficheDebug('501 - Détection Précédent=TJD/S Suivant=TJD/S',clyellow); if nivDebug=3 then AfficheDebug('501 - Détection Précédent=TJD/S Suivant=TJD/S',clyellow);
// subsituer la pointe // subsituer la pointe
actuel:=aiguillage[Actuel].APointe; actuel:=aiguillage[Actuel].APointe;
end; end;
end; end;
@@ -5345,7 +5346,7 @@ begin
AfficheDebug(s,clOrange); AfficheDebug(s,clOrange);
end; end;
detecteur_suivant_El:=9999;exit; detecteur_suivant_El:=9999;exit;
end; end;
IndexBranche_det2:=IndexBranche_trouve; IndexBranche_det2:=IndexBranche_trouve;
branche_trouve_det2:=branche_trouve; branche_trouve_det2:=branche_trouve;
j:=1; // J=1 test en incrément J=2 test en décrément j:=1; // J=1 test en incrément J=2 test en décrément
@@ -5386,10 +5387,10 @@ begin
2 : s:=s+' aiguillage'; 2 : s:=s+' aiguillage';
3 : s:=s+' aiguillage bis'; 3 : s:=s+' aiguillage bis';
end; end;
AfficheDebug(s,clorange); AfficheDebug(s,clorange);
end; end;
AdrPrec:=AdrFonc;TypePrec:=TypeFonc; AdrPrec:=AdrFonc;TypePrec:=TypeFonc;
AdrFonc:=Adr;TypeFonc:=typeGen; AdrFonc:=Adr;TypeFonc:=typeGen;
inc(i); inc(i);
sortie:=((typeDet2=TypeGen) and (Adr=el2)) or (Adr=0) or (Adr>=9996) or (i=15) or (N_Det=Nb_det_dist); sortie:=((typeDet2=TypeGen) and (Adr=el2)) or (Adr=0) or (Adr>=9996) or (i=15) or (N_Det=Nb_det_dist);
@@ -5397,7 +5398,7 @@ begin
if (i=15) and (Nivdebug=3) then afficheDebug('Pas trouvé',clyellow); if (i=15) and (Nivdebug=3) then afficheDebug('Pas trouvé',clyellow);
if (N_det=Nb_det_dist) and (Nivdebug=3) then afficheDebug('Détecteurs trop distants',clyellow); if (N_det=Nb_det_dist) and (Nivdebug=3) then afficheDebug('Détecteurs trop distants',clyellow);
end end
else else
begin begin
// déja trouvé // déja trouvé
@@ -5422,6 +5423,7 @@ begin
end; end;
AfficheDebug(s,clorange); AfficheDebug(s,clorange);
end; end;
AdrPrec:=AdrFonc;TypePrec:=TypeFonc; AdrPrec:=AdrFonc;TypePrec:=TypeFonc;
AdrFonc:=Adr;TypeFonc:=typeGen; AdrFonc:=Adr;TypeFonc:=typeGen;
inc(i); inc(i);
@@ -5437,6 +5439,7 @@ begin
end; end;
detecteur_suivant_el:=Adr; detecteur_suivant_el:=Adr;
exit; exit;
end;
end; end;
if (i=10) then if NivDebug=3 then AfficheDebug('201 : Itération trop longue',clred); if (i=10) then if NivDebug=3 then AfficheDebug('201 : Itération trop longue',clred);
inc(j); inc(j);
@@ -6045,12 +6048,20 @@ function PresTrainPrec(AdrFeu : integer) : boolean;
end; end;
test_route_valide:=10 ; test_route_valide:=10 ;
end; end;
// présence train 3 détecteurs avant le feu
function PresTrainPrec(AdrFeu : integer) : boolean;
var PresTrain : boolean;
j,i,Det_initial,Adr_El_Suiv,Btype_el_suivant,DetPrec1,DetPrec2,DetPrec3,DetPrec4 : integer;
begin
i:=index_feu(Adrfeu);
if i=0 then
begin
Affiche('Erreur 602 - feu '+IntToSTR(adrFeu)+' non trouvé',clred); Affiche('Erreur 602 - feu '+IntToSTR(adrFeu)+' non trouvé',clred);
if NivDebug=3 then AfficheDebug('Erreur 602 - feu '+IntToSTR(adrFeu)+' non trouvé',clred); if NivDebug=3 then AfficheDebug('Erreur 602 - feu '+IntToSTR(adrFeu)+' non trouvé',clred);
PresTrainPrec:=false; PresTrainPrec:=false;
exit; exit;
begin end;
// **** un feu peut être associé à 4 détecteurs (pour 4 voies convergentes) ***** // **** un feu peut être associé à 4 détecteurs (pour 4 voies convergentes) *****
// il faut donc explorer les 4 détecteurs probables // il faut donc explorer les 4 détecteurs probables
@@ -6084,25 +6095,28 @@ begin
begin begin
det_initial:=feux[i].Adr_det4;Adr_El_Suiv:=feux[i].Adr_el_suiv4; det_initial:=feux[i].Adr_det4;Adr_El_Suiv:=feux[i].Adr_el_suiv4;
if feux[i].Btype_suiv1=1 then Btype_el_suivant:=1; if feux[i].Btype_suiv1=1 then Btype_el_suivant:=1;
if feux[i].Btype_suiv1=2 then Btype_el_suivant:=2; if feux[i].Btype_suiv1=2 then Btype_el_suivant:=2;
if feux[i].Btype_suiv1=4 then Btype_el_suivant:=2; if feux[i].Btype_suiv1=4 then Btype_el_suivant:=2;
end; end;
if (det_initial<>0) then if (det_initial<>0) then
begin begin
DetPrec1:=detecteur_suivant(Adr_El_Suiv,Btype_el_suivant,det_initial,1); DetPrec1:=detecteur_suivant(Adr_El_Suiv,Btype_el_suivant,det_initial,1);
if DetPrec1<9996 then // route bloquée par aiguillage mal positionné if DetPrec1<1024 then // route bloquée par aiguillage mal positionné
begin begin
DetPrec2:=detecteur_suivant_El(det_initial,1,DetPrec1,1); DetPrec2:=detecteur_suivant_El(det_initial,1,DetPrec1,1);
if DetPrec2<9996 then if DetPrec2<1024 then
begin
DetPrec3:=detecteur_suivant_El(DetPrec1,1,DetPrec2,1);
if DetPrec3<9996 then
begin begin
DetPrec4:=detecteur_suivant_El(DetPrec2,1,DetPrec3,1); DetPrec3:=detecteur_suivant_El(DetPrec1,1,DetPrec2,1);
if AffSignal or (NivDebug=3) then AfficheDebug('les détecteurs précédents au feu '+IntToSTR(Adrfeu)+' sont:'+intToSTR(Det_initial)+' '+intToSTR(DetPrec1)+' '+intToSTR(DetPrec2)+' '+intToSTR(DetPrec3)+' '+intToSTR(DetPrec4),clyellow); if DetPrec3<1024 then
PresTrain:=MemZone[DetPrec4,detPrec3] or begin
MemZone[DetPrec3,detPrec2] or MemZone[DetPrec2,detPrec1] or MemZone[DetPrec1,Det_initial] or presTrain ; DetPrec4:=detecteur_suivant_El(DetPrec2,1,DetPrec3,1);
if AffSignal or (NivDebug=3) then if DetPrec4<1024 then
begin
if AffSignal or (NivDebug=3) then AfficheDebug('les détecteurs précédents au feu '+IntToSTR(Adrfeu)+' sont:'+intToSTR(Det_initial)+' '+intToSTR(DetPrec1)+' '+intToSTR(DetPrec2)+' '+intToSTR(DetPrec3)+' '+intToSTR(DetPrec4),clyellow);
PresTrain:=MemZone[DetPrec4,detPrec3] or
MemZone[DetPrec3,detPrec2] or MemZone[DetPrec2,detPrec1] or MemZone[DetPrec1,Det_initial] or presTrain ;
if AffSignal or (NivDebug=3) then
begin
if MemZone[DetPrec4,detPrec3] then AfficheDebug('0.présence train '+IntToSTR(DetPrec4)+' '+IntToSTR(detPrec3),clyellow); if MemZone[DetPrec4,detPrec3] then AfficheDebug('0.présence train '+IntToSTR(DetPrec4)+' '+IntToSTR(detPrec3),clyellow);
if MemZone[DetPrec3,detPrec2] then AfficheDebug('1.présence train '+IntToSTR(DetPrec3)+' '+IntToSTR(detPrec2),clyellow); if MemZone[DetPrec3,detPrec2] then AfficheDebug('1.présence train '+IntToSTR(DetPrec3)+' '+IntToSTR(detPrec2),clyellow);
if MemZone[DetPrec2,detPrec1] then AfficheDebug('2.présence train '+IntToSTR(DetPrec2)+' '+IntToSTR(detPrec1),clyellow); if MemZone[DetPrec2,detPrec1] then AfficheDebug('2.présence train '+IntToSTR(DetPrec2)+' '+IntToSTR(detPrec1),clyellow);
@@ -6676,10 +6690,6 @@ begin
if (AdrDetFeu=Adresse) and (feux[i].aspect<10) then if (AdrDetFeu=Adresse) and (feux[i].aspect<10) then
begin begin
AdrSuiv:=Feux[i].Adr_el_suiv1;TypeSuiv:=Feux[i].Btype_suiv1; AdrSuiv:=Feux[i].Adr_el_suiv1;TypeSuiv:=Feux[i].Btype_suiv1;
if AffSignal then AfficheDebug('Pour Feu '+intToSTR(AdrFeu)+' detecteursuivant('+intToSTR(AdrSuiv)+','+IntToSTR(typeSuiv)+','+intToSTR(AdrDetFeu)+',1)',clyellow);
AdrPrec:=detecteur_suivant(AdrSuiv,typeSuiv,AdrDetFeu,1) ; // détecteur précédent le feu
if AdrPrec=0 then
begin
if AffSignal then AfficheDebug('Pour Feu '+intToSTR(AdrFeu)+' detecteursuivant('+intToSTR(AdrSuiv)+','+IntToSTR(typeSuiv)+','+intToSTR(AdrDetFeu)+',1)',clyellow); if AffSignal then AfficheDebug('Pour Feu '+intToSTR(AdrFeu)+' detecteursuivant('+intToSTR(AdrSuiv)+','+IntToSTR(typeSuiv)+','+intToSTR(AdrDetFeu)+',1)',clyellow);
AdrPrec:=detecteur_suivant(AdrSuiv,typeSuiv,AdrDetFeu,1) ; // détecteur précédent le feu AdrPrec:=detecteur_suivant(AdrSuiv,typeSuiv,AdrDetFeu,1) ; // détecteur précédent le feu
if AdrPrec=0 then if AdrPrec=0 then
@@ -7204,29 +7214,27 @@ var
// renvoie si un process EXE tourne. Renvoie le Handle du process dans CDMHd et l'Id du process dans ProcessID // renvoie si un process EXE tourne. Renvoie le Handle du process dans CDMHd et l'Id du process dans ProcessID
// sExeName : Nom de l'EXE sans le chemin, et sans EXE } // sExeName : Nom de l'EXE sans le chemin, et sans EXE }
function ProcessRunning(sExeName: String) : Boolean; function ProcessRunning(sExeName: String) : Boolean;
var
hSnapShot : THandle;
ProcessEntry32 : TProcessEntry32; // pointeur sur la structure ProcessEntry32 ProcessEntry32 : TProcessEntry32; // pointeur sur la structure ProcessEntry32
hSnapShot : THandle; processID : DWord;
ProcessEntry32 : TProcessEntry32; // pointeur sur la structure ProcessEntry32 begin
Result:=false;
hSnapShot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); hSnapShot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
begin Win32Check(hSnapShot <> INVALID_HANDLE_VALUE);
Result:=false;
sExeName:=LowerCase (sExeName);
hSnapShot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); FillChar(ProcessEntry32,SizeOf(TProcessEntry32),#0);
Win32Check(hSnapShot <> INVALID_HANDLE_VALUE); ProcessEntry32.dwSize:=SizeOf(TProcessEntry32); // contient la structure de tous les process
sExeName:=LowerCase (sExeName); if (Process32First(hSnapShot,ProcessEntry32)) then
repeat
FillChar(ProcessEntry32,SizeOf(TProcessEntry32),#0); //Affiche(ProcessEntry32.szExeFile,ClYellow);
ProcessEntry32.dwSize:=SizeOf(TProcessEntry32); // contient la structure de tous les process if (Pos(sExeName,LowerCase(ProcessEntry32.szExeFile))=1) then
begin
if (Process32First(hSnapShot,ProcessEntry32)) then processID:=ProcessEntry32.th32ProcessID;
repeat CDMhd:=GetWindowFromID(processID);
//Affiche(ProcessEntry32.szExeFile,ClYellow);
if (Pos(sExeName,LowerCase(ProcessEntry32.szExeFile))=1) then
begin
processID:=ProcessEntry32.th32ProcessID;
CDMhd:=GetWindowFromID(processID);
Affiche('CDM rail processID='+IntToSTR(ProcessID)+' handle='+IntToSTR(CDMhd),clOrange); Affiche('CDM rail processID='+IntToSTR(ProcessID)+' handle='+IntToSTR(CDMhd),clOrange);
Result:=true; Result:=true;
Break; Break;
@@ -7460,10 +7468,9 @@ var
procedure TFormPrinc.FormCreate(Sender: TObject); procedure TFormPrinc.FormCreate(Sender: TObject);
var var
i,j : integer;
i,j : integer; i,j : integer;
s,s2,Url,LocalFile : string; s,s2,Url,LocalFile : string;
V_utile : real; trouve,AvecMaj : Boolean;
V_utile : real; V_utile : real;
CibleHandle : Thandle; CibleHandle : Thandle;
begin begin
@@ -7573,8 +7580,6 @@ begin
begin begin
cree_image(i); // et initialisation tableaux signaux cree_image(i); // et initialisation tableaux signaux
end; 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 Tempo_init:=10; // démarre les initialisation des signaux et des aiguillages dans 1 s
// initialisation de la chronologie des évènements détecteurs // initialisation de la chronologie des évènements détecteurs

Binary file not shown.

View File

@@ -1,6 +1,6 @@
/****************************************** /******************************************
/ fichier de configuration de client-GL.log / fichier de configuration de client-GL.log
/ JFP - 2020 / gily - f1iwq - 2018
/****************************************** /******************************************
/ ce programme permet de commander les signaux complexes avec ou sans / ce programme permet de commander les signaux complexes avec ou sans
/ CDM rail. Il a trois modes de fonctionnement: / CDM rail. Il a trois modes de fonctionnement:
@@ -28,7 +28,7 @@ IpV4_PC=127.0.0.1:9999
/ Adresse IP V4 de l'interface LI-USB Ethernet : port / Adresse IP V4 de l'interface LI-USB Ethernet : port
/ par défaut le port est 5550 / par défaut le port est 5550
/ ne pas connecter le port ou mettre 0 si on travaille avec l'interface USB / ne pas connecter le port ou mettre 0 si on travaille avec l'interface USB
IPV4_Interface=192.168.1.55:5550 IPV4_Interface=192.168.1.23:5550
/ /
/ port COM de l'adresse USB de l'interface LU-USB - LI100 - LI100F - LI101F - GENLI / port COM de l'adresse USB de l'interface LU-USB - LI100 - LI100F - LI101F - GENLI
/ attention de COM1 à 9 - Si le port de l'interface USB >9, il faut le changer / attention de COM1 à 9 - Si le port de l'interface USB >9, il faut le changer
@@ -38,10 +38,11 @@ IPV4_Interface=192.168.1.55:5550
/ Com:vitesse,parité,nombre de bits,bits de stop,protocole: 0=aucun 1=Xon-Xoff 2=RTS-CTS 3=RTS-Xon-Xoff 4=CTS / Com:vitesse,parité,nombre de bits,bits de stop,protocole: 0=aucun 1=Xon-Xoff 2=RTS-CTS 3=RTS-Xon-Xoff 4=CTS
/ voir notice page 29 / voir notice page 29
/ /
Protocole_serie=COM5:9600,N,8,1,0 Protocole_serie=COM3:57600,N,8,1,2
/COM8:9600,N,8,1,0
/ /
/ Temporisation en ms d'envoi entre deux octets de la trame / Temporisation en ms d'envoi entre deux octets de la trame
Inter_Car=30 Inter_Car=50
/ Temporisation maximale de contrôle après non réponse de l'interface, en tranches de 100ms / Temporisation maximale de contrôle après non réponse de l'interface, en tranches de 100ms
/ à adapter en fonction de l'interface. Ex 7=700ms d'attente maxi / à adapter en fonction de l'interface. Ex 7=700ms d'attente maxi
Tempo_maxi=7 Tempo_maxi=7
@@ -50,7 +51,7 @@ Tempo_maxi=7
/ Entete=0 - n'ajoute rien aux trames - pour une interface RS232 ou GENLI / Entete=0 - n'ajoute rien aux trames - pour une interface RS232 ou GENLI
/ Entete=1 - Ajoute FF FE au début de chaque trame envoyée à l'interface : pour une interface USB, entete=1 / Entete=1 - Ajoute FF FE au début de chaque trame envoyée à l'interface : pour une interface USB, entete=1
/ Entete=2 - Ajoute E4 au début de chaque trame et 0D 0D 0A en fin de chaque trame : pour compatibilité arduino / Entete=2 - Ajoute E4 au début de chaque trame et 0D 0D 0A en fin de chaque trame : pour compatibilité arduino
Entete=0 Entete=1
/ =============================================================================== / ===============================================================================
/ /
/ Avec (1) ou sans (0) initialisation des aiguillages au démarrage selon le tableau ci après / Avec (1) ou sans (0) initialisation des aiguillages au démarrage selon le tableau ci après
@@ -59,6 +60,9 @@ Init_Aig=0
/ Fenêtre d'exécution en plein écran (1) ou réduite (0) / Fenêtre d'exécution en plein écran (1) ou réduite (0)
Fenetre=0 Fenetre=0
/ /
/ Nombre de détecteurs considérés comme trop distants dans la recherche d'un détecteur "suivant"
Nb_Det_Dist=3
/
/ Vérification des versions au démarrage / Vérification des versions au démarrage
verif_version=1 verif_version=1
/ Notification de nouvelle version / Notification de nouvelle version
@@ -69,7 +73,7 @@ TCO=0
CDM=0 CDM=0
/ Nom du fichier LAY à ouvrir depuis CDM sans caractères spéciaux ( : / ) / Nom du fichier LAY à ouvrir depuis CDM sans caractères spéciaux ( : / )
/reseau_gily_signal_ajoute.lay /reseau_gily_signal_ajoute.lay
lay=DJEFF252RETROSIGNALISATION23.LAY LAY=RESEAU_GILY_SIGNAL_AJOUTE.LAY
/ /
/ Démarrage du serveur d'interface automatique / Démarrage du serveur d'interface automatique
/ 0=ne pas démarrer automatiquement le serveur d'interfaces / 0=ne pas démarrer automatiquement le serveur d'interfaces
@@ -81,7 +85,7 @@ lay=DJEFF252RETROSIGNALISATION23.LAY
/ 6=FIS88 FeedBack (S88/S88N) / 6=FIS88 FeedBack (S88/S88N)
/ 7=RS2PC (Rs FeedBack interface) / 7=RS2PC (Rs FeedBack interface)
/ 8=DCC++ / 8=DCC++
Serveur_interface=1 Serveur_interface=0
/ /
/ Interface de rétrosignalisation pour LENZ/DCC++ / Interface de rétrosignalisation pour LENZ/DCC++
/ 1=auto / 1=auto
@@ -90,8 +94,7 @@ Serveur_interface=1
/ 4=LI-100F / 4=LI-100F
/ 5=LI-100 / 5=LI-100
/ 6=GENLI / 6=GENLI
retro=6 retro=1
/
/ /
/ /
/ Valeurs des initialisations des aiguillages au démarrage ----------------------------------------------- / Valeurs des initialisations des aiguillages au démarrage -----------------------------------------------
@@ -100,64 +103,38 @@ retro=6
/ une position différente de 1 ou 2 sera à 1. Une temporisation de 0 sera à 5. / une position différente de 1 ou 2 sera à 1. Une temporisation de 0 sera à 5.
/ la liste doit être terminée par 0,0,0 / la liste doit être terminée par 0,0,0
[section_init] [section_init]
77,2,3,0 1,2,3,0
78,2,3,0 2,2,3,0
79,2,3,0 3,2,3,0
81,2,3,0 4,2,3,0
82,2,3,0 5,1,3,0
83,2,3,0 6,2,3,0
84,2,3,0 7,1,3,0
85,2,3,0 8,2,3,0
86,2,3,0 9,2,3,0
87,2,3,0 10,2,3,0
88,2,3,0 11,2,3,0
89,2,3,0 12,1,3,0
90,2,3,0 13,1,3,0
91,2,3,0 14,1,3,0
92,2,3,0 15,1,3,0
93,2,3,0 16,1,4,0
94,2,3,0 17,1,3,0
95,2,3,0 18,2,4,0
96,2,3,0 19,1,4,0
97,2,3,0 20,2,4,0
98,2,3,0 21,2,3,0
99,2,3,0 22,1,3,0
100,2,3,0 23,1,3,0
101,2,3,0 24,1,3,0
102,2,3,0 25,1,3,0
103,2,3,0 26,2,3,0
104,2,3,0 27,2,3,0
105,2,3,0 28,2,3,0
106,2,3,0 29,2,3,0
107,2,3,0 30,2,3,0
108,2,3,0 31,1,3,0
109,2,3,0 32,1,3,0
110,2,3,0
111,2,3,0
112,2,3,0
113,2,3,0
114,2,3,0
115,2,3,0
116,2,3,0
117,2,3,0
118,2,3,0
119,2,3,0
120,2,3,0
121,2,3,0
122,2,3,0
123,2,3,0
124,2,3,0
125,2,3,0
126,2,3,0
127,2,3,0
128,2,3,0
128,2,3,0
130,2,3,0
131,2,3,0
132,2,3,0
133,2,3,0
134,2,3,0
135,2,3,0
136,2,3,0
0,0,0,0 0,0,0,0
/ /

View File

@@ -1,158 +1,138 @@
/****************************************** /******************************************
/ fichier de configuration de signaux_complexes / fichier de configuration de signaux_complexes
/ JFP - 2020 - nouvelles tjd / gily - f1iwq - 2019
/****************************************** /******************************************
/ Sans Log=0 / Avec Log=1 : génère un fichier log / Sans Log=0 / Avec Log=1 : génère un fichier log
Log=0 Log=0
/ Affichage du débug du calcul des routes, et enregistrement dans le log si la variable précédente est à 1 / Affichage du débug du calcul des routes, et enregistrement dans le log si la variable précédente est à 1
TraceDet=0 TraceDet=0
/ Envoie un 0 après le pilotage des décodeurs LEB / Envoie un 0 après le pilotage des décodeurs
RazSignaux=0 / Mettre 1 si utilisation de décodeurs LEB
RazSignaux=1
/ /
/ modélisation des aiguillages : détermine les éléments connectés aux 3 branches des aiguilles (Pointe, Droit, Dévié (S) / modélisation des aiguillages : détermine les éléments connectés aux 3 branches des aiguilles (Pointe, Droit, Dévié (S)
/ adresse d'aiguillage [TJS,TJD,TRI],P=élément vers pointe D=élément vers Droit, S=élément vers dévié, INV si aiguillage inversé / adresse d'aiguillage,P=élément vers pointe D=élément vers Droit, S=élément vers dévié.
/ [60 ou 30 dans le cas d'un aiguillage en position déviée qui doit être fanchie à 30 ou 60]
/ Elément = détecteur (valeur uniquement numérique) ou aiguillage (adresse+branche de connexion (P S ou D) / Elément = détecteur (valeur uniquement numérique) ou aiguillage (adresse+branche de connexion (P S ou D)
/ Exemple : 1,P518,D523,S3P signifie : définition de l'aiguillage @1 : sur pointe relié au détecteur 518 / Exemple : 1,P518,D523,S3P signifie : définition de l'aiguillage @1 : sur pointe relié au détecteur 518
/ sur Droit relié au détecteur 518 / sur Droit relié au détecteur 518
/ sur Dévié, relié à l'aiguillage 3 en pointe / sur Dévié, relié à l'aiguillage 3 en pointe
/ Pour une TJD : 26TJD,D(connectD,DirectionD),S(connectS,DirectionS) / Pour une TJD : 26TJD,D530,S529,P28
/ P désigne l'autre adresse de la TJD
/ Aiguillage triple
/ /
/ S'il n'y a pas de détecteur connecté à une branche d'aiguillage, mettre 0. / S'il n'y a pas de détecteur connecté à une branche d'aiguillage, mettre 0.
/77TJD,P78,D599,S600 1,P518,D523,S3P,30
/78TJD,P77,D598,S79D 2,P12S,D519,S5S
77TJD,D(599,78D),S(600,78S),I1 3,P1S,D4P,S5D
78TJD,D(598,S77D),S(79D,77S),I1 4,P3D,D6S,S514
79,P601,D78S,S597 5,P515,D3S,S2S
81,P515,D513,S82S 6,P516,D0,S4D
82,P83P,D516,S81S 7,P527,D519,S520
83,P82P,D514,S517 8,P527,D521,S522
85,P524,D89D,S86D 9,P526,D513,S515,60
86,P87P,D85S,S525 10,P19P,D29P,S528,30
87,P86P,D88P,S89S 11,P18P,D30D,S525
88,P87D,D548,S94D 12,P517,D20S,S2P
89TJD,D(85D,90D),S(87S,90S),I1 17,P525,D535,S528
90TJD,D(547,89D),S(91S,89S),I1 18,P11P,D23P,S517
/89TJD,P90,D85D,S87S 19,P10P,D22P,S531
/90TJD,P89,D547,S91S 20,P520,D21P,S12D
/91TJD,P92,D540,S90S 21,P20D,D28D,S28D
/92TJD,P91,D546,S96S 22,P19D,D537,S538
91TJD,D(540,92D),S(90S,92S),I1 23,P18D,D538,S534
92TJD,D(546,91D),S(96S,91S),I1 24,P538,D32S,S533
/93TJD,P94,D95S,S549 25,P31S,D529,S27P
/94TJD,P93,D88S,S542 26TJD,D(530,28D),S(529,28S),I0
93TJD,D(88S,94D),S(542,94S) 27,P25S,D530,S537
94TJD,D(549,93D),S(95S,93S) 28TJD,D(21D,26D),S(21S,26S),I0
95,P97S,D543,S93D 29,P10D,D513,S30S,60
96,P545,D538,S92S 30,P524,D11D,S29D
97,P102S,D544,S95P 31,P534,D0,S25P
98,P550,D555,S101S 32,P22S,D0,S24D
99,P101D,D551,S100D
100,P552,D99S,S553
101,P556,D99P,S98S
102,P103D,D557,S97P
/103TJD,P104,D102P,S563
/104TJD,P103,D564,S109D
103TJD,D(102P,104D),S(563,104S),I1
104TJD,D(564,103D),S(109D,103S),I1
105,P558,D106P,S107D
106,P105D,D566,S568
/107TJD,P108,D105S,S559
/108TJD,P107,D110S,S581
107TJD,D(105S,108D),S(559,108S),I1
108TJD,D(110S,107D),S(581,107S),I1
109,P112S,D104S,S562
110,P111P,S108D,D560
111,P110P,D589,S113S
112,P113D,D561,S109P
113,P590,D112P,S111S
114,P603,D115P,S604
115,P114D,D116S,S606
116,P607,D605,S115D
117,P602,D591,S118P
118,P117S,D119P,S592
119,P118D,D120P,S593
120,P119D,D595,S594
121,P122D,D588,S587
122,P123D,D121P,S586
123,P124S,D122P,S585
124,P583,D584,S123P
125,P579,D577,S578
126,P580,D569,S127P
127,P126S,D128P,S570
128,P127D,D129P,S571
129,P128D,D130P,S572
130,P129D,D574,S573
131,P132D,D529,S530
132,P133D,D131P,S531
133,P134D,D132P,S532
134,P135D,D133P,S533
135,P523,D134p,S534
136,P522,D535,S536
0 0
/ //
/ modélisation du réseau par branche / modélisation du réseau par branche
/ 1 ligne par branche - le sens de parcours de la branche est arbitraire. / 1 ligne par branche - le sens de parcours de la branche est arbitraire.
/ Chaque ligne (branche) doit commmencer et finir par un aiguilage ou un buttoir (0) / Chaque ligne (branche) doit commmencer et finir par un aiguillage
/ Une ligne qui finit par un 0 signifie un heurtoir
/ @ détecteur A=@aiguillage / @ détecteur A=@aiguillage
/ Terminer par 0 / Terminer par 0
/ Exemple : 519 est un détecteur - A2 est l'aiguillage 2 / Exemple : 519 est un détecteur - A2 est l'aiguillage 2
/ /
A83,514,518,520,524,A85,A89,A90,547,560,A110,A111,589,597,A79 A2,A12,517,A18,A11,A30,524,521,A8,527,A7,519,A2
A77,599,590,A113,A112,561,548,A88,A87,A86,525,521,519,513,A81 A7,520,A20,A12
A106,A105,558,545,A96,538,537,0 A1,A3,A4,514,522,A8
A108,581,582,0 A1,523,526,A9,513,A29,A10,A19,531,518,A1
A107,559,546,A92,A91,537,540,0 A9,515,A5
A112,A109,562,549,A93,A94,542,541,0 A11,525,A17,528,A10
A104,564,565,0 A17,535,533,A24,538,A23
A103,A102,A97,A95,543,528,0 A7,520,A20,A21,A28,A26,530,A27,A25,A31,534,A23,A18
A97,544,0 A26,529,A25
A102,557,555,A98,550,0 A22,537,A27
A103,563,556,A101,A99,551,0 A22,A32,A24
A99,A100,552,0 A6,516,0
A100,553,554,0 A31,0
A106,566,567,0
A106,568,603,A114,604,0
A114,A115,606,608,0
A115,A116,607,0
A116,605,0
A135,534,574,A130
A134,533,573,A130
A133,532,572,A129
A132,531,571,A128
A131,530,570,A127
A82,516,527,576,580,A126,569,529,A131,A132,A133,A134,A135,523,515,A81
A136,536,578,A125
A77,600,579,A125,577,535,A136,522,517,A83
A79,601,596,583,A124,584,595,A120,A119,A118,A117,602,598,A78
A117,591,588,A121
A118,592,587,A121
A119,593,586,A122
A120,594,585,A123
0 0
/ / liste des adresses des signaux et leur forme, pour affichage de l'image correspondante ,
/ liste signaux / avec ou sans bouton de commande pour le feu blanc, type de décodeur [, type de cible (pour les décodeurs Unisemaf uniquement)]
/ la liste doit être terminée par une adresse à 0 / la liste doit être terminée par une adresse à 0
/ forme : 2=2 feux(carré violet/blanc) / 3=3 feux / 4=4 feux (carré) / 5=5 feux (carré + blanc) / forme : 2=2 feux(carré violet/blanc) / 3=3 feux / 4=4 feux / 5=5 feux (carré + blanc ou violet)
/ 7=7 feux (carré+blanc + ralentissement / 9=9 feux (blanc ou violet + rappel ralentissement) / 7=7 feux (blanc ou violet + ralentissement / 9=9 feux (blanc ou violet + rappel ralentissement)
/ type de décodeur : 0=virtuel 1=digital Bahn 2=CDF 3=LDT 4=LEB 5=NMRA 6=Unisemaf Paco / Dx : signal directionnel à x feux
/ l'énumération destecteurs ne nécessite pas de parenthèses si il est seul, mais il faut des parenthèses si / type de décodeur : 1=digital Bahn 2=CDF 3=LDT 4=LEB 5=NMRA 6=Unisemaf
/ le signal concerne plusieurs voies (donc détecteurs)
/ Notation de chaque ligne: / Notation de chaque ligne:
/ adresse de base du signal, forme, réserve, type de décodeur [, (détecteur,..detecteur , élément suivant ..) , / adresse de base du signal, forme, avec ou sans bouton de commande du feu blanc, type de décodeur [, détecteur (det2, det3, ...) , élément suivant ,
/ avec ou sans demande de verrouillage du feu au carré (0 ou 1)] / avec ou sans demande de verrouillage du feu au carré]
197,3,0,6,(598,A78),1,3 /
201,4,0,6,(597,A79),1,4 / signaux de test
205,9,0,6,(590,A113),1,93 /610,4,0,0,(521,a8),1
209,9,0,6,(560,A110),1,92 /615,5,0,0,(521,a8),1
213,9,0,6,(548,A88),1,92 /616,5,0,2,(521,a8),1
217,9,0,6,(524,A85),1,93 /617,5,0,3,(521,a8),1
221,7,0,6,(518,520),1,73 /618,5,0,5,(521,a8),1
225,3,0,6,(521,519),1,3 /619,5,0,6,(521,a8),1,52
229,9,0,6,(516,A82),1,92 176,7,0,1,(520,A20),1
233,4,0,6,(513,A81),1,92 190,7,0,1,(523,526),0
204,9,0,1,(527,A7),1
218,7,0,1,(525,A17),1
232,2,1,1,(516,A6),0
260,9,1,1,(518,A1),1
274,3,0,1,(524,521),0
288,7,0,1,(522,A8),1
302,9,0,1,(526,A9),1
316,7,1,1,(515,A5),1
330,7,0,1,(519,A2),1
344,9,0,1,(528,A10),1
358,9,0,1,(517,A18),1
372,D3,1,(A10D)(A19S)(A19D,A22D)(A19D,A22S)
382,D3,1,(A29S,A10S)(A19S)(A19D,A22D)(A19D,A22S)
392,3,0,1,(535,533),1
420,7,0,1,(529,A25,530,A27,537,A27),1
448,7,0,1,(533,A24),1
462,9,0,1,(513,A29),1
476,9,0,1,(538,A23),1
497,9,0,4,(531,A19),1
600,7,0,0,(521,A8),1
1000,9,0,0,(530,A26),1
1001,9,0,0,(529,A26),1
0 0
/ /
/ Section actionneurs. Ne fonctionne qu'en mode connecté à CDM en run
/ Fonctions Fx à envoyer aux locomotives sur passage d'un actionneur / Fonctions Fx à envoyer aux locomotives sur passage d'un actionneur
/ Uniquement en mode connecté à CDM / actionneur,état,Nom du train,fonction,temporisation en ms avant remise à 0
/ actionneur,état,Nom de la loco,fonction,temporisation en ms avant remise à 0 /
/ Passages à niveau (PN)
/ (act_ferme_voie1,act_ouvre_voie1),(act_ferme_voie2,act_ouvre_voie2),...,PN(adresse_ferme,adresse_ouvre)
/
/ Klaxon (F2)
/815,1,CC406526,F2,400
/
/ passage à niveau à 2 voies
/(815,830),(820,840),PN(121+,121-)
/
/ passage à niveau à 1 voie
/(815,809),PN(131+,131-)
/
813,1,CC406526,A613,2,Z
0 0

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.2'; // sert à la comparaison de la version publiée Const Version='2.21'; // sert à la comparaison de la version publiée
implementation implementation

View File

@@ -1,5 +1,5 @@
Version 1.0 : première version Version 1.0 : première version
Version 1.01 : gestion des trajectoires vers les buttoirs Version 1.01 : gestion des routes vers les buttoirs
Version 1.02 : vérification automatique des versions Version 1.02 : vérification automatique des versions
Version 1.1 : gestion des tableaux indicateurs de direction Version 1.1 : gestion des tableaux indicateurs de direction
gestion du décodeur de signaux Unisemaf Paco (expérimental) gestion du décodeur de signaux Unisemaf Paco (expérimental)
@@ -40,6 +40,9 @@ version 2.11 : Suppression du message d'erreur "Element 9999 non trouv
Ajout de l'option fenêtre étendue dans le panneau de configuration Ajout de l'option fenêtre étendue dans le panneau de configuration
Version 2.2 : Correction d'un bug sur le verrouillage des signaux au carré sur les trains en approche. Version 2.2 : Correction d'un bug sur le verrouillage des signaux au carré sur les trains en approche.
Mise à jour du fichier de config.cfg si modification des signaux dans la configuration. Mise à jour du fichier de config.cfg si modification des signaux dans la configuration.
version 2.21 : Paramétrage du nombre de détecteurs considérés comme trop distants
Correction d'un bug de la 2.2