This commit is contained in:
f1iwq2
2020-04-23 18:25:00 +02:00
parent ce096cfcb7
commit 505a2d400e
14 changed files with 2511 additions and 855 deletions

View File

@@ -184,11 +184,11 @@ type TBranche = record
InversionCDM : integer ; // inversion pour les aiguillages BIS en lecture (pour parer bug CDM)
vitesse : integer; // vitesse de franchissement de l"aiguillage en position déviée (60 ou 90)
ADroit : integer ; // (identifiant extérieur à la TJD) connecté sur la position droite en talon
ADroit : integer ; // (TJD:identifiant extérieur) connecté sur la position droite en talon
ADroitB : char ; // id de branche pour TJD
ADroitBis : integer ; // 0=pas connecté à aiguillage dont l'adresse est bis =1 connecté à un aig bis
ADevie : integer ; // (identifiant extérieur) adresse de l'élément connecté en position déviée
ADevie : integer ; // (TJD:identifiant extérieur) adresse de l'élément connecté en position déviée
ADevieB : char; // caractère (D ou S)si aiguillage de l'élément connecté en position déviée
AdevieBis : integer ; // 0=pas connecté à aiguillage dont l'adresse est bis =1 connecté à un aig bis
@@ -410,13 +410,6 @@ var Temp,code,rayon,xViolet,YViolet,xBlanc,yBlanc,
LgImage,HtImage : integer;
ech : real;
begin
with ACanvas do
begin
pen.mode:=PmCopy;
Brush.Color:=fond;
pen.color:=clyellow;
end;
code:=code_to_aspect(Etatsignal); // et aspect
rayon:=round(6*frX);
@@ -463,12 +456,6 @@ var Temp,code,rayon,xSem,Ysem,xJaune,Yjaune,Xvert,Yvert,
s : string;
ech : real;
begin
with ACanvas do
begin
pen.mode:=PmCopy;
Brush.Color:=fond;
pen.color:=clyellow;
end;
code:=code_to_aspect(Etatsignal); // et aspect
rayon:=round(6*frX);
@@ -518,12 +505,6 @@ var Temp,code,rayon,xSem,Ysem,xJaune,Yjaune,Xcarre,Ycarre,Xvert,Yvert,
LgImage,HtImage : integer;
ech : real;
begin
with ACanvas do
begin
pen.mode:=PmCopy;
Brush.Color:=fond;
pen.color:=clyellow;
end;
code:=code_to_aspect(Etatsignal); // et aspect
rayon:=round(6*frX);
@@ -539,10 +520,10 @@ begin
begin
//rotation 90° vers la gauche des feux
ech:=frY;frY:=frX;FrX:=ech;
Temp:=HtImage-yjaune;YJaune:=XJaune;Xjaune:=Temp;
Temp:=HtImage-ycarre;Ycarre:=Xcarre;Xcarre:=Temp;
Temp:=HtImage-ySem;YSem:=XSem;XSem:=Temp;
Temp:=HtImage-yvert;Yvert:=Xvert;Xvert:=Temp;
Temp:=HtImage-yjaune; YJaune:=XJaune;Xjaune:=Temp;
Temp:=HtImage-ycarre; Ycarre:=Xcarre;Xcarre:=Temp;
Temp:=HtImage-ySem; YSem:=XSem;XSem:=Temp;
Temp:=HtImage-yvert; Yvert:=Xvert;Xvert:=Temp;
end;
if (orientation=3) then
@@ -651,13 +632,6 @@ var code, XBlanc,Yblanc,xJaune,yJaune,Xsem,YSem,Xvert,YVert,Xcarre,Ycarre,Xral1,
Temp,rayon,LgImage,HtImage : integer;
ech : real;
begin
with ACanvas do
begin
pen.mode:=PmCopy;
Brush.Color:=fond;
pen.color:=clyellow;
end;
code:=code_to_aspect(Etatsignal); // et combine
rayon:=round(6*frX);
XBlanc:=13; YBlanc:=23;
@@ -742,12 +716,6 @@ var code,rayon,
LgImage,HtImage,xt,yt : integer;
ech : real;
begin
with ACanvas do
begin
pen.mode:=PmCopy;
Brush.Color:=fond;
pen.color:=clyellow;
end;
rayon:=round(6*frX);
code:=code_to_aspect(Etatsignal); // et aspect
// mise à l'échelle des coordonnées des feux en fonction du facteur de réduction frX et frY et x et y (offsets)
@@ -3228,6 +3196,7 @@ begin
// pilotage d'un signal
procedure envoi_signal(Adr : integer);
var i,adresse,a,aspect,x,y,TailleX,TailleY,Orientation : integer;
ImageFeu : TImage;
frX,frY : real;
begin
i:=index_feu(Adr);
@@ -3237,15 +3206,16 @@ begin
case feux[i].decodeur of
0 : envoi_virtuel(Adr);
1 : envoi_signalBahn(Adr);
2 : envoi_CDF(Adr);
3 : envoi_LDT(Adr);
2 : envoi_CDF(Adr);
5 : envoi_NMRA(Adr);
3 : envoi_LDT(Adr);
4 : envoi_LEB(Adr);
5 : envoi_NMRA(Adr);
6 : envoi_UniSemaf(Adr);
end;
// dessine le feu dans la fenêtre de droite
// allume les signaux du feu dans la fenêtre de droite
Dessine_feu_mx(Feux[i].Img.Canvas,0,0,1,1,adr,1);
// allume les signaux du feu dans le TCO
if AvecTCO then
begin
@@ -3267,21 +3237,21 @@ begin
end;
x:=(FeuTCO[i].x-1)*LargeurCell; // coordonnées XY et feu
y:=(FeuTCO[i].y-1)*HauteurCell;
TailleY:=ImageFeu.picture.BitMap.Height; // taille du feu d'origine (verticale)
TailleX:=ImageFeu.picture.BitMap.Width;
Orientation:=FeuTCO[i].FeuOriente;
// réduction variable en fonction de la taille des cellules
calcul_reduction(frx,fry,round(TailleX*LargeurCell/ZoomMax),round(tailleY*HauteurCell/ZoomMax),TailleX,TailleY);
// décalage en X pour mettre la tete du feu alignée sur le bord droit de la cellule pour les feux tournés à 90G
if orientation=2 then
begin
if aspect=9 then x:=x+round(10*frX);
if aspect=7 then x:=x+round(10*frX);
if aspect=5 then begin x:=x+round(10*frX);y:=y+HauteurCell-round(tailleX*frY); end;
if aspect=4 then begin x:=x+round(10*frX);y:=y+HauteurCell-round(tailleX*frY); end;
if aspect=3 then begin x:=x+round(10*frX);y:=y+HauteurCell-round(tailleX*frY); end;
if aspect=2 then begin x:=x+round(10*frX);y:=y+HauteurCell-round(tailleX*frY); end;
TailleY:=ImageFeu.picture.BitMap.Height; // taille du feu d'origine (verticale)
TailleX:=ImageFeu.picture.BitMap.Width;
Orientation:=FeuTCO[i].FeuOriente;
// réduction variable en fonction de la taille des cellules
calcul_reduction(frx,fry,round(TailleX*LargeurCell/ZoomMax),round(tailleY*HauteurCell/ZoomMax),TailleX,TailleY);
// décalage en X pour mettre la tete du feu alignée sur le bord droit de la cellule pour les feux tournés à 90G
if orientation=2 then
begin
if aspect=9 then x:=x+round(10*frX);
if aspect=7 then x:=x+round(10*frX);
if aspect=5 then begin x:=x+round(10*frX);y:=y+HauteurCell-round(tailleX*frY); end;
if aspect=4 then begin x:=x+round(10*frX);y:=y+HauteurCell-round(tailleX*frY); end;
if aspect=3 then begin x:=x+round(10*frX);y:=y+HauteurCell-round(tailleX*frY); end;
if aspect=2 then begin x:=x+round(10*frX);y:=y+HauteurCell-round(tailleX*frY); end;
end;
Dessine_feu_mx(PCanvasTCO,x,y,frx,fry,adresse,orientation);
end;
@@ -4743,11 +4713,13 @@ begin
A:=aiguillage[Adr].Adevie2B;
Adr:=aiguillage[Adr].Adevie2;
if A='Z' then TypeEl:=1 else TypeEL:=2; //TypeEL=(1=détécteur 2=aig 3=aig Bis)
if Abis=1 then TypeEl:=3;
trouve_element(Adr,TypeEl); // branche_trouve IndexBranche_trouve
typeGen:=BrancheN[branche_trouve,IndexBranche_trouve].BType;
suivant_alg3:=adr;exit;
end;
end;
begin
if aiguillage[Adr].position=9 then begin suivant_alg3:=9999;exit;end; // pour échappement
s:='Aiguillage triple '+IntToSTR(Adr)+' : configuration des aiguilles interdite';
if CDM_connecte then s:=s+': '+IntToSTR(aiguillage[Adr].position);
AfficheDebug(s,clYellow);
@@ -5078,6 +5050,11 @@ begin
begin
carre_signal:=FALSE; // pour l'instant verrouillé
exit;
end;
//Affiche(IntToSTR(actuel),clyellow);
repeat
inc(j);
AdrSuiv:=suivant_alg3(prec,typeElPrec,actuel,typeELActuel,2);
if AdrSuiv=9999 then // élément non trouvé
begin
@@ -5894,6 +5871,11 @@ begin
if TraceListe then
begin
AfficheDebug('Nouveau Tampon train '+intToStr(i)+'--------',clyellow);
AfficheDebug(intToSTR(event_det_train[i].det[1]),clyellow);
AfficheDebug(intToSTR(event_det_train[i].det[2]),clyellow);
end;
rafraichit;
rafraichit;
rafraichit;
if avecTCO then
begin
@@ -6790,12 +6772,13 @@ begin
PChar('C:\Program Files (x86)\CDM-Rail\') // répertoire
,SW_SHOWNORMAL)<=32 then
begin
ShowMessage(SysErrorMessage(GetLastError));
ShowMessage(SysErrorMessage(GetLastError));
Lance_CDM:=false;exit;
end
else
begin
begin
Sleep(2000);
Application.ProcessMessages;
// démarre le serveur IP : Alt C , return 2 fois
SendKey(CDMHd,ord('C'),false,true,false);
@@ -6803,14 +6786,14 @@ begin
SendKey(CDMHd,VK_RETURN,false,false,false);
Sleep(200);
Application.ProcessMessages;
// Ouvre le fichier réseau : Alt F , Return, O, return
SendKey(CDMHd,ord('F'),false,true,false);
SendKey(CDMHd,VK_RETURN,false,false,false);
SendKey(CDMHd,ord('O'),false,false,false);
SendKey(CDMHd,VK_RETURN,false,false,false);
Sleep(500); // attendre ouverture de la fenêtre
Application.ProcessMessages;
Application.ProcessMessages;
// ouvre le fichier réseau
@@ -6891,7 +6874,7 @@ begin
// créée la fenetre debug
FormDebug:=TFormDebug.Create(Self);
FormDebug.Caption:=AF+' debug';
FormDebug.Caption:=AF+' debug';
N_Trains:=0;
NivDebug:=0;
TempoAct:=0;
@@ -6904,7 +6887,6 @@ begin
FormVersion:=TformVersion.Create(Self);
ferme:=false;
CDM_connecte:=false;
CDM_connecte:=false;
pasreponse:=0;
Nbre_recu_cdm:=0;
@@ -6912,7 +6894,7 @@ begin
N_routes:=0;
N_trains:=0;
// Train[1].index:=0;
// lecture fichier de configuration client_GL.cfg et config.cfg
lit_config;
@@ -6984,8 +6966,8 @@ begin
I_Simule:=0;
tick:=0;
N_Event_tick:=0 ; // dernier index
NombreImages:=0;
N_Event_tick:=0 ; // dernier index
NombreImages:=0;
// TCO
if avectco then
@@ -7996,7 +7978,7 @@ end;
procedure TFormPrinc.Quitter1Click(Sender: TObject);
begin
begin
close;
end;
@@ -8077,18 +8059,11 @@ begin
readln(fte,s);
Affiche(s,clLime);
Interprete_trameCDM(s);
end;
closeFile(fte);
end;
closeFile(fte);
end;
procedure TFormPrinc.ButtonAffTCOClick(Sender: TObject);
var hd : THandle;
begin
//SetactiveWindow(formTCO.handle);
end;
procedure TFormPrinc.ButtonAffTCOClick(Sender: TObject);
var hd : THandle;
@@ -8097,10 +8072,13 @@ begin
formTCO.BringToFront;
end;
procedure TFormPrinc.ButtonLanceCDMClick(Sender: TObject);
begin
if Lance_CDM then connecte_CDM;
end;
begin