This commit is contained in:
f1iwq2
2020-05-01 16:03:39 +02:00
parent b4cff8de0b
commit ee3872d8a4
21 changed files with 1353 additions and 846 deletions
Binary file not shown.
BIN
View File
Binary file not shown.
+464 -194
View File
@@ -1,13 +1,13 @@
object FormConfig: TFormConfig
Left = 318
Top = 157
Left = 250
Top = 200
Hint =
'Modifie les fichiers de configuration selon les s'#233'lections chois' +
'ies'
BorderStyle = bsDialog
Caption = 'Configuration g'#233'n'#233'rale'
ClientHeight = 644
ClientWidth = 592
ClientHeight = 472
ClientWidth = 858
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
@@ -17,6 +17,7 @@ object FormConfig: TFormConfig
OldCreateOrder = False
Position = poScreenCenter
OnActivate = FormActivate
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object LabelInfo: TLabel
@@ -33,9 +34,9 @@ object FormConfig: TFormConfig
WordWrap = True
end
object Image1: TImage
Left = 304
Top = 392
Width = 257
Left = 600
Top = 128
Width = 249
Height = 177
Picture.Data = {
0A544A504547496D6167655BA20000FFD8FFE000104A46494600010101006000
@@ -1340,6 +1341,54 @@ object FormConfig: TFormConfig
8ACBD9799A732EC7FFD9}
Stretch = True
end
object Label11: TLabel
Left = 600
Top = 32
Width = 244
Height = 31
Caption = 'Signaux complexes GL'
Font.Charset = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -27
Font.Name = 'Arial Narrow'
Font.Style = [fsBold, fsItalic]
ParentFont = False
end
object ButtonAppliquerEtFermer: TButton
Left = 384
Top = 440
Width = 201
Height = 25
Caption = 'Enregistrer la configuration et Fermer'
ParentShowHint = False
ShowHint = True
TabOrder = 0
OnClick = ButtonAppliquerEtFermerClick
end
object Button2: TButton
Left = 24
Top = 440
Width = 201
Height = 25
Caption = 'Fermer sans enregistrer la configuration'
TabOrder = 1
OnClick = Button2Click
end
object PageControl: TPageControl
Left = 8
Top = 8
Width = 585
Height = 417
ActivePage = TabSheetAutonome
Font.Charset = DEFAULT_CHARSET
Font.Color = clBackground
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
TabOrder = 2
object TabSheetCDM: TTabSheet
Caption = 'CDM Rail'
object GroupBox1: TGroupBox
Left = 8
Top = 8
@@ -1380,193 +1429,13 @@ object FormConfig: TFormConfig
Text = 'EditPortCDM'
end
end
object GroupBox2: TGroupBox
Left = 288
Top = 8
Width = 297
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 = 56
Width = 128
Height = 13
Caption = 'Protocole s'#233'rie USB (COM)'
end
object Label4: TLabel
Left = 16
Top = 80
Width = 126
Height = 26
Caption = 'Temporisation d'#39'envoi des octets de la trame (ms)'
WordWrap = True
end
object Label5: TLabel
Left = 16
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 = 16
Top = 16
Width = 249
Height = 26
Caption = 'Ces param'#232'tres sont utilis'#233's en fonctionnement sans CDM Rail'
WordWrap = True
end
object EditcomUSB: TEdit
Left = 160
Top = 56
Width = 121
Height = 21
TabStop = False
TabOrder = 0
Text = 'EditcomUSB'
end
object EditTempoOctetUSB: TEdit
Left = 232
Top = 88
Width = 49
Height = 21
TabStop = False
TabOrder = 1
Text = 'EditTempoOctetUSB'
end
object EditTempoReponse: TEdit
Left = 232
Top = 120
Width = 49
Height = 21
TabStop = False
TabOrder = 2
Text = 'EditTempoReponse'
end
end
object ButtonAppliquerEtFermer: TButton
Left = 48
Top = 600
Width = 201
Height = 25
Caption = 'Enregistrer la configuration et Fermer'
ParentShowHint = False
ShowHint = True
TabOrder = 2
OnClick = ButtonAppliquerEtFermerClick
end
object GroupBox3: TGroupBox
Left = 288
Top = 280
Width = 297
Height = 105
Caption = 'Acc'#232's r'#233'seau '#224' l'#39'interface vers la centrale LENZ Ethernet'
TabOrder = 3
object Label7: TLabel
Left = 14
Top = 56
Width = 95
Height = 13
Caption = 'Adresse IP interface'
end
object Label8: TLabel
Left = 14
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 = 56
Width = 81
Height = 21
TabStop = False
TabOrder = 0
Text = 'EditIPLenz'
end
object EditportLenz: TEdit
Left = 176
Top = 80
Width = 81
Height = 21
TabStop = False
TabOrder = 1
Text = 'EditportLenz'
end
end
object GroupBox4: TGroupBox
Left = 288
Top = 168
Width = 297
Height = 105
Caption = 'Ent'#234'te des trames vers l'#39'interface'
TabOrder = 4
object Label14: TLabel
Left = 16
Top = 16
Width = 249
Height = 26
Caption = 'Ces param'#232'tres sont utilis'#233's en fonctionnement sans CDM Rail'
WordWrap = True
end
object RadioButton1: TRadioButton
Left = 8
Top = 48
Width = 225
Height = 17
Caption = 'Sans ent'#234'te (interfaces s'#233'rie)'
TabOrder = 0
end
object RadioButton2: TRadioButton
Left = 8
Top = 64
Width = 225
Height = 17
Caption = 'Ent'#234'te FF FE (interfaces natives USB)'
TabOrder = 1
end
object RadioButton3: TRadioButton
Left = 8
Top = 80
Width = 265
Height = 17
Caption = 'Ent'#234'te E4 - Suffixe 0D 0D 0A (arduino XpressNet)'
TabOrder = 2
end
end
object Button2: TButton
Left = 328
Top = 600
Width = 201
Height = 25
Caption = 'Fermer sans enregistrer la configuration'
TabOrder = 5
OnClick = Button2Click
end
object GroupBox5: TGroupBox
Left = 8
Top = 96
Width = 273
Height = 161
Caption = 'Au d'#233'marrage '
TabOrder = 6
TabOrder = 1
object Label13: TLabel
Left = 8
Top = 100
@@ -1620,12 +1489,12 @@ object FormConfig: TFormConfig
end
end
object GroupBox6: TGroupBox
Left = 8
Top = 264
Left = 296
Top = 8
Width = 273
Height = 169
Caption = 'Au d'#233'marrage de CDM Rail : interface '
TabOrder = 7
TabOrder = 2
object RadioButton4: TRadioButton
Left = 8
Top = 16
@@ -1700,12 +1569,12 @@ object FormConfig: TFormConfig
end
end
object GroupBox7: TGroupBox
Left = 8
Top = 440
Left = 296
Top = 184
Width = 273
Height = 145
Caption = 'Au d'#233'marrage de CDM Rail : interface de'
TabOrder = 8
TabOrder = 3
object Label10: TLabel
Left = 8
Top = 16
@@ -1762,4 +1631,405 @@ object FormConfig: TFormConfig
TabOrder = 5
end
end
object GroupBox8: TGroupBox
Left = 8
Top = 264
Width = 273
Height = 113
Caption = 'Services CommIP CDM Rail'
TabOrder = 4
object Label6: TLabel
Left = 8
Top = 18
Width = 215
Height = 13
Caption = 'Liste des '#233'v'#232'nements envoy'#233's par CDM Rail:'
end
object CheckBoxServAig: TCheckBox
Left = 8
Top = 40
Width = 113
Height = 17
Caption = 'Aiguillages'
TabOrder = 0
end
object CheckBoxServDet: TCheckBox
Left = 8
Top = 56
Width = 89
Height = 17
Caption = 'D'#233'tecteurs'
TabOrder = 1
end
object CheckBoxServAct: TCheckBox
Left = 8
Top = 72
Width = 81
Height = 17
Caption = 'Actionneurs'
TabOrder = 2
end
object CheckServPosTrains: TCheckBox
Left = 8
Top = 88
Width = 121
Height = 17
Caption = 'Position des trains'
TabOrder = 3
end
object CheckBoxSrvSig: TCheckBox
Left = 144
Top = 40
Width = 113
Height = 17
Caption = 'Signaux'
TabOrder = 4
end
end
end
object TabSheetAutonome: TTabSheet
Caption = 'Mode autonome'
ImageIndex = 1
object Label9: TLabel
Left = 0
Top = 368
Width = 305
Height = 18
Caption = 'Ces param'#232'tres sont utilis'#233's en fonctionnement sans CDM Rail'
WordWrap = True
end
object GroupBox2: TGroupBox
Left = 8
Top = 8
Width = 297
Height = 129
Caption = 'Acc'#232's USB - S'#233'rie '#224' l'#39'interface vers la centrale LENZ'
TabOrder = 0
object Label3: TLabel
Left = 16
Top = 24
Width = 140
Height = 13
Caption = '1. Protocole s'#233'rie USB (COM)'
end
object Label4: TLabel
Left = 16
Top = 48
Width = 126
Height = 26
Caption = '2. Temporisation d'#39'envoi des octets de la trame (ms)'
WordWrap = True
end
object Label5: TLabel
Left = 16
Top = 88
Width = 152
Height = 26
Caption =
'3. Temporisation d'#39'attente de la r'#233'ponse de l'#39'interface (x 100 m' +
's)'
WordWrap = True
end
object EditcomUSB: TEdit
Left = 160
Top = 24
Width = 121
Height = 21
TabStop = False
TabOrder = 0
Text = 'EditcomUSB'
end
object EditTempoOctetUSB: TEdit
Left = 232
Top = 56
Width = 49
Height = 21
TabStop = False
TabOrder = 1
Text = 'EditTempoOctetUSB'
end
object EditTempoReponse: TEdit
Left = 232
Top = 88
Width = 49
Height = 21
TabStop = False
TabOrder = 2
Text = 'EditTempoReponse'
end
end
object GroupBox4: TGroupBox
Left = 8
Top = 144
Width = 297
Height = 81
Caption = '4. Ent'#234'te des trames vers l'#39'interface'
TabOrder = 1
object RadioButton1: TRadioButton
Left = 8
Top = 24
Width = 225
Height = 17
Caption = '0 : Sans ent'#234'te (interfaces s'#233'rie)'
TabOrder = 0
end
object RadioButton2: TRadioButton
Left = 8
Top = 40
Width = 225
Height = 17
Caption = '1 : Ent'#234'te FF FE (interfaces natives USB)'
TabOrder = 1
end
object RadioButton3: TRadioButton
Left = 8
Top = 56
Width = 265
Height = 17
Caption = '2 : Ent'#234'te E4 - Suffixe 0D 0D 0A (arduino XpressNet)'
TabOrder = 2
end
end
object GroupBox3: TGroupBox
Left = 8
Top = 232
Width = 297
Height = 73
Caption = 'Acc'#232's r'#233'seau '#224' l'#39'interface vers la centrale LENZ Ethernet'
TabOrder = 2
object Label7: TLabel
Left = 14
Top = 24
Width = 95
Height = 13
Caption = 'Adresse IP interface'
end
object Label8: TLabel
Left = 14
Top = 50
Width = 82
Height = 13
Caption = 'Port de l'#39'interface'
end
object EditIPLenz: TEdit
Left = 176
Top = 24
Width = 81
Height = 21
TabStop = False
TabOrder = 0
Text = 'EditIPLenz'
end
object EditportLenz: TEdit
Left = 176
Top = 48
Width = 81
Height = 21
TabStop = False
TabOrder = 1
Text = 'EditportLenz'
end
end
object Memo1: TMemo
Left = 312
Top = 8
Width = 257
Height = 97
BevelInner = bvLowered
BevelKind = bkFlat
BorderStyle = bsNone
Lines.Strings = (
'1. Port COM de l'#39'adresse USB de l'#39'interface LI-USB - '
'LI100 - LI100F - LI101F - GENLI.'
'Attention de COM1 '#224' 9 - Si le port de l'#39'interface '
'USB>9, il faut le changer manuellement dans le '
'gestionnaire des p'#233'riph'#233'riques. Mettre 0 si inutilis'#233'e. '
'Le programme ne tentera pas de se connecter '#224' la '
'centrale si CDM rail est d'#233'tect'#233'.')
ReadOnly = True
TabOrder = 3
end
object Memo2: TMemo
Left = 312
Top = 112
Width = 257
Height = 97
BevelInner = bvLowered
BevelKind = bkFlat
BorderStyle = bsNone
Lines.Strings = (
'2. Valeur de temporisation entre deux octets '
'transf'#233'r'#233's '#224' l'#39'interface. Elle peut '#234'tre nulle. Pour '
'les interfaces s'#233'rie sans protocole (0) comme le '
'GENLI, il est conseill'#233' de la positionner '#224' une '
'valeur de l'#39'ordre de 30 (ms). Pour les interfaces avec '
'protocole mat'#233'riel RTS-CTS (2) cette '
'variable est ignor'#233'e.')
ReadOnly = True
TabOrder = 4
end
object Memo3: TMemo
Left = 312
Top = 216
Width = 257
Height = 89
BevelInner = bvLowered
BevelKind = bkFlat
BorderStyle = bsNone
Lines.Strings = (
'3. Valeur maximale par tranche de 100 ms qui d'#233'finit '
'le temps d'#39'attente de la r'#233'ponse de l'#39'interface apr'#232's '
'une trame qui lui est transf'#233'r'#233'e. Cette valeur est '#224' '
'tester en fonction de votre interface. En cas de '
'd'#233'passement de la valeur, un message '#171' pas de '
'r'#233'ponse de l'#39'interface '#187' sera affich'#233'.')
ReadOnly = True
TabOrder = 5
end
object Memo4: TMemo
Left = 312
Top = 312
Width = 257
Height = 73
BevelInner = bvLowered
BevelKind = bkFlat
BorderStyle = bsNone
Lines.Strings = (
'4. Pour l'#39'utilisation d'#39'interfaces s'#233'rie (GENLI), cette '
'valeur doit '#234'tre '#224' 0. Pour les interfaces utilisant '
'nativement de l'#39'USB, cette valeur doit '#234'tre '#224' 1. La '
'valeur 2 est utilis'#233'e exclusivement pour des '
'interfaces '#224' base d'#39'arduino pour xpressnet.')
ReadOnly = True
TabOrder = 6
end
object GroupBox9: TGroupBox
Left = 8
Top = 312
Width = 297
Height = 41
Caption = 'Divers'
TabOrder = 7
object CheckBoxRazSignaux: TCheckBox
Left = 8
Top = 16
Width = 177
Height = 17
Hint = 'Envoie un 0 apr'#232's chaque commande sur un signal au d'#233'codeur'
Caption = 'Raz signaux apr'#232's commande'
ParentShowHint = False
ShowHint = True
TabOrder = 0
end
end
end
object TabSheet1: TTabSheet
Caption = 'Aiguillages'
ImageIndex = 2
object Label12: TLabel
Left = 0
Top = 8
Width = 266
Height = 13
Caption = 'Liste de mod'#233'lisation des aiguillages du fichier config.cfg'
end
object MemoAig: TMemo
Left = 0
Top = 24
Width = 569
Height = 361
Color = clInfoText
Font.Charset = DEFAULT_CHARSET
Font.Color = clAqua
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
ReadOnly = True
ScrollBars = ssVertical
TabOrder = 0
end
end
object TabSheet2: TTabSheet
Caption = 'Branches'
ImageIndex = 3
object Label14: TLabel
Left = 0
Top = 8
Width = 261
Height = 13
Caption = 'Liste de mod'#233'lisation des branches du fichier config.cfg'
end
object MemoBranches: TMemo
Left = 0
Top = 24
Width = 569
Height = 361
Color = clInfoText
Font.Charset = DEFAULT_CHARSET
Font.Color = clAqua
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
ReadOnly = True
ScrollBars = ssVertical
TabOrder = 0
end
end
object TabSheet3: TTabSheet
Caption = 'Signaux'
ImageIndex = 4
object Label15: TLabel
Left = 0
Top = 8
Width = 253
Height = 13
Caption = 'Liste de mod'#233'lisation des signaux du fichier config.cfg'
end
object MemoSignaux: TMemo
Left = 0
Top = 24
Width = 569
Height = 361
Color = clInfoText
Font.Charset = DEFAULT_CHARSET
Font.Color = clAqua
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
ReadOnly = True
ScrollBars = ssVertical
TabOrder = 0
end
end
object TabSheet4: TTabSheet
Caption = 'Actionneurs'
ImageIndex = 5
object Label16: TLabel
Left = 0
Top = 8
Width = 272
Height = 13
Caption = 'Liste de mod'#233'lisation des actionneurs du fichier config.cfg'
end
object MemoAct: TMemo
Left = 0
Top = 24
Width = 569
Height = 361
Color = clInfoText
Font.Charset = DEFAULT_CHARSET
Font.Color = clAqua
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
ReadOnly = True
ScrollBars = ssVertical
TabOrder = 0
end
end
end
end
+145 -35
View File
@@ -4,43 +4,29 @@ interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls , verif_version, jpeg ;
Dialogs, ExtCtrls, StdCtrls , verif_version, jpeg, ComCtrls ;
type
TFormConfig = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
EditAdrIPCDM: TEdit;
Label2: TLabel;
EditPortCDM: TEdit;
GroupBox2: TGroupBox;
Label3: TLabel;
EditcomUSB: TEdit;
Label4: TLabel;
EditTempoOctetUSB: TEdit;
Label5: TLabel;
EditTempoReponse: TEdit;
ButtonAppliquerEtFermer: TButton;
GroupBox3: TGroupBox;
Label7: TLabel;
EditIPLenz: TEdit;
Label8: TLabel;
EditportLenz: TEdit;
GroupBox4: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
LabelInfo: TLabel;
Button2: TButton;
Label11: TLabel;
Label12: TLabel;
Image1: TImage;
PageControl: TPageControl;
TabSheetCDM: TTabSheet;
TabSheetAutonome: TTabSheet;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
EditAdrIPCDM: TEdit;
EditPortCDM: TEdit;
GroupBox5: TGroupBox;
Label13: TLabel;
CheckVerifVersion: TCheckBox;
CheckInfoVersion: TCheckBox;
CheckLanceCDM: TCheckBox;
CheckAvecTCO: TCheckBox;
EditNomLay: TEdit;
Label13: TLabel;
GroupBox6: TGroupBox;
RadioButton4: TRadioButton;
RadioButton5: TRadioButton;
@@ -52,19 +38,60 @@ type
RadioButton11: TRadioButton;
RadioButton12: TRadioButton;
GroupBox7: TGroupBox;
Label10: TLabel;
RadioButton13: TRadioButton;
RadioButton14: TRadioButton;
RadioButton15: TRadioButton;
RadioButton16: TRadioButton;
RadioButton17: TRadioButton;
RadioButton18: TRadioButton;
Label14: TLabel;
GroupBox2: TGroupBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
EditcomUSB: TEdit;
EditTempoOctetUSB: TEdit;
EditTempoReponse: TEdit;
GroupBox4: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
GroupBox3: TGroupBox;
Label7: TLabel;
Label8: TLabel;
EditIPLenz: TEdit;
EditportLenz: TEdit;
GroupBox8: TGroupBox;
CheckBoxServAig: TCheckBox;
CheckBoxServDet: TCheckBox;
CheckBoxServAct: TCheckBox;
CheckServPosTrains: TCheckBox;
Label6: TLabel;
Label9: TLabel;
Label10: TLabel;
Image1: TImage;
Label11: TLabel;
TabSheet1: TTabSheet;
MemoAig: TMemo;
Label12: TLabel;
TabSheet2: TTabSheet;
Label14: TLabel;
MemoBranches: TMemo;
TabSheet3: TTabSheet;
MemoSignaux: TMemo;
Label15: TLabel;
TabSheet4: TTabSheet;
Label16: TLabel;
MemoAct: TMemo;
CheckBoxSrvSig: TCheckBox;
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
Memo4: TMemo;
GroupBox9: TGroupBox;
CheckBoxRazSignaux: TCheckBox;
procedure ButtonAppliquerEtFermerClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Déclarations privées }
public
@@ -120,8 +147,45 @@ begin
place_id:=s;
end;
function services_CDM : boolean;
var s,ss : string;
i : integer;
begin
//s:=place_id('C-C-00-0002-RQSERV-RTSIM|030|03|SRV=ATNT;SRV=ADET;SRV=AACT;');
s:=place_id('C-C-00-0002-RQSERV-RTSIM|xxx|xx|');
i:=0;
if Srvc_Aig then begin s:=s+'SRV=ATNT;';inc(i);end;
if Srvc_Act then begin s:=s+'SRV=AACT;';inc(i);end;
if Srvc_Det then begin s:=s+'SRV=ADET;';inc(i);end;
if Srvc_PosTrain then begin s:=s+'SRV=TSXY;';inc(i);end ;
if Srvc_Sig then begin s:=s+'SRV=ASIG;';inc(i);end;
// insère le nombre de paramètres
ss:=format('%.*d',[2,i]) ;
delete(s,30,2);
insert(ss,s,30);
// insère la longueur des paramètres
i:=length(s)-29;
ss:=format('%.*d',[3,i]) ;
delete(s,26,3);
insert(ss,s,26);
//Affiche(s,clyellow);
envoi_CDM(s);sleep(100);
if pos('_ACK',recuCDM)<>0 then
begin
s:='Services acceptés: ';
if Srvc_Aig then s:=s+'- aiguillages ';
if Srvc_Act then s:=s+'- actionneurs ';
if Srvc_Det then s:=s+'- détecteurs ';
if Srvc_PosTrain then s:=s+'- position des trains ';
if Srvc_sig then s:=s+'- état des signaux ';
Affiche(s,clYellow);
end;
services_CDM:=pos('_ACK',recuCDM)<>0;
end;
procedure connecte_CDM;
var s : string;
var s , ss : string;
i : integer;
begin
// déconnexion de l'ancienne liaison éventuelle
@@ -158,10 +222,9 @@ begin
Affiche(s,clYellow);
AfficheDebug(s,clyellow);
// demande des services : ATNT=aiguillages, ADET=détecteurs AACT=actionneurs
s:=place_id('C-C-00-0002-RQSERV-RTSIM|030|03|SRV=ATNT;SRV=ADET;SRV=AACT;');
envoi_CDM(s);
if pos('_ACK',recuCDM)<>0 then Affiche('Services acceptés: aiguillages - détecteurs - actionneurs',clYellow);
// demande des services
services_CDM;
// demande les trains
s:=place_id('C-C-01-0002-DSCTRN-DLOAD|000|');
envoi_CDM(s);
@@ -423,7 +486,7 @@ end;
procedure TFormConfig.ButtonAppliquerEtFermerClick(Sender: TObject);
var i,erreur : integer;
s : string;
ChangeCDM,changeInterface,changeUSB : boolean;
ChangeCDM,changeInterface,changeUSB,change_srv : boolean;
begin
// contrôle adresse IP CDM
s:=EditAdrIPCDM.text;
@@ -492,6 +555,7 @@ begin
notificationVersion:=CheckInfoVersion.Checked;
LanceCDM:=CheckLanceCDM.Checked;
AvecTCO:=CheckAvecTCO.checked;
Lay:=EditNomLay.Text;
if RadioButton4.Checked then ServeurInterfaceCDM:=0;
@@ -511,7 +575,23 @@ begin
if RadioButton17.Checked then ServeurRetroCDM:=5;
if RadioButton18.Checked then ServeurRetroCDM:=6;
// générer le fichier clieng-GL.cfg
// changement sur les services CDM ?
change_srv:=Srvc_Aig<>CheckBoxServAig.checked;
change_srv:=Srvc_Det<>CheckBoxServDet.checked or change_srv;
change_srv:=Srvc_Act<>CheckBoxServAct.checked or change_srv;
change_srv:=Srvc_PosTrain<>CheckServPosTrains.checked or change_srv;
change_srv:=Srvc_Sig<>CheckBoxSrvSig.checked or change_srv;
Srvc_Aig:=CheckBoxServAig.checked;
Srvc_Det:=CheckBoxServDet.checked;
Srvc_Act:=CheckBoxServAct.checked;
Srvc_PosTrain:=CheckServPosTrains.checked;
Srvc_Sig:=CheckBoxSrvSig.checked;
Raz_Acc_signaux:=CheckBoxRazSignaux.checked;
if change_srv then services_CDM;
// générer le fichiers config.cfg et clieng-GL.cfg
genere_config2;
formConfig.close;
end;
@@ -522,6 +602,7 @@ begin
end;
procedure TFormConfig.FormActivate(Sender: TObject);
var i : integer;
begin
EditAdrIPCDM.text:=adresseIPCDM;
EditPortCDM.Text:=IntToSTR(portCDM);
@@ -563,8 +644,37 @@ begin
RadioButton16.Checked:=ServeurRetroCDM=4;
RadioButton17.Checked:=ServeurRetroCDM=5;
RadioButton18.Checked:=ServeurRetroCDM=6;
CheckBoxServAig.checked:=Srvc_Aig;
CheckBoxServDet.checked:=Srvc_Det;
CheckBoxServAct.checked:=Srvc_Act;
CheckServPosTrains.checked:=Srvc_PosTrain;
CheckBoxRazSignaux.checked:=Raz_Acc_signaux;
end;
procedure TFormConfig.FormCreate(Sender: TObject);
var i : integer;
begin
// remplit les 4 fenêtres de config des aiguillages branches signaux, actionneurs
for i:=1 to MaxAiguillage do
MemoAig.Lines.Add(mod_aiguillages[i]);
for i:=1 to NbreBranches do
MemoBranches.Lines.Add(mod_Branches[i]);
for i:=1 to NbreFeux do
MemoSignaux.Lines.Add(mod_Signaux[i]);
for i:=1 to maxTablo_act do
MemoAct.Lines.Add(mod_Act[i]);
PageControl.ActivePage:=TabSheetCDM; // force le premier onglet sur la page
end;
end.
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -4,7 +4,7 @@ interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls , UnitTCO, ExtCtrls;
Dialogs, StdCtrls , UnitTCO, ExtCtrls, Menus;
type
TFormConfigTCO = class(TForm)
BIN
View File
Binary file not shown.
+21 -6
View File
@@ -48,9 +48,9 @@ object FormDebug: TFormDebug
end
object Label3: TLabel
Left = 448
Top = 136
Top = 168
Width = 97
Height = 225
Height = 193
AutoSize = False
Caption = 'Label3'
Color = clGray
@@ -80,7 +80,7 @@ object FormDebug: TFormDebug
end
object MemoEvtDet: TMemo
Left = 552
Top = 376
Top = 408
Width = 233
Height = 221
Color = clBlack
@@ -132,8 +132,8 @@ object FormDebug: TFormDebug
OnClick = CheckAffSigClick
end
object ButtonRazTampon: TButton
Left = 688
Top = 600
Left = 448
Top = 576
Width = 97
Height = 33
Caption = 'Raz Tampon Ev'#232'nements'
@@ -202,7 +202,7 @@ object FormDebug: TFormDebug
end
object RichEdit: TRichEdit
Left = 552
Top = 136
Top = 168
Width = 233
Height = 233
HideScrollBars = False
@@ -266,6 +266,21 @@ object FormDebug: TFormDebug
TabOrder = 15
OnClick = CheckBoxAffFDClick
end
object CheckBoxAffDebDecSig: TCheckBox
Left = 448
Top = 128
Width = 321
Height = 17
Caption = 'Affichage du pilotage des d'#233'codeurs de signaux'
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
TabOrder = 16
OnClick = CheckBoxAffDebDecSigClick
end
object SaveDialog: TSaveDialog
Left = 760
Top = 56
+9 -1
View File
@@ -30,6 +30,7 @@ type
CheckBoxAct: TCheckBox;
CheckBoxEvtDetAig: TCheckBox;
CheckBoxAffFD: TCheckBox;
CheckBoxAffDebDecSig: TCheckBox;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure ButtonEcrLogClick(Sender: TObject);
@@ -46,6 +47,7 @@ type
procedure CheckBoxActClick(Sender: TObject);
procedure CheckBoxEvtDetAigClick(Sender: TObject);
procedure CheckBoxAffFDClick(Sender: TObject);
procedure CheckBoxAffDebDecSigClick(Sender: TObject);
private
{ Déclarations privées }
public
@@ -60,7 +62,7 @@ Max_Trains=50;
var
FormDebug: TFormDebug;
NivDebug : integer;
AffSignal,AffAffect,initform,AffFD : boolean;
AffSignal,AffAffect,initform,AffFD,debug_dec_sig : boolean;
N_event_det : integer; // index du dernier évènement (de 1 à 20)
event_det : array[1..Max_event_det] of integer;
event_det_train : array[1..Max_Trains] of record
@@ -295,4 +297,10 @@ begin
AffFD:=CheckBoxAffFD.checked;
end;
procedure TFormDebug.CheckBoxAffDebDecSigClick(Sender: TObject);
begin
debug_dec_sig:=CheckBoxAffDebDecSig.checked;
end;
end.
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -135,7 +135,7 @@ object FormPilote: TFormPilote
Top = 160
Width = 177
Height = 17
Caption = 'Violet (cible '#224' 2 feux uniquement)'
Caption = 'Violet'
TabOrder = 9
OnClick = RadioVioletClick
end
+1
View File
@@ -227,6 +227,7 @@ begin
begin
EtatSignalCplx[AdrPilote]:=EtatSignalCplx[0];
//Affiche(IntToSTR(EtatSignalCplx[AdrPilote]),clyellow);
feux[i].EtatSignal:=EtatSignalCplx[0];
envoi_signal(AdrPilote);
end
else
BIN
View File
Binary file not shown.
+396 -334
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+9
View File
@@ -847,6 +847,15 @@ object FormTCO: TFormTCO
WordWrap = True
OnClick = ButtonMasquerClick
end
object ButtonConstruit: TButton
Left = 880
Top = 88
Width = 89
Height = 33
Caption = 'Construit TCO'
TabOrder = 12
OnClick = ButtonConstruitClick
end
end
object ButtonAfficheBandeau: TButton
Left = 1051
+39 -8
View File
@@ -93,6 +93,7 @@ type
Label29: TLabel;
ImagePalette22: TImage;
Label30: TLabel;
ButtonConstruit: TButton;
procedure FormCreate(Sender: TObject);
procedure ImageTCOClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
@@ -245,6 +246,7 @@ type
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure EditAdrElementKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ButtonConstruitClick(Sender: TObject);
private
{ Déclarations privées }
@@ -1242,7 +1244,7 @@ begin
Brush.Color:=clVoies;
pen.color:=clVoies;
// aiguillage dévié (sans inversion)
// aiguillage dévié (sans inversion) ou position inconnue (9)
if ((inverse=false) and (position=const_Devie)) or
((inverse=true) and (position=const_Droit)) or
(position=9) then
@@ -1252,7 +1254,7 @@ begin
horz;
if mode=1 then
begin
// morceau de diag à tracer en clAllume
// morceau de diagonale à tracer en clAllume
x1:=x0+largeurCell-round(3*frXGlob);y1:=y0;
x2:=x0+largeurCell;y2:=y0+round(4*FryGlob);
x3:=x0+(largeurCell div 2)+round(4*frXGlob);y3:=jy2;
@@ -1263,6 +1265,7 @@ begin
// efface le morceau
if ((inverse=false) and (position=const_Devie)) or
((inverse=true) and (position=const_Droit)) then
begin
// efface le morceau
x1:=x0+round(12*frXGlob);y1:=jy2;
x2:=x1+round(20*frxGlob);y2:=y1;
@@ -1272,6 +1275,7 @@ begin
Brush.Color:=fond;
Polygon([point(x1,y1),Point(x2,y2),Point(x3,y3),Point(x4,y4)]);
end;
end;
// aiguillage droit (sans inversion) ou dévie (avec inversion)
if ((inverse=false) and (position=const_Droit)) or
@@ -1282,7 +1286,6 @@ begin
diagonale;
// efface le morceau
if (position=const_Droit) then
x1:=x0+round(19*frXGlob);y1:=jy1;
x2:=x1+round(6*frxGlob);y2:=y1;
x3:=x2-round(12*FrxGlob);y3:=y2+round(12*fryGlob);
@@ -2262,11 +2265,11 @@ end;
// transforme les branches en TCO
// trop compliqué. Il faudra dessiner son TCO soit meme
procedure construit_TCO;
var x,y,i,j,Max,indexMax : integer;
var x,y,i,j,Max,indexMax,Btype,Adresse,ligne,AdrSuiv,Bimage : integer;
begin
// étape 0 Raz du TCO
for y:=1 to 20 do
for x:=1 to 20 do
for y:=1 to NbreCellY do
for x:=1 to NbreCellX do
begin
TCO[x,y].Adresse:=0;
TCO[x,y].Btype:=0;
@@ -2285,10 +2288,33 @@ begin
Affiche('La branche la plus grande a pour index '+IntToSTR(IndexMax),clOrange);
// stocker cette branche au milieu du TCO (en 5)
ligne:=5;
for i:=1 to Max do
begin
TCO[i,5].Adresse:=BrancheN[IndexMax,i].Adresse;
TCO[i,5].Btype:=BrancheN[IndexMax,i].Btype;
Adresse:=BrancheN[IndexMax,i].Adresse;
Btype:=BrancheN[IndexMax,i].Btype;
TCO[i,ligne].Adresse:=Adresse;
TCO[i,ligne].Btype:=Btype;
// Btype 1= détecteur 2= aiguillage 3=bis 4=Buttoir
if Btype=1 then TCO[i,ligne].BImage:=1;
if Btype=2 then
begin
// A20,547,561,A22,A24,A26,515,518,A31,A29,A28,A30,539,522,A3,A1,A2,A4,A6B,545,A5B,A3
//20,P8P,D547,S548 // 22,P24P,S561,D25S
// on se réfère au suivant
AdrSuiv:=BrancheN[IndexMax,i+1].Adresse;
// connecté sur position droite : la pointe est à gauche
if aiguillage[adresse].Adroit=AdrSuiv then
Bimage:=3; // ou 4
// connecté sur position déviée : la pointe est à gauche, mais il faut changer de ligne
if aiguillage[adresse].Adevie=AdrSuiv then
Bimage:=4; // ou 4
// connecté sur pointe : la pointe est à droite
if aiguillage[adresse].Apointe=AdrSuiv then
Bimage:=5; // ou 2
TCO[i,ligne].BImage:=Bimage;
end;
end;
end;
@@ -2308,6 +2334,7 @@ begin
if (bImage>=2) and (btype<=14) then
begin
if Adresse<>0 then pos:=Aiguillage[adresse].position
else pos:=9;
end;
@@ -4181,6 +4208,10 @@ begin
ScrollBox.Height:=ClientHeight-Panel1.Height-40;
end;
procedure TFormTCO.ButtonConstruitClick(Sender: TObject);
begin
construit_TCO;
end;
begin
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -23,7 +23,7 @@ var
Lance_verif : integer;
verifVersion,notificationVersion : boolean;
Const Version='1.61'; //Version='1.2';// sert à la comparaison de la version publiée
Const Version='1.7'; //Version='1.2';// sert à la comparaison de la version publiée
implementation
+2 -1
View File
@@ -19,5 +19,6 @@ Version 1.44 : Gestion trains avec voitures
Version 1.45 : Rejette les n° d'objets supérieurs aiguillages à la même adresse
Version 1.5 : Nouvel algorithme de suivi des trains - Gestion des feux provenant de voies en buttoir
Version 1.6 : Implémentation du TCO. Ouverture de CDM rail au démarrage avec LAY à la demande
Version 1.7 : Sauvegarde de la configuration dans les fichier client_gl.cfg et config.cfg si modification des paramètres depuis le menu de configuration.
Feu violet disponible sur signaux à 5, 7 et 9 feux.