This commit is contained in:
f1iwq2
2023-04-28 17:51:49 +02:00
parent fe50853e84
commit f8e7aad9aa
11 changed files with 1483 additions and 373 deletions
+108 -17
View File
@@ -1,8 +1,6 @@
object FormAnalyseCDM: TFormAnalyseCDM
Left = 216
Top = 23
Hint = '(aiguillages uniquement)'
Anchors = [akLeft, akTop, akRight, akBottom]
Left = 154
Top = 36
AutoScroll = False
Caption = 'FormAnalyseCDM'
ClientHeight = 660
@@ -14,7 +12,6 @@ object FormAnalyseCDM: TFormAnalyseCDM
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
ShowHint = True
OnCreate = FormCreate
OnResize = FormResize
DesignSize = (
@@ -26,7 +23,7 @@ object FormAnalyseCDM: TFormAnalyseCDM
Left = 8
Top = 16
Width = 977
Height = 553
Height = 537
HorzScrollBar.Tracking = True
Anchors = [akLeft, akTop, akRight, akBottom]
AutoScroll = False
@@ -42,15 +39,15 @@ object FormAnalyseCDM: TFormAnalyseCDM
end
object GroupBox1: TGroupBox
Left = 16
Top = 576
Width = 457
Height = 73
Top = 560
Width = 257
Height = 89
Anchors = [akLeft, akBottom]
Caption = 'Affichages '
TabOrder = 1
object Label1: TLabel
Left = 216
Top = 16
Left = 24
Top = 56
Width = 81
Height = 13
Caption = 'Afficher le port n'#176
@@ -60,7 +57,10 @@ object FormAnalyseCDM: TFormAnalyseCDM
Top = 16
Width = 97
Height = 17
Hint = 'Points de connexions des ports des d'#233'tecteurs et des actionneurs'
Caption = 'Connexions'
ParentShowHint = False
ShowHint = True
TabOrder = 0
OnClick = CheckConnexionsClick
end
@@ -69,7 +69,10 @@ object FormAnalyseCDM: TFormAnalyseCDM
Top = 32
Width = 97
Height = 17
Hint = 'Adresses des d'#233'tecteurs et actionneurs'
Caption = 'Adresses'
ParentShowHint = False
ShowHint = True
TabOrder = 1
OnClick = CheckAdressesClick
end
@@ -77,7 +80,7 @@ object FormAnalyseCDM: TFormAnalyseCDM
Left = 112
Top = 16
Width = 81
Height = 17
Height = 25
Caption = 'segments'
TabOrder = 2
OnClick = CheckSegmentsClick
@@ -87,20 +90,23 @@ object FormAnalyseCDM: TFormAnalyseCDM
Top = 32
Width = 121
Height = 17
Hint = 'Affiche le num'#233'ro de segment et le port de CDM'
Caption = 'Ports'
ParentShowHint = False
ShowHint = True
TabOrder = 3
OnClick = CheckSegmentsClick
OnClick = CheckPortsClick
end
object EditPort: TEdit
Left = 304
Top = 16
Left = 112
Top = 56
Width = 57
Height = 21
TabOrder = 4
end
object ButtonAffPort: TButton
Left = 368
Top = 16
Left = 176
Top = 56
Width = 73
Height = 25
Caption = 'Afficher le port'
@@ -121,4 +127,89 @@ object FormAnalyseCDM: TFormAnalyseCDM
TabOrder = 2
OnChange = TrackBar1Change
end
object GroupBox2: TGroupBox
Left = 280
Top = 560
Width = 145
Height = 89
Anchors = [akLeft, akBottom]
Caption = 'Strat'#233'gies d'#39'importation'
TabOrder = 3
object CheckDebugAnalyse: TCheckBox
Left = 16
Top = 24
Width = 121
Height = 17
Caption = 'Debug importation'
TabOrder = 0
OnClick = CheckDebugAnalyseClick
end
object CheckDebugBranches: TCheckBox
Left = 16
Top = 48
Width = 97
Height = 17
Caption = 'Debug branches'
TabOrder = 1
OnClick = CheckDebugBranchesClick
end
end
object GroupBox3: TGroupBox
Left = 432
Top = 560
Width = 537
Height = 89
Anchors = [akLeft, akBottom]
Caption = 'Param'#232'tres'
TabOrder = 4
DesignSize = (
537
89)
object ButtonImporter: TButton
Left = 382
Top = 40
Width = 75
Height = 25
Hint = 'Lancement de l'#39'importation'
Anchors = [akLeft, akBottom]
Caption = 'Importer'
ParentShowHint = False
ShowHint = True
TabOrder = 0
OnClick = ButtonImporterClick
end
object RadioGroup1: TRadioGroup
Left = 8
Top = 24
Width = 305
Height = 57
Caption = 'Adressage des croisements'
TabOrder = 1
end
object RadioCroisSuite: TRadioButton
Left = 24
Top = 40
Width = 217
Height = 17
Caption = 'Croisements '#224' la suite des aiguillages'
TabOrder = 2
end
object RadioCroisBase: TRadioButton
Left = 24
Top = 56
Width = 217
Height = 17
Caption = 'Croisements '#224' partir de l'#39'adresse de base'
TabOrder = 3
end
object EditBaseCrois: TEdit
Left = 240
Top = 54
Width = 41
Height = 21
TabOrder = 4
Text = '100'
OnChange = EditBaseCroisChange
end
end
end
+1272 -260
View File
File diff suppressed because it is too large Load Diff
+15 -2
View File
@@ -1571,7 +1571,7 @@ object FormConfig: TFormConfig
Top = 8
Width = 633
Height = 505
ActivePage = TabSheetSig
ActivePage = TabSheetAig
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
@@ -2925,6 +2925,7 @@ object FormConfig: TFormConfig
Lines.Strings = (
'RichBranche')
ParentFont = False
PopupMenu = PopupMenuConfig
ScrollBars = ssBoth
TabOrder = 1
WordWrap = False
@@ -3128,7 +3129,7 @@ object FormConfig: TFormConfig
Width = 129
Height = 21
Style = csDropDownList
ItemHeight = 13
ItemHeight = 0
TabOrder = 1
OnChange = ComboBoxDecChange
end
@@ -4836,4 +4837,16 @@ object FormConfig: TFormConfig
Left = 668
Top = 468
end
object PopupMenuConfig: TPopupMenu
Left = 728
Top = 88
object Copier1: TMenuItem
Caption = 'Copier'
OnClick = Copier1Click
end
object Coller1: TMenuItem
Caption = 'Coller'
OnClick = Coller1Click
end
end
end
+74 -37
View File
@@ -5,7 +5,8 @@ interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls , jpeg, ComCtrls ,StrUtils, Unitprinc,
MMSystem, Buttons , UnitPareFeu, verif_version;
MMSystem, Buttons , UnitPareFeu, verif_version,
Menus;
type
TFormConfig = class(TForm)
@@ -333,6 +334,9 @@ type
EditZdet1V5O: TEdit;
EditZdet2V5O: TEdit;
Label60: TLabel;
PopupMenuConfig: TPopupMenu;
Copier1: TMenuItem;
Coller1: TMenuItem;
procedure ButtonAppliquerEtFermerClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
@@ -489,6 +493,8 @@ type
procedure EditZdet2V5OChange(Sender: TObject);
procedure EditLAYChange(Sender: TObject);
procedure EditLAYExit(Sender: TObject);
procedure Copier1Click(Sender: TObject);
procedure Coller1Click(Sender: TObject);
private
{ Déclarations privées }
public
@@ -573,6 +579,8 @@ Procedure aff_champs_sig_feux(index : integer);
function verif_coherence : boolean;
function compile_branche(s : string;i : integer) : boolean;
function encode_sig_feux(i : integer): string;
procedure valide_branches;
procedure trier_aig;
implementation
@@ -2786,6 +2794,7 @@ begin
begin
trouve_section_aig:=true;
compile_aiguillages;
trier_aig;
end;
// section branche
@@ -4679,6 +4688,7 @@ begin
if index=0 then exit;
aiguillage[index].Adroit:=adr;
aiguillage[index].AdroitB:=B;
LabelInfo.caption:='Modification de la TJD homologe ('+IntToSTR(adr2)+')';
end;
// TJD2
if aiguillage[index].EtatTJD=2 then
@@ -4689,7 +4699,6 @@ begin
s:=encode_aig(index);
formconfig.RichAig.Lines[index-1]:=s;
RE_ColorLine(Formconfig.RichAig,index-1,ClWhite);
LabelInfo.caption:='Modification de la TJD homologe ('+IntToSTR(adr2)+')';
end;
if modele=crois then
@@ -6318,6 +6327,26 @@ begin
config_modifie:=true;
end;
// trie les aiguillages
procedure trier_aig;
var i,j : integer;
temp : TAiguillage;
begin
for i:=1 to MaxAiguillage do
begin
for j:=i+1 to MaxAiguillage do
begin
if aiguillage[i].Adresse>aiguillage[j].adresse then
begin
temp:=aiguillage[i];
aiguillage[i]:=aiguillage[j];
aiguillage[j]:=temp;
end;
end;
end;
end;
procedure supprime_act;
var i,debut,longueur,fin,ltot,lignedeb,lignefin,l : integer;
s: string;
@@ -6811,7 +6840,7 @@ begin
end;
end;
adr:=aiguillage[Indexaig].Adroit;
if (aiguillage[Indexaig].AdroitB='Z') then
if (aiguillage[Indexaig].AdroitB='Z') or (aiguillage[Indexaig].AdroitB=#0) then
begin
trouve_detecteur(adr);
if IndexBranche_trouve=0 then
@@ -6821,7 +6850,7 @@ begin
end;
end;
adr:=aiguillage[Indexaig].Adevie;
if (aiguillage[Indexaig].AdevieB='Z') then
if (aiguillage[Indexaig].AdevieB='Z') or (aiguillage[Indexaig].AdevieB=#0) then
begin
trouve_detecteur(adr);
if IndexBranche_trouve=0 then
@@ -6831,7 +6860,7 @@ begin
end;
end;
adr:=aiguillage[Indexaig].Apointe;
if ((aiguillage[Indexaig].ApointeB='Z') and (aiguillage[Indexaig].modele=aig)) then
if ( ((aiguillage[Indexaig].ApointeB='Z') or (aiguillage[Indexaig].ApointeB=#0)) and (aiguillage[Indexaig].modele=aig) ) then
begin
trouve_detecteur(adr);
if IndexBranche_trouve=0 then
@@ -6842,7 +6871,7 @@ begin
end;
if (aiguillage[Indexaig].modele=triple) then // aiguillage triple
begin
if (aiguillage[Indexaig].Adevie2B='Z') then
if (aiguillage[Indexaig].Adevie2B='Z') or (aiguillage[Indexaig].Adevie2B=#0) then
begin
adr:=aiguillage[Indexaig].Adevie2;
trouve_detecteur(adr);
@@ -7144,9 +7173,9 @@ begin
end;
// on ne vérifie pas les tjd tjs crois
if (model<>tjd) and (model<>tjd) and (model<>crois) then
if (model<>tjd) and (model<>tjd) and (model<>crois) then
begin
adr2:=aiguillage[indexaig].ADroit; // adresse de ce qui est connecté sur la position droite
c:=aiguillage[indexaig].AdroitB;
if (c='D') or (c='S') or (c='P') then
@@ -7154,12 +7183,6 @@ begin
if adr2=adr then affiche('Erreur 10.0 : la position droite de l''aiguillage '+intToSTR(adr)+' pointe sur elle même',clred);
index2:=Index_aig(adr2); // adresse de l'aiguillage connecté
model2:=aiguillage[index2].modele; // modèle de l'aiguillage connecté
if index2=0 then
begin
ok:=false;
Affiche('Erreur 10.20: aiguillage '+intToSTR(adr)+': déclaration d''un aiguillage '+IntToSTR(adr2)+' inexistant',clred);
end
else
begin
// tjs ou tjs à 2 états ou croisement
if ( ((model2=tjs) or (model2=tjd)) and (aiguillage[index2].EtatTJD=2) ) or (model2=crois) then
@@ -7167,11 +7190,11 @@ begin
if (adr<>aiguillage[index2].Adevie) and (adr<>aiguillage[index2].ADroit) and
(adr<>aiguillage[index2].DDevie) and (adr<>aiguillage[index2].Ddroit) then
begin
Affiche('Erreur 10.21: Discordance de déclaration aiguillages '+intToSTR(adr)+': '+intToSTR(adr2),clred);
Affiche('Erreur 10.21: Discordance de déclaration aiguillages '+intToSTR(adr)+': '+intToSTR(adr2),clred);
ok:=false;
end;
end;
end;
// tjs ou tjs à 4 états
if (((model2=tjs) or (model2=tjd)) and (aiguillage[index2].EtatTJD=4)) then
begin
@@ -7180,7 +7203,7 @@ begin
if (adr<>aiguillage[index2].Adevie) and (adr<>aiguillage[index2].ADroit) and
(adr<>aiguillage[index3].ADevie) and (adr<>aiguillage[index3].Adroit) then
begin
Affiche('Erreur 10.22: Discordance de déclaration aiguillages '+intToSTR(adr)+': '+intToSTR(adr2),clred);
Affiche('Erreur 10.22: Discordance de déclaration aiguillages '+intToSTR(adr)+': '+intToSTR(adr2),clred);
ok:=false;
end;
end;
@@ -7205,7 +7228,7 @@ begin
end;
end;
end;
adr2:=aiguillage[indexaig].Adevie; // adresse de ce qui est connecté sur la position déviée
c:=aiguillage[indexaig].AdevieB;
if (c='D') or (c='S') or (c='P') then
@@ -7272,12 +7295,6 @@ begin
if adr2=adr then affiche('Erreur 10.2 : la pointe de l''aiguillage '+intToSTR(adr)+' pointe sur elle même',clred);
index2:=Index_aig(adr2); // adresse de l'aiguillage connecté
model2:=aiguillage[index2].modele; // modèle de l'aiguillage connecté
if index2=0 then
begin
ok:=false;
Affiche('Erreur 10.40: aiguillage '+intToSTR(adr)+': déclaration d''un aiguillage '+IntToSTR(adr2)+' inexistant',clred);
end
else
begin
// tjs ou tjs à 2 états ou croisement
if (((model2=tjs) or (model2=tjd)) and (aiguillage[index2].EtatTJD=2)) or (model2=crois) then
@@ -8104,7 +8121,7 @@ begin
end;
procedure TFormConfig.ButtonValLigneClick(Sender: TObject);
procedure valide_branches;
var s: string;
ligne,esp : integer;
ok : boolean;
@@ -8112,7 +8129,7 @@ begin
ligne:=1;
ok:=true;
repeat
s:=AnsiUpperCase(RichBranche.Lines[ligne-1]);
s:=AnsiUpperCase(formConfig.RichBranche.Lines[ligne-1]);
if s<>'' then
begin
// supprime les espaces éventuels
@@ -8122,24 +8139,24 @@ begin
until esp=0;
if s<>'' then
begin
RichBranche.Lines[ligne-1]:=s;
formConfig.RichBranche.Lines[ligne-1]:=s;
branche[ligne]:=s; // stocker la ligne dans la branche pour la compiler
if compile_branche(s,ligne) then
begin
RE_ColorLine(RichBranche,Ligne-1,ClLime);
RE_ColorLine(FormConfig.RichBranche,Ligne-1,ClLime);
end
else
begin
RE_ColorLine(RichBranche,Ligne-1,ClRed);
RE_ColorLine(FormConfig.RichBranche,Ligne-1,ClRed);
ok:=false;
end;
inc(ligne);
end
else RichBranche.Lines.Delete(ligne-1);
else FormConfig.RichBranche.Lines.Delete(ligne-1);
end
else RichBranche.Lines.Delete(ligne-1);
else FormConfig.RichBranche.Lines.Delete(ligne-1);
until (ligne>RichBranche.Lines.count) or (ligne>=MaxBranches);
until (ligne>FormConfig.RichBranche.Lines.count) or (ligne>=MaxBranches);
NbreBranches:=ligne-1;
if ligne>=MaxBranches then Affiche('Nombre maximal de branches atteint',clRed);
@@ -8147,16 +8164,21 @@ begin
if ligne<>0 then
begin
ok:=false;
RE_ColorLine(RichBranche,Ligne-1,ClRed);
end;
RE_ColorLine(FormConfig.RichBranche,Ligne-1,ClRed);
end;
if ok then
begin
labelResult.Caption:='Syntaxe correcte';
FormConfig.labelResult.Caption:='Syntaxe correcte';
config_modifie:=true;
modif_branches:=false;
end
else labelResult.Caption:='Erreur de syntaxe';
else FormConfig.labelResult.Caption:='Erreur de syntaxe';
end;
procedure TFormConfig.ButtonValLigneClick(Sender: TObject);
begin
valide_branches;
end;
function virgule_suiv(sl : string;o : integer) : integer;
@@ -10147,6 +10169,21 @@ procedure TFormConfig.EditLAYExit(Sender: TObject);
LabelInfo.caption:='';
end;
procedure TFormConfig.Copier1Click(Sender: TObject);
begin
RichBranche.CopyToClipboard;
RichBranche.SetFocus;
end;
procedure TFormConfig.Coller1Click(Sender: TObject);
begin
With RichBranche do
begin
PasteFromClipboard;
SetFocus;
end;
end;
end.
-16
View File
@@ -482,22 +482,6 @@ object FormDebug: TFormDebug
TabOrder = 10
OnClick = CheckDetSIgClick
end
object CheckImporteCDM: TCheckBox
Left = 256
Top = 96
Width = 129
Height = 17
Alignment = taLeftJustify
Caption = 'Importation CDM Rail'
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
TabOrder = 11
OnClick = CheckImporteCDMClick
end
end
object RichDebug: TRichEdit
Left = 8
+4 -7
View File
@@ -63,7 +63,6 @@ type
Button0: TButton;
MemoEvtDet: TRichEdit;
CheckDetSIg: TCheckBox;
CheckImporteCDM: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure ButtonEcrLogClick(Sender: TObject);
procedure EditNivDebugKeyPress(Sender: TObject; var Key: Char);
@@ -102,7 +101,6 @@ type
procedure FormActivate(Sender: TObject);
procedure MemoEvtDetChange(Sender: TObject);
procedure CheckDetSIgClick(Sender: TObject);
procedure CheckImporteCDMClick(Sender: TObject);
private
{ Déclarations privées }
public
@@ -112,7 +110,7 @@ type
var
FormDebug: TFormDebug;
NivDebug,signalDebug,compt_erreur,positionErreur,LigneErreur : integer;
AffSignal,AffAffect,initform,AffFD,debug_dec_sig,debugTCO,DebugAffiche,AFfDetSIg,debugAnalyse : boolean;
AffSignal,AffAffect,initform,AffFD,debug_dec_sig,debugTCO,DebugAffiche,AFfDetSIg : boolean;
N_event_det : integer; // index du dernier évènement (de 1 à 20)
N_Event_tick : integer ; // dernier index
@@ -627,9 +625,8 @@ begin
AFfDetSIg:=checkDetSig.checked;
end;
procedure TFormDebug.CheckImporteCDMClick(Sender: TObject);
begin
debugAnalyse:=checkImporteCDM.checked;
end;
end.
+2 -11
View File
@@ -1,6 +1,6 @@
object FormPrinc: TFormPrinc
Left = 68
Top = 194
Left = 86
Top = 188
Width = 1227
Height = 671
Caption = 'Signaux complexes'
@@ -1387,15 +1387,6 @@ object FormPrinc: TFormPrinc
WordWrap = True
OnClick = ButtonAffAnalyseCDMClick
end
object Button2: TButton
Left = 48
Top = 96
Width = 75
Height = 25
Caption = 'Button2'
TabOrder = 7
OnClick = Button2Click
end
end
object StaticText: TStaticText
Left = 16
+7 -22
View File
@@ -168,7 +168,6 @@ type
Analyser1: TMenuItem;
Coller1: TMenuItem;
ButtonAffAnalyseCDM: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure MSCommUSBLenzComm(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
@@ -251,8 +250,7 @@ type
procedure Analyser1Click(Sender: TObject);
procedure Coller1Click(Sender: TObject);
procedure ButtonAffAnalyseCDMClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
private
{ Déclarations privées }
procedure DoHint(Sender : Tobject);
public
@@ -310,7 +308,7 @@ Taccessoire = (aigP,feu); // aiguillage ou feu
TEquipement = (rien,aig,tjd,tjs,triple,det,buttoir,voie,crois,act); // voie uniquement pour le tco
TBranche = record
BType : Tequipement ; // ne prend que les valeurs suivantes: dét aig Buttoir
Adresse : integer ; // adresse du détecteur ou de l'aiguillage
Adresse : integer ; // adresse du détecteur ou de l'aiguillage
end;
Taiguillage = record
@@ -13905,6 +13903,9 @@ begin
Affiche('Cela ouvre une fenêtre DEBUG dans cdm',clLime);
Affiche('Dans cette fenêtre, faire Clic droit puis "sélectionner tout" et "copier"',clLime);
Affiche('Dans Signaux complexes, clic droit et "coller ; puis menu divers / Analyse des modules ',clLime);
Affiche('Dans la fenêtre graphique d''importation cliquer sur importer',clLime);
Affiche('Attention : nécessite la version >=23.05 de CDM',clLime);
if lance_cdm(false) then
begin
@@ -13960,27 +13961,11 @@ end;
procedure TFormPrinc.ButtonAffAnalyseCDMClick(Sender: TObject);
begin
FormAnalyseCDM.WindowState:=wsMaximized;
formAnalyseCDM.Show;
end;
procedure TFormPrinc.Button2Click(Sender: TObject);
var i : integer;
begin
i:=index_aig(26);
Affiche(intToSTR(aiguillage[i].ADroit)+aiguillage[i].AdroitB,clred);
Affiche(intToSTR(aiguillage[i].ADevie)+aiguillage[i].AdevieB,clred);
Affiche(intToSTR(aiguillage[i].DDroit)+aiguillage[i].DDroitB,clred);
Affiche(intToSTR(aiguillage[i].Ddevie)+aiguillage[i].DdevieB,clred);
i:=index_aig(28);
Affiche(intToSTR(aiguillage[i].ADroit)+aiguillage[i].AdroitB,clorange);
Affiche(intToSTR(aiguillage[i].ADevie)+aiguillage[i].AdevieB,clorange);
Affiche(intToSTR(aiguillage[i].DDroit)+aiguillage[i].DDroitB,clorange);
Affiche(intToSTR(aiguillage[i].Ddevie)+aiguillage[i].DDevieB,clorange);
end;
end.
Binary file not shown.
+1 -1
View File
@@ -163,5 +163,5 @@ version 5.74 : Correction bug cr
Nouvel installeur-> Signaux complexes s'installe dans c:\programmes\signaux_complexes.
avec un raccourci sur le bureau.
version 6.0 : Gestion du décodeur de signaux Arcomora.
Importation des aiguillages depuis CDM Rail.
Importation des aiguillages et des branches depuis CDM Rail.
Nécessite la version >=23.04 de CDM rail.