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