From 2791b86c8f2d5f615b52b19ea2de47ba5f048c00 Mon Sep 17 00:00:00 2001 From: f1iwq2 Date: Sat, 21 Mar 2020 14:23:29 +0100 Subject: [PATCH] V1.44 --- Signaux_complexes_GL.dpr | 4 +- UnitConfig.dcu | Bin 11829 -> 11959 bytes UnitConfig.dfm | 66 +++++--- UnitConfig.pas | 4 + UnitConfigTCO.dcu | Bin 0 -> 4069 bytes UnitConfigTCO.dfm | 95 +++++++++++ UnitConfigTCO.pas | 39 +++++ UnitDebug.dcu | Bin 11972 -> 12973 bytes UnitDebug.dfm | 48 +++++- UnitDebug.pas | 47 ++++-- UnitPrinc.dcu | Bin 169239 -> 173944 bytes UnitPrinc.dfm | 29 +++- UnitPrinc.pas | 343 +++++++++++++++++++++++++++------------ UnitSimule.dcu | Bin 7383 -> 7380 bytes UnitSimule.dfm | 1 + UnitSimule.pas | 23 ++- UnitTCO.dcu | Bin 52616 -> 53002 bytes UnitTCO.dfm | 13 +- UnitTCO.pas | 11 ++ verif_version.dcu | Bin 9097 -> 9131 bytes verif_version.pas | 4 +- 21 files changed, 570 insertions(+), 157 deletions(-) create mode 100644 UnitConfigTCO.dcu create mode 100644 UnitConfigTCO.dfm create mode 100644 UnitConfigTCO.pas diff --git a/Signaux_complexes_GL.dpr b/Signaux_complexes_GL.dpr index fa31dff..c0dc88b 100644 --- a/Signaux_complexes_GL.dpr +++ b/Signaux_complexes_GL.dpr @@ -8,7 +8,8 @@ uses UnitPilote in 'UnitPilote.pas' {FormPilote}, UnitSimule in 'UnitSimule.pas' {FormSimulation}, UnitTCO in 'UnitTCO.pas' {FormTCO}, - UnitConfig in 'UnitConfig.pas' {FormConfig}; + UnitConfig in 'UnitConfig.pas' {FormConfig}, + UnitConfigTCO in 'UnitConfigTCO.pas' {FormConfigTCO}; {$R *.res} @@ -20,5 +21,6 @@ begin Application.CreateForm(TFormSimulation, FormSimulation); Application.CreateForm(TFormTCO, FormTCO); Application.CreateForm(TFormConfig, FormConfig); + Application.CreateForm(TFormConfigTCO, FormConfigTCO); Application.Run; end. diff --git a/UnitConfig.dcu b/UnitConfig.dcu index 381caabbac13282e0cc4730c5ef672b1384931d8..530cb9e46df53ffc458420fe2e6c57631a77b2e8 100644 GIT binary patch delta 981 zcmYj~QAiVU9LN9nzki!<-sar2DO#)0uvD6urlhniX`(iD6D+0XyyaxKo9B%RiZLQF zNW$%<=p`R}sg6T!4?+`*eDEQtR7j$SgnIKKA}Hv7cWvz+KA+$B_xt_tw>YvqYW$3l zdAR|hr;*savBG{iDSD7#@oCm#uht~HDYxv``uwQm*?=ks(+%FYauBkm_HGS3{Q z;xE2G9;!gcjNUF@;ItRB>m#*drNi*Qv%9%^R;&yb`bXbc`eP4WY?iy|Kn z?thqiUwn&fLgBSEku50hTLujorpr?x;UbigzgcFe#yVY(e~b;c+Q<}Br&nv|2^&e| zg40IkbD_~j7E%$b2m8BHudH^Hl}75E9tbV;U5A5qOCN}odiPFz(( z_QrUAa!%wY`El8GGxq6aTg?VdN-4id{#tvKs@NeYsjEb&tlRFw=#v3hO$@1LtErmf z3vmfIVRS*l%@}n{_!LGx5^lq&&qpI28SwPe5Z2FqB5iMwaRti)Rv1TzN78r?D~`@E5QQ}gBrg4c zm6>0_**_}x(Mr8k2z+S)z9|L1EeEo=O4A`w2v=*W)l{!3?$mrzQ#&Y)U7!_wUXvS? z!M&RLH4TFbMuGjbALOH1O(D=Q&4EVgDNQj=w?TJ)>k?p&+$#as%mEW*9<-h6sQ>vF DNQd|W delta 876 zcmY+7T}V@57{{OUzOPf~jylu)z-ks*8QKRb6$ma9T^rP-z?_iVTGeyx2uxU(g4ISwc5nbkRl7dCtLQ=i>K!{{QEF&->Ur+mZ1Z zAgihZ;Ko#VJfo=K+EmyLQfAvgP_7dP0>R#jom7NmgBFKn#%Q@(y7BAphrg`8{|KDu!vJuHc`=okBw>(u5*X!8kDaX7FYD%G1= zc8-1j`fx>A&c48Y;NY=VvNas8TU*WFEDi3oII+N}x@Nu1DfhOt?2Xks;s1|mv6ch) zK#V@00(4NdBsYgs4(6uOLfEBN=iT8{Q~ud3GHg;uN)wc&a4}wODci#pB^XSYiUGDB zFR&9>HY4+xS$XhOxwZdpw2gv^H8t94oKzBM9LDHu^0GLoCeRea*z6qC;t>MQSpoz) zpCG&DbS~&z)VYN0PUw84^R>?RIzQ_CqVp&PMgo&$okX>vZ-mEu<{5|TpZSGnMt&nN z{n431wRt8T`N)cVo`;+-M7EJ_hDuQFWVfMxhRO{cGE`-#1~p0S6ru#CNj=7C;y}fT z%g{+f?I`df?bL^=r-Gp%%0WXY7acSdF?11ieiZ3tS5dT&jiCqGIBJRAme)zG^0IvW EFM$%^SO5S3 diff --git a/UnitConfig.dfm b/UnitConfig.dfm index fa0046f..70647c7 100644 --- a/UnitConfig.dfm +++ b/UnitConfig.dfm @@ -2,7 +2,7 @@ object FormConfig: TFormConfig Left = 316 Top = 238 Width = 598 - Height = 332 + Height = 340 Caption = 'Configuration g'#233'n'#233'rale' Color = clBtnFace Font.Charset = DEFAULT_CHARSET @@ -15,8 +15,8 @@ object FormConfig: TFormConfig PixelsPerInch = 96 TextHeight = 13 object Label6: TLabel - Left = 104 - Top = 232 + Left = 128 + Top = 248 Width = 332 Height = 13 Caption = @@ -81,19 +81,19 @@ object FormConfig: TFormConfig Left = 280 Top = 8 Width = 290 - Height = 137 + Height = 153 Caption = 'Acc'#232's USB - S'#233'rie '#224' l'#39'interface vers la centrale LENZ' TabOrder = 1 object Label3: TLabel Left = 16 - Top = 32 + Top = 56 Width = 128 Height = 13 Caption = 'Protocole s'#233'rie USB (COM)' end object Label4: TLabel Left = 16 - Top = 56 + Top = 80 Width = 126 Height = 26 Caption = 'Temporisation d'#39'envoi des octets de la trame (ms)' @@ -101,15 +101,29 @@ object FormConfig: TFormConfig end object Label5: TLabel Left = 16 - Top = 88 + Top = 112 Width = 152 Height = 26 Caption = 'Temporisation d'#39'attente de la r'#233'ponse de l'#39'interface (x 100 ms)' WordWrap = True end + object Label9: TLabel + Left = 8 + Top = 16 + Width = 249 + Height = 13 + Caption = 'Ces param'#232'tres sont utilis'#233's en fonctionnement sans ' + end + object Label10: TLabel + Left = 8 + Top = 32 + Width = 40 + Height = 13 + Caption = 'CDM rail' + end object EditcomUSB: TEdit Left = 160 - Top = 32 + Top = 56 Width = 121 Height = 21 TabStop = False @@ -118,7 +132,7 @@ object FormConfig: TFormConfig end object EditTempoOctetUSB: TEdit Left = 232 - Top = 64 + Top = 88 Width = 49 Height = 21 TabStop = False @@ -127,7 +141,7 @@ object FormConfig: TFormConfig end object EditTempoReponse: TEdit Left = 232 - Top = 96 + Top = 120 Width = 49 Height = 21 TabStop = False @@ -137,7 +151,7 @@ object FormConfig: TFormConfig end object Button1: TButton Left = 112 - Top = 264 + Top = 272 Width = 105 Height = 25 Caption = 'Appliquer et Fermer' @@ -148,26 +162,40 @@ object FormConfig: TFormConfig Left = 8 Top = 104 Width = 265 - Height = 81 + Height = 105 Caption = 'Acc'#232's r'#233'seau '#224' l'#39'interface vers la centrale LENZ' TabOrder = 3 object Label7: TLabel Left = 14 - Top = 24 + Top = 56 Width = 95 Height = 13 Caption = 'Adresse IP interface' end object Label8: TLabel Left = 14 - Top = 50 + Top = 82 Width = 82 Height = 13 Caption = 'Port de l'#39'interface' end + object Label11: TLabel + Left = 8 + Top = 16 + Width = 249 + Height = 13 + Caption = 'Ces param'#232'tres sont utilis'#233's en fonctionnement sans ' + end + object Label12: TLabel + Left = 8 + Top = 32 + Width = 40 + Height = 13 + Caption = 'CDM rail' + end object EditIPLenz: TEdit Left = 176 - Top = 24 + Top = 56 Width = 81 Height = 21 TabStop = False @@ -176,7 +204,7 @@ object FormConfig: TFormConfig end object EditportLenz: TEdit Left = 176 - Top = 48 + Top = 80 Width = 81 Height = 21 TabStop = False @@ -186,7 +214,7 @@ object FormConfig: TFormConfig end object GroupBox4: TGroupBox Left = 280 - Top = 152 + Top = 168 Width = 289 Height = 73 Caption = 'Ent'#234'te des trames vers l'#39'interface' @@ -217,8 +245,8 @@ object FormConfig: TFormConfig end end object Button2: TButton - Left = 336 - Top = 264 + Left = 352 + Top = 272 Width = 113 Height = 25 Caption = 'Fermer sans appliquer' diff --git a/UnitConfig.pas b/UnitConfig.pas index 118095a..8bab1df 100644 --- a/UnitConfig.pas +++ b/UnitConfig.pas @@ -33,6 +33,10 @@ type Label6: TLabel; LabelInfo: TLabel; Button2: TButton; + Label9: TLabel; + Label10: TLabel; + Label11: TLabel; + Label12: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormActivate(Sender: TObject); diff --git a/UnitConfigTCO.dcu b/UnitConfigTCO.dcu new file mode 100644 index 0000000000000000000000000000000000000000..625a6a0e617549e604a35c9c3f515498a830b5d5 GIT binary patch literal 4069 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 delta 3152 zcmZ8jeQZu{A4UTSfmsq6j8d$kZU-Mi80C)NJ7F+-HZX zvvq&J`#WFnynFBS^LXUK_9ZtN%f3*?*l1hq$dbI=18uQQY{=T)AB{Ihc8=^S>+ad@ zJ=%Bn={EDkaq|>vy;-eG!=Dx%-DPd)>1pVSM`Qi{k&z+oT9&`^UtN`IOJsOByel%y z?vdECcep(s?HgvdNOXjUqT&AdF#Ei#GP9{KJUmQMSF}KOSMKcCGd(4&#JqJ~Y-qP} z-B*?5rGwh(Y+u4>dThMy=)Qfhw9luuM)w#|w=ZN(TJ!sTChBENbXR}4?{;L*PpW(a zhJ}oguK1!wjnX~!Q2j;2lGYuOJ(2$Sj_yc2RcOd(`pWXN*GpHH$9>e6oJ zn6$TZzL{x}wm~Irs}okzn%^E0S#mOHe_CYA$*=6y!X_uP_KwUPny?&&>gL&d^1t-) z=X>(+`$Qxjj=SliPO$@z9wMoMN?mFIO4b$Ks8{Nd($)&3CGFM zLWZ2ik$61TAM6?m#dbCI(ULjtg|+Ru9``=-+M0SJT`#0IEA2d{{V>;4b&{O+R4RoG zb@fKl?s0PDrW}+O+!Jr=9g6kG(%va;I(HeL))sP|D`qJ&D_tTskPet9qopf05RDA2 zOq)zvtvk2IDHgkFjJ-(5IPLTcwX2y4wwnES0Uw4~17}#1A7USemN8sg*}}@5+6DK{ zYGA9Ocp(*eu!=wIJFzCjzWxy;>p5fZLdyP6WNbZ7g!A%v26M1SII-W;&3V>Dws!-c zczxN2$Q!kd{;m8M+S~q}nfq&gN6Ac63R?LFt-YXd;-!M0Ln4E0&(n9q$o%Fl9p8EC zqxRk^itAn|?;iDy)yhj9TF8F=9`PT84`qc9y#!-88vJr>*m5wr5br$Pet#_Z@D7>T z!pQyJO%!#w{q9)PqUmmLr(wD?7W^_Db*Fd0FfI9F>|)yVg|@P2dGoEWD&0y~y75(| z8@(?XY1bZST}v0bGS*~C7rH`)JWnhHA0GVJ{q5{S`3nmRPkr>A@=> z(34Y?tMxotr(Jq-T>EA5nvO@vlo?=r27Fuxl~@j&F&b6=7nR3VzDMO5WdE+pO+;22 zLn{A)%0nu@q4I4ie@^9{D*vs@ud2LP<=3?86>qMcfioFAfIi-W1w4%9d>^jn$FPi_ zBp$~KK80)fG>us-Xs{hbU`7tM$G4+k=O<+ zzyblVD**(hmM%d9{$PQBZ-iA)362UfEC#ui7NZvz_2YsIHX<|BQa#BHkJ$?sd~ngi zIVOtXi+uQ7D&S5&+?F#B1i=g^z@1KWq?vLW4fh74qo`2ASVMR1g}-~D%1bjdjKCr{ zLX8*N!3Eo?*k15Lgg9!aSxVZ} z*R%tH)9as^)D1a5~bT(Lt4sJ-WQk|BM zmFaX$Sh-GTf>qE{0jyGo0{Q{fVL7lW9g2X}=uix7ZGfI>QD67I4kf_qTBK^MzoA1Z zu==o6&5aql$%=5kgNgLIxA({rt>7%0^2k%<<_>#Bt#c&nfo*k4 zxvj%0bUJ9P!!PA?+x#RG&A_(J$_4G2li2q_V*k9vfky^%l=BRULneuFtHc*`B<^=2 zZNmX4(l&hGiL?!`IFYvDRVN*5_L>uE8{Y6E6Y$o1wUT~%u~6o{x5B`c2}x{~#P_QW zY>;>{Xy66|H%nyg5^p>!@$>BxZ$%7yRAL6~mSloKNmdw;gliHNSuVThWL%dX*efo2F^>;;m?NaQ;F4hSyC;2mZIw^`m3Y{oRP$I ziDz)m5Dz4t$47?X2|?;IW=Q%Bt&&)d#5v3}#4?FiQD}%268$0|X_ffVTYmJZj8)KE zK)xnxvD3!N?G4zh1hH8S;?-mWjzY2p>)p&|-;9;YX1pwtVeAZNvH^PpTa`ovt(Y9d zK~x7ZD3bf|dp?SN8LO00tP-QRF?kqYVu$hF~NJGW85b$ms=j=LdweUN@zXlfP7=~Ss1 zDm8-@$=Q^gBRNNMUP?y)N93qWnuO7YRVa#8v?iTW`dFS&)I3p;^ryUq-1 then + if j<>-1 then begin s:=IntToSTR(i)+' Tick='+IntToSTR(event_det_tick[i].tick)+' Det='+IntToSTR(j)+'='+intToSTR(etat); AfficheDebug(s,clyellow); end; end; - etat:=event_det_tick[i].aiguillage; - if etat<>-1 then + j:=event_det_tick[i].aiguillage; + if j<>-1 then begin - s:=IntToSTR(i)+' Tick='+IntToSTR(event_det_tick[i].tick)+' Aig='+IntToSTR(etat)+'='+intToSTR(event_det_tick[i].etat); + s:=IntToSTR(i)+' Tick='+IntToSTR(event_det_tick[i].tick)+' Aig='+IntToSTR(j)+'='+intToSTR(event_det_tick[i].etat); AfficheDebug(s,clyellow); end; end; + AfficheDebug('-----------------------------',cllime); end; @@ -266,4 +281,14 @@ begin AffActionneur:=CheckBoxAct.Checked; end; +procedure TFormDebug.CheckBoxEvtDetAigClick(Sender: TObject); +begin + AffAigDet:=CheckBoxEvtDetAig.checked; +end; + +procedure TFormDebug.CheckBoxAffFDClick(Sender: TObject); +begin + AffFD:=CheckBoxAffFD.checked; +end; + end. diff --git a/UnitPrinc.dcu b/UnitPrinc.dcu index 2b6d35997ced33e0432c94450e7a647c80bab8fb..3670a2af8df3f459070f78821458d4aac2bf77da 100644 GIT binary patch delta 57535 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 MS}a`B;b5Elf6-s~P5=M^ diff --git a/UnitPrinc.dfm b/UnitPrinc.dfm index 69b5ea2..a2b4073 100644 --- a/UnitPrinc.dfm +++ b/UnitPrinc.dfm @@ -1,6 +1,6 @@ object FormPrinc: TFormPrinc - Left = 25 - Top = 101 + Left = 55 + Top = 196 AutoSize = True BorderStyle = bsSingle Caption = 'Client TCP-IP CDM Rail ou USB - syst'#232'me LENZ' @@ -1246,7 +1246,7 @@ object FormPrinc: TFormPrinc end object BoutonRaf: TButton Left = 912 - Top = 16 + Top = 8 Width = 89 Height = 33 Caption = 'Rafraichissement' @@ -1345,7 +1345,7 @@ object FormPrinc: TFormPrinc end object ButtonTest: TButton Left = 912 - Top = 96 + Top = 88 Width = 89 Height = 33 Caption = 'Demande '#233'tat r'#233'trosignalisation' @@ -1391,7 +1391,7 @@ object FormPrinc: TFormPrinc end object ButtonAffDebug: TButton Left = 912 - Top = 56 + Top = 48 Width = 89 Height = 33 Caption = 'Affiche debug' @@ -1411,13 +1411,24 @@ object FormPrinc: TFormPrinc OnClick = ButtonRepriseClick end object Button2: TButton - Left = 992 + Left = 1008 Top = 96 Width = 97 Height = 25 - Caption = 'Demande '#233'tat CTS' + Caption = 'Simu D'#233'tecteur 513' TabOrder = 12 Visible = False + OnClick = Button2Click + end + object ButtonArretSimu: TButton + Left = 912 + Top = 128 + Width = 89 + Height = 33 + Caption = 'Arret simulation' + TabOrder = 13 + Visible = False + OnClick = ButtonArretSimuClick end object Timer1: TTimer Interval = 100 @@ -1465,6 +1476,10 @@ object FormPrinc: TFormPrinc Caption = 'Codification des feux' OnClick = Codificationdesfeux1Click end + object Codificationdesactionneurs1: TMenuItem + Caption = 'Codification des actionneurs' + OnClick = Codificationdesactionneurs1Click + end object N5: TMenuItem Caption = '-' end diff --git a/UnitPrinc.pas b/UnitPrinc.pas index 2eb7bb8..c1dc218 100644 --- a/UnitPrinc.pas +++ b/UnitPrinc.pas @@ -86,6 +86,8 @@ type Label1: TLabel; LabelNbTrains: TLabel; ButtonLitCV: TButton; + Codificationdesactionneurs1: TMenuItem; + ButtonArretSimu: TButton; procedure FormCreate(Sender: TObject); procedure MSCommUSBLenzComm(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); @@ -135,6 +137,9 @@ type procedure Quitter1Click(Sender: TObject); procedure ConfigClick(Sender: TObject); procedure ButtonLitCVClick(Sender: TObject); + procedure Button2Click(Sender: TObject); + procedure Codificationdesactionneurs1Click(Sender: TObject); + procedure ButtonArretSimuClick(Sender: TObject); private { Déclarations privées } @@ -202,11 +207,11 @@ TMA = (valide,devalide); var ancien_tablo_signalCplx,EtatsignalCplx : array[0..MaxAcc] of word; - AvecInitAiguillages,tempsCli,combine,NbreFeux,pasreponse,AdrDevie,precedent , + AvecInitAiguillages,tempsCli,combine,NbreFeux,pasreponse,AdrDevie, NombreImages,signalCpx,branche_trouve,Indexbranche_trouve,Actuel,Signal_suivant, Nbre_recu_cdm,Tempo_chgt_feux,Adj1,Adj2,NbrePN : integer; Hors_tension2,traceSign,TraceZone,Ferme,parSocket,ackCdm, - NackCDM,MsgSim,succes,recu_cv,AffActionneur, + NackCDM,MsgSim,succes,recu_cv,AffActionneur,AffAigDet, TraceListe,clignotant,nack,Maj_feux_cours,configNulle : boolean; branche : array [1..100] of string; @@ -218,7 +223,7 @@ const GrisF=$414141; clOrange=$0077FF; Feu_X=50;Feu_Y=91; - Max_Simule=1000; + Max_Simule=10000; couleurTrain : array[1..8] of Tcolor = (clYellow,clLime,clOrange,clAqua,clFuchsia,clLtGray,clred,clWhite); var @@ -230,7 +235,7 @@ var entete,suffixe,ConfStCom : string; maxaiguillage,detecteur_chgt,Temps,TpsRecuCom,Tempo_init,Suivant,TypeGen, NbreImagePligne,NbreBranches,Index2_det,branche_det,Index_det, - I_simule,maxTablo_act,NbreVoies : integer; + I_simule,maxTablo_act,NbreVoies,AdresseFeuSuivant : integer; Ancien_detecteur,detecteur : array[0..1024] of boolean; // anciens état des détecteurs et adresses des détecteurs et leur état Adresse_detecteur : array[0..60] of integer; // adresses des détecteurs par index mem : array[0..1024] of boolean ; // mémoire des états des détecteurs @@ -281,7 +286,7 @@ var aiguillageB : array[0..MaxAcc] of Taiguillage; - // dessin des feux + // signaux feux : array[1..MaxAcc] of record adresse, aspect : integer; // adresse du feu, aspect (2 feux..9 feux 12=direction 2 feux .. 16=direction 6 feux) Img : TImage; // Pointeur sur structure TImage du feu @@ -3887,7 +3892,12 @@ begin A:='Z'; Adr:=BrancheN[branche_trouve_actuel,indexBranche_actuel+1].Adresse; typeGen:=BrancheN[branche_trouve_actuel,indexBranche_actuel+1].Btype; - if NivDebug=3 then AfficheDebug('41 - Le suivant est :'+intToSTR(adr)+'('+intToSTR(Btype)+')',clwhite); + if NivDebug=3 then + begin + s:='41 - Le suivant est :'+intToSTR(adr); + if Btype=1 then s:=s+'(bis)'; + AfficheDebug(s,clwhite); + end; suivant_alg3:=adr; exit; end; @@ -3899,7 +3909,12 @@ begin A:='Z'; Adr:=BrancheN[branche_trouve_actuel,indexBranche_actuel-1].Adresse; typeGen:=BrancheN[branche_trouve_actuel,indexBranche_actuel-1].Btype; - if NivDebug=3 then AfficheDebug('43 - Le suivant est :'+intToSTR(adr)+'('+intToSTR(TypeGen)+')',clwhite); + if NivDebug=3 then + begin + s:='43 - Le suivant est :'+intToSTR(adr); + if typeGen=1 then s:=s+'(bis)'; + AfficheDebug(s,clwhite); + end; suivant_alg3:=adr; exit; end; @@ -4583,12 +4598,30 @@ begin begin detecteur_suivant_el:=Adr; exit; - end; - if NivDebug=3 then AfficheDebug('trouvé 2:'+intToSTR(Adr)+' '+intToSTR(typeGen),clorange); + end; + if NivDebug=3 then + begin + s:='trouvé 2: Adr='+intToSTR(Adr); + case typeGen of + 1 : s:=s+' detecteur'; + 2 : s:=s+' aiguillage'; + 3 : s:=s+' aiguillage bis'; + end; + AfficheDebug(s,clorange); + end; trouve_element(Adr,typeGen); Btype:=BrancheN[branche_trouve,IndexBranche_trouve].BType; BisSuiv:=Btype; // si aiguillage bis - if (NivDebug=3) then AfficheDebug('Suivant='+IntToSTR(Adr)+ '('+intToSTR(Btype)+')',clyellow); + if (NivDebug=3) then + begin + s:='Suivant='+intToSTR(Adr); + case Btype of + 1 : s:=s+' detecteur'; + 2 : s:=s+' aiguillage'; + 3 : s:=s+' aiguillage bis'; + end; + AfficheDebug(s,clorange); + end; AdrPrec:=AdrFonc;AdrFonc:=Adr; BisPrec:=BisFonc;BisFonc:=typeGen; inc(i); @@ -4662,6 +4695,7 @@ end; // renvoie l'état du signal suivant // si renvoie 0, pas trouvé le signal suivant. // rang=1 pour feu suivant, 2 pour feu suivant le 1, etc +// Dans AdresseFeuSuivant : adreses du feu suivant (variable globale) function etat_signal_suivant(adresse,rang : integer) : integer ; var num_feu,AdrDet,etat,AdrFeu,i,j,prec,AdrSuiv : integer; TypePrec,TypeActuel : integer; @@ -4684,6 +4718,7 @@ begin begin Affiche('Erreur 600 - feu non trouvé',clred); etat_signal_suivant:=0; + AdresseFeuSuivant:=0; exit; end; Etat:=0; @@ -4695,6 +4730,7 @@ begin begin Affiche('Msg 601 - feu '+intToSTR(adresse)+' non renseigné ',clOrange); etat_signal_suivant:=0; + AdresseFeuSuivant:=0; exit; end; TypePrec:=1; // détecteur @@ -4723,12 +4759,14 @@ begin if (AdrSuiv=9999) then begin Etat_signal_suivant:=0; + AdresseFeuSuivant:=0; exit; end; if (AdrSuiv=0) then begin if NivDebug=3 then AfficheDebug('Le suivant est un buttoir',clyellow); Etat_signal_suivant:=carre_F; // faire comme si c'était un signal au carré + AdresseFeuSuivant:=0; exit; end; @@ -4752,6 +4790,7 @@ begin inc(num_feu); Etat:=EtatSignalCplx[AdrFeu]; Signal_suivant:=AdrFeu; + if NivDebug=3 then AfficheDebug('Trouvé feu suivant Adr='+IntToSTR(AdrFeu)+'='+IntToSTR(etat),clOrange); end else @@ -4764,6 +4803,7 @@ begin until (j=10) or ((AdrFeu<>0) and (num_feu=rang)); if etat=0 then Signal_Suivant:=0; etat_signal_suivant:=Etat; + AdresseFeuSuivant:=Signal_suivant; if (NivDebug=3) and (adrFeu=0) then AfficheDebug('Pas Trouvé de feu suivant au feu Adr='+IntToSTR(ADresse),clOrange); //TraceDet:=false; end; @@ -4885,13 +4925,14 @@ begin end; // renvoie vrai si une mémoire de zone est occupée du signal courant au signal suivant +// adresse=adresse du signal function test_memoire_zones(adresse : integer) : boolean; var - TypePrec,TypeActuel,ife,Detecteur_precedent,actuel,AdrDet,Etat,AdrFeu,i,j,prec,AdrSuiv : integer; + AdrSuiv,prec,TypePrec,TypeActuel,ife,actuel,AdrDet,Etat,AdrFeu,i,j,PresTrain01,PrecInitial : integer; Pres_train,sort : boolean; begin - if NivDebug>=1 then AfficheDebug('Cherche mémoire à 1 du signal '+intToSTR(adresse)+' au signal suivant ',clyellow); + if NivDebug>=1 then AfficheDebug('Proc test_memoire_zones - Cherche mémoire à 1 du signal '+intToSTR(adresse)+' au signal suivant ',clyellow); i:=Index_feu(adresse); if (i=0) then @@ -4942,7 +4983,6 @@ begin if feux[i].Btype_suiv4=5 then TypeActuel:=3; // le type du feu 1=détecteur 2=aig 5=bis end; // détecteur sur le signal courant - Detecteur_precedent:=prec; TypePrec:=1; if (prec=0) then begin @@ -4950,44 +4990,41 @@ begin exit; end; + PrecInitial:=Prec; repeat inc(j); // à la première itération, si "actuel" est déja un détecteur, ne pas faire de recherche sur le suivant // et chaîner mémoire de zone if (j=1) and (Typeactuel=1) then // si détecteur begin - //AfficheDebug('C''est un détecteur',clred); - AdrSuiv:=actuel; - actuel:=prec; - TypePrec:=1; - TypeActuel:=1; - //TypeGen:=1; - Pres_train:=MemZone[prec,actuel]; + Pres_train:=MemZone[Prec,actuel]; if Pres_Train and (NivDebug=3) then Affiche('Présence train de '+intToSTR(prec)+' à '+intToSTR(actuel),clyellow); - Detecteur_precedent:=actuel; end else begin AdrSuiv:=suivant_alg3(prec,TypePrec,actuel,TypeActuel,1); - //AfficheDebug('A:'+IntToSTR(BisActuel); prec:=actuel;TypePrec:=TypeActuel; actuel:=AdrSuiv;TypeActuel:=typeGen; end; - //AfficheDebug('A suivant='+IntToSTR(adrsuiv),clred); - if AdrSuiv=0 then + + if NivDebug=3 then AfficheDebug('A suivant='+IntToSTR(adrsuiv),clred); + if actuel=0 then begin // si c'est un buttoir test_memoire_zones:=false; + if NivDebug=3 then AfficheDebug('sortie car buttoir',clyellow); exit; end; - // si le suivant est un détecteur comporte t-il un signal? + // si le suivant est un détecteur ; contrôler mémoire de zone et comporte t-il un signal? AdrFeu:=0; if (TypeActuel=1) then // détecteur begin - if (NivDebug=3) and MemZone[Detecteur_precedent][actuel] then AfficheDebug('Présence train de '+intToSTR(Detecteur_precedent)+' à '+intToSTR(actuel),clyellow); + if (NivDebug=3) and MemZone[PrecInitial][actuel] then AfficheDebug('Présence train de '+intToSTR(PrecInitial)+' à '+intToSTR(actuel),clyellow); - Pres_train:=MemZone[Detecteur_precedent][actuel] or Pres_train; // mémoire de zone - Detecteur_precedent:=actuel; // pour préparer le suivant + Pres_train:=MemZone[PrecInitial][actuel] or Pres_train; // mémoire de zone + if Pres_Train then PresTrain01:=1 else PresTrain01:=0; + if NivDebug=3 then AfficheDebug('mémoire de zone '+IntToSTR(PrecInitial)+' à '+intToSTR(actuel)+'='+IntToSTR(PresTrain01),clyellow); + // prec:=actuel; // pour préparer le suivant i:=index_feu_det(AdrSuiv); // renvoie l'index du signal se trouvant au détecteur "AdrSuiv": il peut y avoir 4 détecteurs par signal AdrFeu:=feux[i].adresse; // adresse du feu @@ -5020,7 +5057,7 @@ begin if (NivDebug=3) then AfficheDebug('Trouvé aiguillage '+intToSTR(AdrSuiv),clyellow); end; sort:=(j=10) or (AdrFeu<>0) ; - until (sort); + until (sort); // on arrete jusqu'à trouver un signal ou si on va trop loin (10 itérations) inc(ife); until ife>=5; if (NivDebug=3) and (Etat=0) then AfficheDebug('Pas trouvé de signal suivant au '+intToSTR(adresse),clyellow); @@ -5080,7 +5117,7 @@ begin inc(i); repeat dec(i); - trouve:=(event_det_tick[i].etat=etat) and (event_det_tick[i].detecteur=Adr) ; + trouve:=(event_det_tick[i].etat=etat) and (event_det_tick[i].detecteur=Adr) ; until (trouve or (i=0)); if trouve then begin @@ -5195,6 +5232,7 @@ begin // trouvé la route si j=2 : - si j=3 : + if (TraceListe) then AfficheDebug('Route trouvée',clyellow); + if (TraceListe) then AfficheDebug('detecteur_suivant_el('+IntToSTR(det1)+',1,'+IntToSTR(det2)+',1',clyellow); AdrSuiv:=detecteur_suivant_El(det1,1,det2,1); AdrPrec:=detecteur_suivant_El(det2,1,det1,1); @@ -5205,22 +5243,25 @@ begin if traceListe then AfficheDebug(s,clyellow); // trouver l'index du détecteur (det1) à 0 + if traceListe then AfficheDebug('trouve_index_det_chrono('+intToSTR(det1)+',0,'+intToSTR(N_event_tick)+')',clYellow); i:=trouve_index_det_chrono(det1,0,N_Event_tick); if TraceListe then AfficheDebug('Index det='+intToSTR(i),clyellow); // et trouver l'index du détecteur précédent à 0 avant l'index i + if traceListe then AfficheDebug('trouve_index_det_chrono('+intToSTR(AdrPrec)+',0,'+intToSTR(i-1)+')',clYellow); i:=trouve_index_det_chrono(AdrPrec,0,i-1); + if TraceListe then AfficheDebug('Index prec='+intToSTR(i),clyellow); t:=event_det_tick[i].traite; // détecteur précédent déja traité ? if (i=0) or t then begin - if (i=0) and TraceListe then AfficheDebug('La memoire prec '+intToSTR(AdrPrec)+'=0 donc route non valide',clyellow); - if t and TraceListe then AfficheDebug('La memoire prec '+intToSTR(AdrPrec)+' a déja été traitée donc route non valide',clyellow); + if (i=0) and TraceListe then AfficheDebug('La mémoire préc '+intToSTR(AdrPrec)+'=0 donc route non valide',clyellow); + if t and TraceListe then AfficheDebug('La mémoire préc '+intToSTR(AdrPrec)+' a déja été traitée donc route non valide',clyellow); calcul_zones_det:=0;exit; end; - if TraceListe then AfficheDebug('route ok car '+IntToStr(AdrPrec)+'=0 à l''index '+intToSTR(i),clyellow); + if TraceListe then AfficheDebug('route ok car '+IntToStr(AdrPrec)+'=0 à l''index '+intToSTR(i)+' - DetSuivant='+intToSTR(AdrSuiv),clyellow); Mem[AdrPrec]:=false; // inutile //marquer l'adresse précédente comme traitée @@ -5281,6 +5322,7 @@ begin end; s:='train '+IntToSTR(Train_Courant)+' Mem '+IntToSTR(det2)+' à '+IntTOStr(AdrSuiv); Affiche(s,clyellow); + if AffAigDet then AfficheDebug(s,clyellow); // et effacer le premier détecteur de la route (det1) i:=1; @@ -5342,7 +5384,8 @@ begin // signal non directionnel etat:=etat_signal_suivant(AdrFeu,1) ; // état du signal suivant + adresse du signal suivant dans Signal_Suivant - + if AffSignal then AfficheDebug('Etat signal suivant ('+intToSTR(AdresseFeuSuivant)+') est '+intToSTR(etat),clyellow); + // signaux traités spécifiquement if (AdrFeu=201) then begin @@ -5479,11 +5522,11 @@ begin else begin // sinon si signal suivant=jaune - if (TestBit(etat,jaune)) then Maj_Etat_Signal(AdrFeu,jaune_cli); + if (TestBit(etat,jaune)) then Maj_Etat_Signal(AdrFeu,jaune_cli); end; end else - // aiguille locale non déviée + // aiguille locale non déviée ou aspect feu<9 // si le signal suivant est rouge begin if AffSignal then AfficheDebug('pas d''aiguille déviée',clYellow); @@ -5784,27 +5827,27 @@ begin // on reçoit un doublon dans deux index consécutifs. if N_Event_tick>=1 then begin - //Affiche('Event_det_tick['+intToSTR(N_event_tick)+'].detecteur['+intToSTR(Adresse)+']='+intToSTr(event_det_tick[N_event_tick].detecteur[Adresse]),clyellow); - if (event_det_tick[i].etat=etat01) and (event_det_tick[i].detecteur=Adresse) then exit; // déja stocké + if (event_det_tick[N_event_tick].etat=etat01) and (event_det_tick[N_event_tick].detecteur=Adresse) then + begin + //Affiche(IntToSTR(Adresse)+' déja stocké',clorange); + exit; // déja stocké + end; end; if Traceliste then AfficheDebug('--------------------- détecteur '+intToSTR(Adresse)+' à '+intToSTR(etat01)+'-----------------------------',clOrange); - + if AffAigDet then + begin + s:='Evt Det '+intToSTR(adresse)+'='+intToSTR(etat01); + Affiche(s,clyellow); + AfficheDebug(s,clyellow); + end; + //if etat then Mem[Adresse]:=true; // mémoriser l'état à 1 ancien_detecteur[Adresse]:=detecteur[Adresse]; detecteur[Adresse]:=etat; detecteur_chgt:=Adresse; - // mise a jour du tableau evt de fronts descendants - if ancien_detecteur[Adresse] and not(detecteur[Adresse]) and (N_Event_det<20) then - begin - //Affiche('front descendant',clyellow); - inc(N_event_det); - event_det[N_event_det]:=Adresse; - if not(configNulle) then calcul_zones; // en avant les calculs - end; - // stocke les changements d'état des détecteurs dans le tableau chronologique if (N_Event_tickAdresse then + begin + if AffFD then AfficheDebug('index='+intToSTR(N_event_tick)+' FD '+intToSTR(Adresse),clyellow); + inc(N_event_det); + event_det[N_event_det]:=Adresse; + if not(configNulle) then calcul_zones; // en avant les calculs + end; + end; + if (N_event_det>=Max_event_det) then + begin + Affiche('Débordement d''évènements FD - Raz tampon',clred); + N_event_det:=0; + FormDebug.MemoEvtDet.lines.add('Raz sur débordement'); + end; + + // attention à partir de cette section le code est susceptible de ne pas être exécuté + // Mettre à jour le TCO if AvecTCO then @@ -5859,9 +5924,17 @@ end; // évènement d'aiguillage procedure Event_Aig(adresse,pos : integer); +var s: string; begin + aiguillage[adresse].position:=pos; if (N_Event_tick0 then begin - Affiche('Simulation tick='+IntToSTR(tick)+' det='+intToSTR(Tablo_simule[i_simule].detecteur)+'='+IntToSTR(Tablo_simule[i_simule].etat),Cyan); + // if i_simule=164 then + // begin + // if Tablo_simule[i_simule].detecteur=538 then Affiche('création evt 538 index '+intToSTR(i_simule),clorange); + // end; + + Affiche('Simulation '+intToSTR(I_simule)+' Tick='+IntToSTR(tick)+' det='+intToSTR(Tablo_simule[i_simule].detecteur)+'='+IntToSTR(Tablo_simule[i_simule].etat),Cyan); Event_Detecteur(Tablo_simule[i_simule].detecteur, Tablo_simule[i_simule].etat=1); // créer évt détecteur end; // evt aiguillage ? if Tablo_simule[i_simule].aiguillage<>0 then begin - Affiche('Simulation tick='+IntToSTR(tick)+' aig='+intToSTR(Tablo_simule[i_simule].aiguillage)+'='+IntToSTR(Tablo_simule[i_simule].etat),Cyan); - Event_Aig(Tablo_simule[i_simule].Aiguillage, Tablo_simule[i_simule].etat); // créer évt aiguillage + Affiche('Simulation '+intToSTR(I_simule)+' Tick='+IntToSTR(tick)+' aig='+intToSTR(Tablo_simule[i_simule].aiguillage)+'='+IntToSTR(Tablo_simule[i_simule].etat),Cyan); + Event_Aig(Tablo_simule[i_simule].Aiguillage,Tablo_simule[i_simule].etat); // créer évt aiguillage end; end; if i_Simule>=Index_simule then begin Index_Simule:=0; // fin de simulation + I_Simule:=0; MsgSim:=false; Affiche('Fin de simulation',Cyan); end; @@ -6957,8 +7036,8 @@ begin begin s:='Dét '+intToSTR(Adresse_detecteur[j])+'='; if Detecteur[adresse_detecteur[j]] then s:=s+'1' else s:=s+'0'; - s:=s+' Mem='; - if Mem[adresse_detecteur[j]] then s:=s+'1' else s:=s+'0'; + //s:=s+' Mem='; + //if Mem[adresse_detecteur[j]] then s:=s+'1' else s:=s+'0'; Affiche(s,clYellow); end; end; @@ -7006,10 +7085,8 @@ begin ' Droit='+IntToSTR(aiguillage[i].ADroit)+aiguillage[i].ADroitB; if aiguillage[i].modele=4 then s:=s+' Dévié2='+intToSTR(aiguillage[i].ADevie2)+aiguillage[i].ADevie2B; if aiguillage[i].vitesse<>0 then s:=s+' Vitesse déviée='+intToSTR(aiguillage[i].vitesse); - end - else - s:=s+' absent'; - Affiche(s,clYellow); + Affiche(s,clYellow); + end; end; for i:=1 to MaxAiguillage do @@ -7026,11 +7103,8 @@ begin ' Droit='+IntToSTR(aiguillageB[i].ADroit)+aiguillageB[i].ADroitB; if aiguillageB[i].modele=4 then s:=s+' Dévié2='+intToSTR(aiguillageB[i].ADevie2)+aiguillageB[i].ADevie2B; if aiguillageB[i].vitesse<>0 then s:=s+' Vitesse déviée='+intToSTR(aiguillageB[i].vitesse); - end - else - s:=s+' absent'; - - Affiche(s,clYellow); + Affiche(s,clYellow); + end; end; end; @@ -7107,15 +7181,15 @@ begin // aiguillage normal if aiguillage[adr].modele=1 then - begin + begin + //Affiche('Normal',clyellow); if etat=0 then etatAig:=2 else etatAig:=1; - aiguillage[adr].position:=etatAig; - aiguillageB[adr].position:=etatAig; Event_Aig(adr,etatAig); end; // TJD TJS if (aiguillage[adr].modele=2) or (aiguillage[adr].modele=3) then begin + //Affiche('TJDS',clyellow); adr2:=aiguillage[adr].Apointe; // 2eme adresse de la TJD case etat of 1 : begin etatAig:=1;EtatAig2:=2;end; @@ -7123,21 +7197,19 @@ begin 5 : begin etatAig:=2;EtatAig2:=1;end; 0 : begin etatAig:=2;EtatAig2:=2;end; end; - aiguillage[adr].position:=etatAig;aiguillage[adr2].position:=etatAig2; Event_Aig(adr,etatAig); Event_Aig(adr2,etatAig2); end; if aiguillage[adr].modele=4 then // aiguillage triple begin + //Affiche('Triple',clyellow); // état de l'aiguillage 1 if (etat=0) or (etat=2) then etatAig:=2; if etat=3 then etatAig:=1; - aiguillage[adr].Position:=etatAig; // état de l'aiguillage 2 adr2:=aiguillage[adr].AdrTriple; if (etat=0) or (etat=3) then etatAig2:=2; if etat=2 then etatAig2:=1; - aiguillage[adr2].Position:=etatAig2; Event_Aig(adr,etatAig); Event_Aig(adr2,etatAig2); end; @@ -7158,7 +7230,7 @@ begin Delete(recuCDM,j,i+5-j); val(ss,etat,erreur); Event_detecteur(Adr,etat=1); - //FormDebug.MemoDet.Lines.Add(IntToSTR(adr)+' '+IntToSTR(etat)); + //Affiche(IntToSTR(adr)+' '+IntToSTR(etat),clyellow); if AfficheDet then Affiche('Rétro Détecteur '+intToSTR(adr)+'='+IntToStr(etat),clYellow); end ; @@ -7231,21 +7303,26 @@ begin for i:=1 to NbreFeux do begin // feu de signalisation - s:=IntToSTR(i)+' Adresse='+IntToSTR(feux[i].Adresse); + s:=IntToSTR(i)+' Adr='+IntToSTR(feux[i].Adresse); s:=s+' décodeur='+IntToStr(feux[i].decodeur); if feux[i].aspect<10 then begin - s:=s+' SIG Nombre de feux='+IntToSTR(feux[i].aspect)+' '; - s:=s+' El Suivant1='+IntToSTR(feux[i].Adr_el_suiv1)+' Type suivant1='+intToSTR(feux[i].Btype_suiv1); - + s:=s+' SIG Nbre de feux='+IntToSTR(feux[i].aspect)+' '; + s:=s+' El_Suivant1='+IntToSTR(feux[i].Adr_el_suiv1)+' Type suivant1='+intToSTR(feux[i].Btype_suiv1); + case feux[i].Btype_suiv1 of + 1 : s:=s+' (détecteur)'; + 2 : s:=s+' (aiguillage ou TJD-S)'; + 4 : s:=s+' (aiguillage triple)'; + 5 : s:=s+' (aiguillage bis)'; + end; if feux[i].decodeur=6 then s:=s+' Cible unisemaf='+intToSTR(feux[i].Unisemaf); end else // feu directionnel begin - s:=s+' DIR Nombre de feux='+IntToSTR(feux[i].aspect-10)+' '; + s:=s+' DIR Nbre de feux='+IntToSTR(feux[i].aspect-10)+' '; NfeuxDir:=feux[i].aspect-10; for j:=1 to NfeuxDir+1 do begin @@ -7279,8 +7356,8 @@ begin Affiche('Version 1.4 : Gestion des Fx vers les locomotives par actionneurs',clLime); Affiche('Version 1.41 : Gestion des passages à niveaux par actionneurs',clLime); Affiche('Version 1.42 : Correction erreur lecture feux',clLime); - - + Affiche('Version 1.43 : Correction erreur gestion sémaphore',clLime); + Affiche('Version 1.44 : Gestion trains avec voitures éclairées',clLime); end; procedure TFormPrinc.ClientSocketLenzDisconnect(Sender: TObject; @@ -7293,27 +7370,30 @@ procedure TFormPrinc.ChronoDetectClick(Sender: TObject); var i,j,etat : integer; s : string; begin + if N_event_tick=0 then + begin + Affiche('Aucun évenèment détecteur ou aiguillage',clYellow); + end; for i:=1 to N_Event_tick do begin //for j:=1 to 1100 do begin - etat:=event_det_tick[i].etat; - if etat<>-1 then + j:=event_det_tick[i].detecteur; + if j<>-1 then begin - j:=event_det_tick[i].detecteur; s:=IntToSTR(i)+' Tick='+IntToSTR(event_det_tick[i].tick); - s:=s+' Det='+IntToSTR(j)+'='+intToSTR(etat); + s:=s+' Det='+IntToSTR(j)+'='+intToSTR(event_det_tick[i].etat); // s:=s+' Det suiv='+intTostr(event_det_tick[i].suivant); Affiche(s,clyellow); end; end; - etat:=event_det_tick[i].aiguillage; - if etat<>-1 then + j:=event_det_tick[i].aiguillage; + if j<>-1 then begin s:=IntToSTR(i)+' Tick='+IntToSTR(event_det_tick[i].tick); - s:=s+' Aig='+intToSTR(etat)+'='+intToSTR(event_det_tick[i].etat); + s:=s+' Aig='+intToSTR(j)+'='+intToSTR(event_det_tick[i].etat); Affiche(s,clyellow); end; end; @@ -7324,7 +7404,6 @@ end; procedure TFormPrinc.FichierSimuClick(Sender: TObject); begin FormSimulation.showModal; - //TraceListe:=true; end; procedure TFormPrinc.ButtonEcrCVClick(Sender: TObject); @@ -7492,6 +7571,68 @@ begin formconfig.close; end; +procedure TFormPrinc.Button2Click(Sender: TObject); +var i : integer; +begin + nivDebug:=3; + //test_memoire_zones(1005); + MemZone[569][538]:=true; + test_memoire_zones(177); +end; + + +procedure TFormPrinc.Codificationdesactionneurs1Click(Sender: TObject); +var i,adr,etatAct,v,aO,aF : integer; + s,s2 : string; +begin + if (maxTablo_act=0) and (NbrePN=0) then + begin + Affiche('Aucun actionneur déclaré',clYellow); + end; + + + for i:=1 to maxTablo_act do + begin + s:=Tablo_actionneur[i].train; + etatAct:=Tablo_actionneur[i].etat ; + Adr:=Tablo_actionneur[i].actionneur; + s2:=Tablo_actionneur[i].train; + if (s2<>'') then + begin + Affiche('FonctionF Actionneur='+intToSTR(adr)+' Train='+s2+' F'+IntToSTR(Tablo_actionneur[i].fonction)+':'+intToSTR(etatAct)+ + ' Temporisation='+intToSTR(tablo_actionneur[i].Tempo),clyellow); + end; + end; + + // dans le tableau des PN + for i:=1 to NbrePN do + begin + s:='PN'+intToSTR(i)+' Adresse fermeture PN='+IntToSTR(Tablo_PN[i].AdresseFerme); + s:=s+' Adresse ouverture PN='+IntToSTR(Tablo_PN[i].AdresseOuvre); + Affiche(s,clyellow); + s:=' Commande fermeture='+intToSTR(Tablo_PN[i].commandeFerme); + s:=s+' Commande ouverture='+intToSTR(Tablo_PN[i].commandeOuvre); + s:=s+' Nbre de voies='+intToSTR(Tablo_PN[i].nbVoies); + Affiche(s,clyellow); + for v:=1 to Tablo_PN[i].nbvoies do + begin + s:=' Voie '+IntToSTR(v)+': Actionneur de fermeture='+intToSTR(Tablo_PN[i].voie[v].ActFerme); + s:=s+' Actionneur d''ouverture='+intToSTR(Tablo_PN[i].voie[v].ActOuvre); + Affiche(s,clyellow); + end; + end; +end; + + + +procedure TFormPrinc.ButtonArretSimuClick(Sender: TObject); +begin + Index_Simule:=0; // fin de simulation + I_Simule:=0; + MsgSim:=false; + Affiche('Fin de simulation',Cyan); +end; + begin end. diff --git a/UnitSimule.dcu b/UnitSimule.dcu index 066947cc0292a2ace6d12bacdaa12e94e39cd040..2ab4e0a68af6503b8015a151195079b629da2e76 100644 GIT binary patch delta 2316 zcmZuyeQaCR6~E{B<@wk+&rWbmqjZm3YC0#m1jm~)>S zkqTtrbI$K~e)rsaj-Ty+th=!8mWx6-FZhJ$8yGxxi??(#GT0`fT4y8_Zx8Jq4C{5> zJ$nxxjUC%~XMN*~|G(C2-w`KuKqy*Vft}-P;xoMS?3| z8UN|naGaLk+R@w}iAVdxb?th*D-;Xu3F}{`b}#L9E>3jx4_r$bnyu-z`)yNbQ#zu9 z`snzzOU4q%Y9r{_nf!aOfp+MzSfE#riT4?_Ct{uPP&g+3%AhL{4Fw|cnD|Su!P*=S z#A2*^lM`E`fq}kIFec72xN(t~I1p?okT;EqWvp)r1;YKkG2xe0W@6JZS7U4>DHqj2O7_6TO3=cbtfgzE-D;@#=o^)-D#v+ySz?wR1d^; z_tg<5JX^X$@$W8kx1MN=@<82J$2sY~IhjA%eRUcs*dj=jJB1KK&Ri~+Y-{8&oLXW$ z?exPJuf5`|0LU3LuI->0Wkp-d$~Y~=57smG6#e}6LsM1rxm`N?w)w+W-8;#-Mit)r1MBG z8g~?Txz8`8Q_Qu15ZP^tvBX_!yk5My@WbztaozB_Yl@Xj=iJ%P7SYR%``k-!&8d>V zzKECd+QRQClQ}h;TET6Yw=~U>$w9}VO|IL8NGhu)uiz-i>pjStJo~6~BF7z_CFMqM z*%NXOr)8V@Ud_2=Q*uTVH4Cat9_M(ksmf{cVB=ItQF%sWh7{Jl3TDQvw7^XqFrF_d zTUN=fWK;5-37%uVLUzlXsek8FdGwV_yMCGZ?j2$F;*S zZu@o8W)bQj3K&E`B#_w4YYF~D&_d8ka1X)n z2qpK3ae_XAC_$WHC&31S zO$7H6+)vO=@DM?mAmZS*o`W>j!w6QwIIf4}Gb}n;YM`eW(+9m2$u4QO1X?&T*`;9dzo2~xYcp2;sMs+A7x{9 z7Rly{dC9ph$UN#a%cg%=HZ5gI^F)t2iyF-GVJY;om$z`Ks4#R`@#tgsd`;NRa<7~{ zRx8!)edt#lxBApHAZPAstq$|L8^X@(AY&e5S_TmGH zD)3*@{TOGZ+lbF}q;a!lpH}KkZe{Kl6~yE|Vse<6{D9`qpl%aqFlCz` s!A26U;xSyIj^XJ1I5xT%p2M~3IgHOw=iv;)8HTgy=N~+N7TAiww<=gjKL7v# delta 2434 zcmb7G4QyN06~5>A`T69&X0XUj6WP7E7z-A_C&iy($N!-rguaKhGOBB zy?q0hUJ8!2uU&p_`9qibZR`5_qM=Cm9#2oOU)vgd@F!Pz+dSw0Hu*}LjBRCW%hgb9 zOLQRo&GEZGJ9(sR293Mz0oY~?+xs%V4+UszIF$$E@HIE-mM+f6i{7xNPNS>g&9XO{fXcIN%V`^80%vESh}${cqp(;OT7 z9P8D0Wa958KIQNjHO^N1pKM*bDS?_;ZXYo2b?)~JBQ3FdcSZm|(#8wBn|v z?hBJhp-w@f#wmn&%vmaxGTj~Q#vZLT>Rf*HBM^ctC%3z*z&PNtSrqXPqrYM^Sd7Vv zjYd`F_Em4LW%_;m+C22t_8q%&XLGkPAXXK7BK3+8y`|>fQGfo&v*#qr>r|U!j8`se zI>Jd4%RN4eLOfnPF!jv!P|j7lt8Jv{9C^fI{HJo4`|LtG%h(9l|Xs&MBUUc%yq^2Kj=*0^{;hOo3cp#`!F< zojPc;RLcVb|Lr^ zUn-YzXE+@WrNcwXcB9+taoQ!eF4{j7jm7v|DYh+vvvJwYeI9Rx2CyhU&q!P^9z2zC=ZLhum5 zVS-;0JV9_f!4ZOI34Tq`LGT>G^8}d}2wo)EMzDq8WrCdquMj*|` z%6HYPxz?-4TTn;4`^LimLn$NWS#(}X$0gk6&A8i?w96A~_(821HK8BvI{v^UXfVWU zTIY-(Z$%g0hIU+yJyvxBt9iQBTqz%}_Tg(fBMTI_I*D~W`vyG0gUO)AEIFM@e&n4j z@Vx2_I$(xX9z~s3DeqEI;m~fwrw-pSO4!Y8o$sU`>y>(5edt&0N*n5mi;v~SF4R^1 zYUEq+6rb9JimoZBXXcqV=19R#7GH@mR9G}l?N)3=Hy+doTd@rfD1E{)hUh`@H1aP2 zuh&@9g@RxFAwuC!AfoUlxL8ytP(`8h9~TPWFbY-i*L3hdG!!)xnBlP2e?GzO3IC)_ z*42KUKnIH2At}^yNZLSF+6o+%OGjSX^<&a@7NqSuX4+qwc3j#`$E6joN_+m4>AxxM z*QZT;M%vjKwi#AEx@8#GSuWZ{b7dC0)huqtxdLV_qJW=S=8oYX6mbl#R>oFa89QcW zY{tsiw-UQmWo%4k?6k_*mnvgpWsF@cV{EC$SdYfosK(eoHO4&UjBPES8^?A>ix|gy o9CH)cLBdse92?c+cw%l6J6s%|!dCSZrsrnR&tG4BrEEp;zwoYh3;+NC diff --git a/UnitSimule.dfm b/UnitSimule.dfm index 0015063..b0f9e00 100644 --- a/UnitSimule.dfm +++ b/UnitSimule.dfm @@ -44,6 +44,7 @@ object FormSimulation: TFormSimulation Height = 21 TabOrder = 1 Text = '1' + OnChange = EditIntervalleChange OnKeyPress = EditIntervalleKeyPress end object OpenDialog: TOpenDialog diff --git a/UnitSimule.pas b/UnitSimule.pas index d58f4c1..b89cab5 100644 --- a/UnitSimule.pas +++ b/UnitSimule.pas @@ -15,6 +15,7 @@ type procedure ButtonChargeClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure EditIntervalleKeyPress(Sender: TObject; var Key: Char); + procedure EditIntervalleChange(Sender: TObject); private { Déclarations privées } public @@ -48,7 +49,6 @@ begin index_simule:=1; repeat readln(fte,s); - i:=pos('Tick=',s); if i<>0 then begin @@ -72,10 +72,10 @@ begin val(s,k,erreur); Tablo_simule[index_simule].etat:=k; - s:=IntToSTR(Index_simule)+' Tick='+intToSTR(Tablo_simule[index_simule].tick)+ + {s:=IntToSTR(Index_simule)+' Tick='+intToSTR(Tablo_simule[index_simule].tick)+ ' Detecteur='+intToSTR(Tablo_simule[index_simule].detecteur)+ '='+intToSTR(Tablo_simule[index_simule].etat); - Affiche(s,ClLime); + Affiche(s,ClLime); } inc(index_simule); end; @@ -95,10 +95,10 @@ begin val(s,k,erreur); Tablo_simule[index_simule].etat:=k; - s:=IntToSTR(Index_simule)+' Tick='+intToSTR(Tablo_simule[index_simule].tick)+ + {s:=IntToSTR(Index_simule)+' Tick='+intToSTR(Tablo_simule[index_simule].tick)+ ' Aiguillage='+intToSTR(Tablo_simule[index_simule].aiguillage)+ '='+intToSTR(Tablo_simule[index_simule].etat); - Affiche(s,ClLime); + Affiche(s,ClLime); } inc(index_simule); end; @@ -110,8 +110,12 @@ begin Affiche('Intervalle='+intToSTR(intervalle),clyellow); dec(index_simule); closeFile(fte); + formprinc.ButtonArretSimu.Visible:=true; + formprinc.ButtonArretSimu.top:=120; + FormSimulation.Close; - end; + end; + end; @@ -129,4 +133,11 @@ begin if (intervalle<0) then Intervalle:=1; end; +procedure TFormSimulation.EditIntervalleChange(Sender: TObject); +var erreur : integer; +begin + Val(EditIntervalle.Text,intervalle,erreur); + if (intervalle<0) then Intervalle:=1; +end; + end. diff --git a/UnitTCO.dcu b/UnitTCO.dcu index 34b8b97849960946ba5d6e71d265dae1f2e3328a..2c852cbc6d4769b676390b5aa223969cfc262446 100644 GIT binary patch delta 18674 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 delta 18234 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 H00sU(IQ|$g diff --git a/UnitTCO.dfm b/UnitTCO.dfm index 60b0f02..9ca69ed 100644 --- a/UnitTCO.dfm +++ b/UnitTCO.dfm @@ -1,6 +1,6 @@ object FormTCO: TFormTCO - Left = 333 - Top = 121 + Left = 205 + Top = 235 Width = 928 Height = 681 VertScrollBar.Visible = False @@ -481,6 +481,15 @@ object FormTCO: TFormTCO Text = 'EditCellY' OnKeyPress = EditCellYKeyPress end + object ButtonConfigTCO: TButton + Left = 576 + Top = 8 + Width = 113 + Height = 25 + Caption = 'Configuration TCO' + TabOrder = 10 + OnClick = ButtonConfigTCOClick + end object PopupMenu1: TPopupMenu Left = 352 Top = 472 diff --git a/UnitTCO.pas b/UnitTCO.pas index fd0b8aa..ab8e6e4 100644 --- a/UnitTCO.pas +++ b/UnitTCO.pas @@ -69,6 +69,7 @@ type EditCellX: TEdit; EditCellY: TEdit; Label19: TLabel; + ButtonConfigTCO: TButton; procedure FormCreate(Sender: TObject); procedure ImageTCOClick(Sender: TObject); procedure FormActivate(Sender: TObject); @@ -155,6 +156,7 @@ type Shift: TShiftState; X, Y: Integer); procedure EditCellXKeyPress(Sender: TObject; var Key: Char); procedure EditCellYKeyPress(Sender: TObject; var Key: Char); + procedure ButtonConfigTCOClick(Sender: TObject); private { Déclarations privées } @@ -189,6 +191,8 @@ procedure construit_TCO; implementation +uses UnitConfigTCO; + {$R *.dfm} @@ -1633,4 +1637,11 @@ begin end; +procedure TFormTCO.ButtonConfigTCOClick(Sender: TObject); +begin + TformconfigTCO.create(self); + formconfigTCO.showmodal; + formconfigTCO.close; +end; + end. diff --git a/verif_version.dcu b/verif_version.dcu index 95c665f6cc6172147d3ec1f537392056a1c58ac6..d32beed49b3fb247891378b17ee67275727d81c2 100644 GIT binary patch delta 1509 zcmY*ZZ%A8L6uDrvC;L8V#O&6Nu4){VlD+O0w})}f-K zE-H0QY(Tk_EguS#k%GuRhzzVyDBG7Y+D^*$t*}2|CbVA)It*ysxz|5!1LyZU=XZbi zoSXX|Z|d~o=_7wKR=!xxSYLW@_DC4tN)Il*dZDyLOAYrAF#3s!(t?;Qd#~(cqjTu; zr8A%O4_qGlrfvCgStWnvVejym4fZbmH1f7IC6mjVsd3=JWlzOf?k<3raqp)1(AUhf zV#Zg=bK#I-2jiX-z z(}Xt|=YG)|?2Ry*xVQd>JDb{Ce7ui@nO&hG9<)1@2YFUziFu7g2yTcl@G+jsm2 z(v=R%b_X}ETojId;^@@_edXps_9U>fF4A_G3o&gsidFjwPm0@Bb%eiFRlCCUFPg-E zRmYYCq3hhrBhxp5@l9}e0SsapCf^i`;Xk@I;Z2^!7|-GB+%R~pp%=(ofEwj%YtSn& z0G#Z^dlu1O2DUE=x|H?6lu&@hiXtyV6EJtb|tWeC$OI1_rRJ%nFq`O(K+zf zf(3q{>q}ragktchi83EVWar4ssR^BGppll!x~7CdvcQuWVf~so2?Hb0E9leiRyD?l9le z)%=$iYG^}1ZC;?ekhl2!d;z!xtrVx|Mm;d`qRpl)CM$BbD+q~5^b-G3Ohjuk^d1587XW|- z3gltIEWL?Z$S%bK=)mlpEF+;fl?JfTj`TNhBy4g?Y^{*kRjJUD*d10Fm3THT@mxaU zK%>GIg~ufhom30M?Xvj1Q{wfM#4pZB9D7^hM32N@#5=L-%&%#g-@m4CP~yW8iEE<@ z#}!UWd^DwSRwA2|Sc?BlrMW8vjOpgn-I^jg8>A zR!rkv7nRRkRJQ2FQB3RlDBjhjrc2E&HMi8FntvzbeYnY?Gqg7@1f;62j{v6E~kb>y|n9c9oi(OHC_u$tyKySO2W> ziD!Nsotrno+^0*W8}W`reAVkw1^isUYSa!2X9=nmQN1ZAy`A-0)Z34~o|+t=dSiSl zba4PHV;8Qbq1%UZeQ-)mRN+u#T0k{fHk$@E#Is>toNX*m@b5m)5h zK)`>8a+ij8AEz(w?(OfNTXJv6-GJG=b=W4qP4QfE_qOh+bUvRTwLi0Uen`G#K41U# zLHySIf%?mT>!Hk=A+adGG~1n&O;?XxZivW#&F@5978_cKe>60yK^|>w@Y&Vl!HXhL zKtBseH=pgNfaXYOK7Hn%(@+`>r~=5{c<2US`Y4RBS9JvziZs%&Yo?*Zze6{tr64dFnOEFXzS z1C`urCw%f##t?ZvlJ_q zLs-mEuvm_vwd_%psR3MoxUP7-DJ*I!9L4es(#%r0g4zs$+_