V1.6
This commit is contained in:
134
UnitPrinc.pas
134
UnitPrinc.pas
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user