This commit is contained in:
f1iwq2
2021-08-02 10:41:27 +02:00
parent effa51ce98
commit ba7be100e6
14 changed files with 1222 additions and 719 deletions

14
README.adoc Normal file
View File

@@ -0,0 +1,14 @@
Signaux_complexes_GL
====================
Client signaux complexes pour CDM rail ou centrales pilotées par XpressNet
en USB ou Ethernet.
Fichiers sources.
== Liens ==
:lien: http://cdmrail.free.fr/ForumCDR/viewtopic.php?f=77&t=3906#p50499
:cdm: http://cdmrail.free.fr/SiteCDR/index.html
* {lien} [Lien vers le fil] -- Forum de CDM rail
* {cdm} [Lin vers CDM rail] -- Site de CDM rail

View File

@@ -1,4 +0,0 @@
# Signaux_complexes_GL
Client signaux complexes pour CDM rail ou centrales LENZ
Fichiers sources et exécutables.
http://cdmrail.free.fr/ForumCDR/viewtopic.php?f=77&t=3906#p50499

Binary file not shown.

View File

@@ -1,13 +1,13 @@
object FormConfig: TFormConfig
Left = 345
Top = 219
Left = 285
Top = 127
Hint =
'Modifie les fichiers de configuration selon les s'#233'lections chois' +
'ies'
BorderStyle = bsDialog
Caption = 'Configuration g'#233'n'#233'rale'
ClientHeight = 501
ClientWidth = 854
ClientWidth = 902
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
@@ -21,7 +21,7 @@ object FormConfig: TFormConfig
PixelsPerInch = 96
TextHeight = 13
object LabelInfo: TLabel
Left = 601
Left = 649
Top = 416
Width = 29
Height = 16
@@ -34,7 +34,7 @@ object FormConfig: TFormConfig
ParentFont = False
end
object Image1: TImage
Left = 600
Left = 648
Top = 128
Width = 249
Height = 177
@@ -944,7 +944,7 @@ object FormConfig: TFormConfig
Stretch = True
end
object Label11: TLabel
Left = 600
Left = 648
Top = 32
Width = 244
Height = 31
@@ -957,7 +957,7 @@ object FormConfig: TFormConfig
ParentFont = False
end
object ImageAig: TImage
Left = 600
Left = 648
Top = 312
Width = 137
Height = 57
@@ -1229,7 +1229,7 @@ object FormConfig: TFormConfig
Visible = False
end
object ImageTJD: TImage
Left = 720
Left = 760
Top = 320
Width = 137
Height = 57
@@ -1365,7 +1365,7 @@ object FormConfig: TFormConfig
Visible = False
end
object ImageTri: TImage
Left = 600
Left = 648
Top = 336
Width = 145
Height = 65
@@ -1543,7 +1543,7 @@ object FormConfig: TFormConfig
Caption = 'Verrouillable au carr'#233' :'
end
object Image2: TImage
Left = 720
Left = 760
Top = 352
Width = 129
Height = 41
@@ -1773,9 +1773,9 @@ object FormConfig: TFormConfig
object PageControl: TPageControl
Left = 8
Top = 8
Width = 585
Width = 633
Height = 457
ActivePage = TabSheetSig
ActivePage = TabSheetCDM
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
@@ -1787,7 +1787,7 @@ object FormConfig: TFormConfig
object TabSheetCDM: TTabSheet
Caption = 'CDM Rail'
object GroupBox1: TGroupBox
Left = 8
Left = 16
Top = 8
Width = 273
Height = 81
@@ -1827,7 +1827,7 @@ object FormConfig: TFormConfig
end
end
object GroupBox5: TGroupBox
Left = 8
Left = 16
Top = 96
Width = 273
Height = 185
@@ -1900,7 +1900,7 @@ object FormConfig: TFormConfig
end
end
object GroupBox6: TGroupBox
Left = 296
Left = 320
Top = 8
Width = 273
Height = 169
@@ -1980,7 +1980,7 @@ object FormConfig: TFormConfig
end
end
object GroupBox7: TGroupBox
Left = 296
Left = 320
Top = 184
Width = 273
Height = 137
@@ -2036,7 +2036,7 @@ object FormConfig: TFormConfig
end
end
object GroupBox8: TGroupBox
Left = 8
Left = 16
Top = 288
Width = 273
Height = 113
@@ -2091,7 +2091,7 @@ object FormConfig: TFormConfig
end
end
object GroupBox15: TGroupBox
Left = 296
Left = 320
Top = 328
Width = 273
Height = 73
@@ -2120,7 +2120,7 @@ object FormConfig: TFormConfig
object Label9: TLabel
Left = 8
Top = 400
Width = 297
Width = 294
Height = 13
Caption = 'Ces param'#232'tres sont utilis'#233's en fonctionnement sans CDM Rail'
WordWrap = True
@@ -2260,55 +2260,54 @@ object FormConfig: TFormConfig
object Memo1: TMemo
Left = 312
Top = 8
Width = 257
Width = 297
Height = 97
BevelInner = bvLowered
BevelKind = bkFlat
BorderStyle = bsNone
Lines.Strings = (
'1. Port COM de l'#39'adresse USB de l'#39'interface '
'XpressNet.'
'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'.')
'1. Port COM de l'#39'adresse USB de l'#39'interface XpressNet.'
'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
Width = 297
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.')
'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
Width = 297
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 '
'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
@@ -2316,17 +2315,17 @@ object FormConfig: TFormConfig
object Memo4: TMemo
Left = 312
Top = 312
Width = 257
Width = 297
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.')
'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
@@ -2397,11 +2396,25 @@ object FormConfig: TFormConfig
Height = 13
Caption = 'LabelTJD1'
end
object Label35: TLabel
Left = 0
Top = 56
Width = 134
Height = 13
Caption = 'Configuration des aiguillages'
end
object Label36: TLabel
Left = 232
Top = 56
Width = 86
Height = 13
Caption = 'Liste d'#39'initialisation'
end
object GroupBox11: TGroupBox
Left = 280
Left = 328
Top = 32
Width = 289
Height = 353
Height = 393
Caption = 'Description de l'#39'aiguillage'
TabOrder = 0
object LabelAdresse: TLabel
@@ -2433,7 +2446,7 @@ object FormConfig: TFormConfig
end
object GroupBox10: TGroupBox
Left = 8
Top = 96
Top = 88
Width = 273
Height = 73
Caption = 'Vitesse de franchissement d'#233'vi'#233' :'
@@ -2468,7 +2481,7 @@ object FormConfig: TFormConfig
end
object CheckInverse: TCheckBox
Left = 16
Top = 296
Top = 269
Width = 137
Height = 17
Caption = 'Inversion de l'#39#233'tat CDM'
@@ -2484,7 +2497,7 @@ object FormConfig: TFormConfig
OnChange = EditAdrAigChange
end
object ComboBoxAig: TComboBox
Left = 72
Left = 8
Top = 64
Width = 145
Height = 21
@@ -2500,9 +2513,9 @@ object FormConfig: TFormConfig
end
object GroupBox16: TGroupBox
Left = 8
Top = 176
Top = 168
Width = 273
Height = 105
Height = 97
Caption = 'Repr'#233'sentation'
TabOrder = 4
object LabelHG: TLabel
@@ -2577,15 +2590,15 @@ object FormConfig: TFormConfig
ParentFont = False
end
object LabelTJD1: TLabel
Left = 72
Top = 84
Left = 96
Top = 76
Width = 52
Height = 13
Caption = 'LabelTJD1'
end
object LabelTJD2: TLabel
Left = 152
Top = 84
Left = 168
Top = 76
Width = 52
Height = 13
Caption = 'LabelTJD1'
@@ -2673,8 +2686,8 @@ object FormConfig: TFormConfig
end
end
object ButtonRestaureAig: TButton
Left = 192
Top = 296
Left = 200
Top = 56
Width = 75
Height = 25
Hint =
@@ -2695,24 +2708,76 @@ object FormConfig: TFormConfig
Visible = False
OnChange = EditAigTripleChange
end
object GroupBox21: TGroupBox
Left = 8
Top = 288
Width = 273
Height = 97
Caption = 'Initialisation de l'#39'aiguillage en mode autonome'
TabOrder = 7
object Label37: TLabel
Left = 8
Top = 26
Width = 66
Height = 13
Caption = 'D'#233'vi'#233' ou droit'
end
object Label38: TLabel
Left = 8
Top = 42
Width = 129
Height = 13
Caption = 'Temporisation (1/10'#232'me s)'
end
object LabelDevie: TLabel
Left = 200
Top = 24
Width = 3
Height = 13
end
object EditDevDroit: TEdit
Left = 152
Top = 18
Width = 41
Height = 21
TabOrder = 0
OnChange = EditDevDroitChange
end
object EditTempo10: TEdit
Left = 152
Top = 40
Width = 41
Height = 21
TabOrder = 1
OnChange = EditTempo10Change
end
object CheckInvInit: TCheckBox
Left = 8
Top = 64
Width = 153
Height = 17
Caption = 'Pilotage invers'#233
TabOrder = 2
OnClick = CheckInvInitClick
end
end
end
object RichAig: TRichEdit
Left = 0
Top = 56
Width = 265
Height = 337
Top = 72
Width = 233
Height = 353
Color = clBlack
Font.Charset = DEFAULT_CHARSET
Font.Color = clYellow
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
Lines.Strings = (
'RichAig')
ParentFont = False
ReadOnly = True
ScrollBars = ssVertical
ScrollBars = ssBoth
TabOrder = 1
WordWrap = False
OnMouseDown = RichAigMouseDown
end
object ButtonNouvAig: TButton
@@ -2742,6 +2807,23 @@ object FormConfig: TFormConfig
TabOrder = 4
OnClick = ButtonAjSupClick
end
object RichInitAig: TRichEdit
Left = 232
Top = 72
Width = 89
Height = 353
Color = clBlack
Font.Charset = DEFAULT_CHARSET
Font.Color = clYellow
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
ReadOnly = True
ScrollBars = ssBoth
TabOrder = 5
WordWrap = False
end
end
object TabSheetBranches: TTabSheet
Caption = 'Branches'
@@ -2756,7 +2838,7 @@ object FormConfig: TFormConfig
'la modifier - Valider la ligne apr'#232's modification'
end
object Label34: TLabel
Left = 408
Left = 472
Top = 192
Width = 136
Height = 26
@@ -2764,7 +2846,7 @@ object FormConfig: TFormConfig
WordWrap = True
end
object GroupBox20: TGroupBox
Left = 408
Left = 464
Top = 24
Width = 153
Height = 161
@@ -2809,7 +2891,7 @@ object FormConfig: TFormConfig
object RichBranche: TRichEdit
Left = 0
Top = 24
Width = 401
Width = 457
Height = 401
Color = clBlack
Font.Charset = DEFAULT_CHARSET
@@ -2822,6 +2904,7 @@ object FormConfig: TFormConfig
ParentFont = False
ScrollBars = ssBoth
TabOrder = 1
WordWrap = False
OnMouseDown = RichBrancheMouseDown
end
end
@@ -2838,10 +2921,10 @@ object FormConfig: TFormConfig
'z sur une ligne pour afficher la description du signal'
end
object GroupBox12: TGroupBox
Left = 288
Left = 336
Top = 40
Width = 281
Height = 353
Height = 385
Caption = 'Description du signal'
TabOrder = 0
object ImageSignal: TImage
@@ -2964,10 +3047,11 @@ object FormConfig: TFormConfig
object MemoCarre: TMemo
Left = 8
Top = 280
Width = 241
Height = 65
ScrollBars = ssVertical
Width = 265
Height = 89
ScrollBars = ssBoth
TabOrder = 0
WordWrap = False
OnChange = MemoCarreChange
end
object ComboBoxDec: TComboBox
@@ -3052,7 +3136,7 @@ object FormConfig: TFormConfig
OnChange = EditSuiv4Change
end
object CheckVerrouCarre: TCheckBox
Left = 104
Left = 120
Top = 224
Width = 145
Height = 17
@@ -3115,8 +3199,8 @@ object FormConfig: TFormConfig
object RichSig: TRichEdit
Left = 0
Top = 56
Width = 273
Height = 337
Width = 329
Height = 369
Color = clBlack
Font.Charset = DEFAULT_CHARSET
Font.Color = clYellow
@@ -3173,43 +3257,27 @@ object FormConfig: TFormConfig
'iquez sur une ligne pour afficher la description de l'#39'action'
end
object GroupBox13: TGroupBox
Left = 304
Left = 360
Top = 32
Width = 257
Height = 385
Caption = 'Description de l'#39'actionneur '
TabOrder = 0
object GroupBoxRadio: TGroupBox
object Label40: TLabel
Left = 16
Top = 24
Width = 225
Height = 65
Caption = 'Type d'#39'actionneur '
TabOrder = 0
object RadioButtonLoc: TRadioButton
Left = 24
Top = 24
Width = 193
Height = 17
Caption = 'Fonction F pour locomotive'
TabOrder = 0
OnClick = RadioButtonLocClick
end
object RadioButtonAccess: TRadioButton
Left = 24
Top = 40
Width = 161
Height = 17
Caption = 'Fonction F pour accessoire'
TabOrder = 1
OnClick = RadioButtonAccessClick
end
Top = 328
Width = 191
Height = 26
Caption =
'Les accessoires ne sont utilisables qu'#39'en mode connect'#233' avec CDM' +
' Rail'
WordWrap = True
end
object GroupBoxPN: TGroupBox
Left = 32
Top = 80
Left = -32
Top = 24
Width = 225
Height = 193
Height = 289
Caption = 'Actionneurs gestion passage '#224' niveau'
TabOrder = 2
object Label21: TLabel
@@ -3253,6 +3321,13 @@ object FormConfig: TFormConfig
Width = 137
Height = 2
end
object Label39: TLabel
Left = 8
Top = 188
Width = 30
Height = 13
Caption = 'Voie 4'
end
object EditAdrFerme: TEdit
Left = 120
Top = 24
@@ -3349,19 +3424,61 @@ object FormConfig: TFormConfig
TabOrder = 11
OnChange = EditV3OChange
end
object EditV4F: TEdit
Left = 64
Top = 184
Width = 41
Height = 21
TabOrder = 12
OnChange = EditV4FChange
end
object GroupBoxAct: TGroupBox
object EditV4O: TEdit
Left = 152
Top = 184
Width = 41
Height = 21
TabOrder = 13
OnChange = EditV4OChange
end
end
object GroupBoxRadio: TGroupBox
Left = 16
Top = 72
Width = 225
Height = 249
Height = 65
Caption = 'Type d'#39'actionneur '
TabOrder = 0
object RadioButtonLoc: TRadioButton
Left = 24
Top = 24
Width = 193
Height = 17
Caption = 'Fonction F pour locomotive'
TabOrder = 0
OnClick = RadioButtonLocClick
end
object RadioButtonAccess: TRadioButton
Left = 24
Top = 40
Width = 161
Height = 17
Caption = 'Fonction F pour accessoire'
TabOrder = 1
OnClick = RadioButtonAccessClick
end
end
object GroupBoxAct: TGroupBox
Left = 16
Top = 104
Width = 225
Height = 225
Caption = 'Actionneur fonction de locomotive '
TabOrder = 1
object GroupBox18: TGroupBox
Left = 8
Top = 24
Width = 209
Height = 97
Height = 81
Caption = 'D'#233'clencheur '
TabOrder = 0
object LabelActionneur: TLabel
@@ -3417,13 +3534,13 @@ object FormConfig: TFormConfig
end
object GroupBox19: TGroupBox
Left = 8
Top = 128
Top = 112
Width = 209
Height = 105
Caption = 'Action '
TabOrder = 1
object LabelTempo: TLabel
Left = 40
Left = 48
Top = 52
Width = 55
Height = 13
@@ -3447,8 +3564,8 @@ object FormConfig: TFormConfig
Caption = #224
end
object EditTempo: TEdit
Left = 128
Top = 45
Left = 112
Top = 46
Width = 33
Height = 21
TabOrder = 0
@@ -3456,7 +3573,7 @@ object FormConfig: TFormConfig
end
object CheckRAZ: TCheckBox
Left = 32
Top = 72
Top = 80
Width = 145
Height = 17
Caption = 'Remise '#224' 0 apr'#232's pilotage'
@@ -3465,7 +3582,7 @@ object FormConfig: TFormConfig
end
object EditFonctionAccess: TEdit
Left = 112
Top = 15
Top = 18
Width = 25
Height = 21
Hint = 'Num'#233'ro de fonction du d'#233'codeur du train'
@@ -3476,7 +3593,7 @@ object FormConfig: TFormConfig
end
object EditEtatFoncSortie: TEdit
Left = 160
Top = 15
Top = 18
Width = 25
Height = 21
TabOrder = 3
@@ -3488,7 +3605,7 @@ object FormConfig: TFormConfig
object GroupBox14: TGroupBox
Left = 0
Top = 32
Width = 297
Width = 345
Height = 185
Caption = 'Actionneurs locomotives ou accessoires'
TabOrder = 1
@@ -3516,7 +3633,7 @@ object FormConfig: TFormConfig
object RichAct: TRichEdit
Left = 8
Top = 48
Width = 281
Width = 329
Height = 129
Color = clBlack
Font.Charset = DEFAULT_CHARSET
@@ -3526,16 +3643,17 @@ object FormConfig: TFormConfig
Font.Style = []
ParentFont = False
ReadOnly = True
ScrollBars = ssVertical
ScrollBars = ssBoth
TabOrder = 2
WordWrap = False
OnMouseDown = RichActMouseDown
end
end
object GroupBox17: TGroupBox
Left = 0
Top = 232
Width = 297
Height = 185
Width = 345
Height = 193
Caption = 'Actionneurs passage '#224' niveau'
TabOrder = 2
object ButtonNouvPN: TButton
@@ -3562,8 +3680,8 @@ object FormConfig: TFormConfig
object RichPN: TRichEdit
Left = 8
Top = 48
Width = 281
Height = 129
Width = 329
Height = 137
Color = clBlack
Font.Charset = DEFAULT_CHARSET
Font.Color = clYellow
@@ -3572,8 +3690,9 @@ object FormConfig: TFormConfig
Font.Style = []
ParentFont = False
ReadOnly = True
ScrollBars = ssVertical
ScrollBars = ssBoth
TabOrder = 2
WordWrap = False
OnMouseDown = RichPNMouseDown
end
end

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@@ -1,6 +1,6 @@
object FormPrinc: TFormPrinc
Left = 58
Top = 217
Left = 55
Top = 177
Width = 1212
Height = 664
Caption = 'Client TCP-IP CDM Rail ou USB - syst'#232'me LENZ'
@@ -1434,6 +1434,7 @@ object FormPrinc: TFormPrinc
ReadOnly = True
ScrollBars = ssBoth
TabOrder = 7
WordWrap = False
OnChange = FenRichChange
end
object GroupBox2: TGroupBox
@@ -1600,6 +1601,7 @@ object FormPrinc: TFormPrinc
end
object Vrifierlacohrence: TMenuItem
Caption = 'V'#233'rifier la coh'#233'rence'
Hint = 'V'#233'rifie la coh'#233'rence de la configuration'
OnClick = VrifierlacohrenceClick
end
object N8: TMenuItem

View File

@@ -208,6 +208,7 @@ type TBranche = record
Adresse : integer;
modele : integer; // 0=n'existe pas 1=aiguillage 2=TJD 3=TJS 4=aiguillage triple
position, // position actuelle : 1=dévié 2=droit (centrale LENZ)
posInit, // position d'initialisation
Adrtriple, // 2eme adresse pour un aiguillage triple
temps, // temps de pilotage (durée de l'impulsion en x 100 ms)
inversion : integer; // positionné dans fichier config_gl section_init
@@ -268,7 +269,7 @@ TFeu = record
posAig : char;
end;
CondCarre : array[1..6] of array of record // conditions supplémentaires d'aiguillages en position pour le carré
// attention les données sont stockée en adresse 1 du tableau dynamique
// attention les données sont stockées en adresse 1 du tableau dynamique
Adresse : integer; // aiguillage
posAig : char;
end;
@@ -1261,6 +1262,7 @@ var TypeFeu : integer;
const espY = 15;//40; // espacement Y entre deux lignes de feux
begin
TypeFeu:=feux[rang].aspect;
if typeFeu<=0 then exit;
Feux[rang].Img:=Timage.create(Formprinc.ScrollBox1);
with Feux[rang].Img do
begin
@@ -2294,7 +2296,6 @@ var
combine,aspect,code : word;
s : string;
begin
code:=etatsignalcplx[adresse];
if (ancien_tablo_signalCplx[adresse]<>EtatSignalCplx[adresse]) then //; && (stop_cmd==FALSE))
begin
ancien_tablo_signalCplx[adresse]:=EtatSignalCplx[adresse];
@@ -2430,7 +2431,6 @@ begin
if TCO[x,y].Bimage=30 then
begin
adresse:=TCO[x,y].adresse; // vérifie si le feu existe dans le TCO
a:=EtatsignalCplx[adresse]; // a = état binaire du feu
aspect:=TCO[x,y].aspect;
case aspect of
2 : ImageFeu:=Formprinc.Image2feux;
@@ -2563,7 +2563,6 @@ procedure trouve_detecteur(detecteur : integer);
var NBranche,i : integer;
begin
Nbranche:=1;
i:=1;
repeat
i:=index_detecteur(detecteur,Nbranche);
if i=0 then inc(NBranche);
@@ -2579,7 +2578,6 @@ procedure trouve_aiguillage(adresse : integer);
var NBranche,i : integer;
begin
Nbranche:=1;
i:=1;
repeat
i:=index_aiguillage(Adresse,Nbranche);
if i=0 then inc(NBranche);
@@ -2637,7 +2635,6 @@ var s,sa,chaine,SOrigine: string;
if esp<>0 then delete(s,esp,1);
until esp=0;
lit_ligne:=s;
//Affiche(s,clWhite);
end;
procedure compile_section_init;
@@ -2650,14 +2647,16 @@ var s,sa,chaine,SOrigine: string;
if j>1 then
begin
begin
adresse:=StrToINT(copy(s,1,j-1));Delete(s,1,j); // adresse aiguillage
Val(s,adresse,erreur);
Delete(s,1,j); // adresse aiguillage
if (adresse>0) and (AvecInitAiguillages) then
begin
j:=pos(',',s);
position:=StrToInt(copy(s,1,j-1));Delete(S,1,j);// position aiguillage
Val(s,position,erreur);
Delete(S,1,j);// position aiguillage
if (position<1) or (position>2) then position:=1;
index:=Index_Aig(adresse);
aiguillage[index].position:=position;
aiguillage[index].posInit:=position;
// temporisation aiguillage
j:=pos(',',s);if j=0 then j:=length(s);
@@ -2704,6 +2703,7 @@ begin
Aiguillage[i].modele:=0 ; // sans existence
Aiguillage[i].adresse:=0;
Aiguillage[i].position:=const_inconnu; // position inconnue
Aiguillage[i].PosInit:=const_inconnu; // position inconnue
Aiguillage[i].temps:=5 ;
Aiguillage[i].inversion:=0;
Aiguillage[i].inversionCDM:=0;
@@ -2715,7 +2715,6 @@ begin
Ancien_detecteur[i]:=false;
end;
Affiche('lecture du fichier de configuration config.cfg',clyellow);
{$I+}
try
@@ -3367,6 +3366,7 @@ begin
AvecInitAiguillages:=s='1';
end;
// taille de la fenetre
sa:=uppercase(fenetre_ch)+'=';
i:=pos(sa,s);
if i<>0 then
@@ -3378,6 +3378,7 @@ begin
if fenetre=1 then Formprinc.windowState:=wsMaximized;
end;
// temporisation aiguillages
sa:=uppercase(Tempo_Aig_ch)+'=';
i:=pos(sa,s);
if i<>0 then
@@ -3388,7 +3389,6 @@ begin
val(s,Tempo_Aig,erreur);
end;
i:=pos(uppercase(section_init),s);
if i<>0 then
begin
@@ -3418,7 +3418,6 @@ begin
delete(s,i,length(sa));
trouve_NOTIF_VERSION:=true;
// vérification de la version au démarrage
i:=0;
val(s,i,erreur);
notificationVersion:=i=1;
end;
@@ -3431,7 +3430,6 @@ begin
delete(s,i,length(sa));
trouve_TCO:=true;
// vérification de la version au démarrage
i:=0;
val(s,i,erreur);
AvecTCO:=i=1;
end;
@@ -3444,7 +3442,6 @@ begin
trouve_CDM:=true;
delete(s,i,length(sa));
// vérification de la version au démarrage
i:=0;
val(s,i,erreur);
LanceCDM:=i=1;
end;
@@ -3466,7 +3463,6 @@ begin
inc(nv);
trouve_serveur_interface:=true;
delete(s,i,length(sa));
i:=0;
val(s,i,erreur);
ServeurInterfaceCDM:=i;
end;
@@ -3478,7 +3474,6 @@ begin
inc(nv);
trouve_retro:=true;
delete(s,i,length(sa));
i:=0;
val(s,i,erreur);
ServeurRetroCDM:=i;
end;
@@ -3490,7 +3485,6 @@ begin
inc(nv);
trouve_NbDetDist:=true;
delete(s,i,length(sa));
i:=0;
val(s,i,erreur);
if i<2 then begin i:=2;Affiche('Attention '+nb_det_dist_ch+' ramené à '+IntToSTR(i),clOrange); end;
Nb_Det_Dist:=i;
@@ -4449,6 +4443,7 @@ end;
// renvoie vrai si les aiguillages déclarés dans la définition du signal sont mal positionnés
// (conditions suppplémentares)
function cond_carre(adresse : integer) : boolean;
var i,l,k,NCondCarre,adrAig,index : integer;
resultatET,resultatOU: boolean;
@@ -4469,10 +4464,13 @@ begin
//s2:=s2+'A'+IntToSTR(feux[i].condcarre[l][k].Adresse)+feux[i].condcarre[l][k].PosAig+' ';
AdrAig:=feux[i].condcarre[l][k].Adresse;
index:=index_aig(adrAig);
if index<>0 then
begin
if nivDebug=3 then AfficheDebug('Contrôle aiguillage '+IntToSTR(AdrAig),clyellow);
resultatET:=((aiguillage[index].position=const_devie) and (feux[i].condcarre[l][k].PosAig='S') or (aiguillage[index].position=const_droit) and (feux[i].condcarre[l][k].PosAig='D'))
and resultatET;
end;
end;
//if resultatET then Affiche('VRAI',clyellow) else affiche('FAUX',clred);
inc(l);
resultatOU:=resultatOU or resultatET;
@@ -6269,7 +6267,7 @@ begin
j:=posEx(',',PortCom,j+1);
j:=posEx(',',PortCom,j+1);
confStCom:=copy(portCom,i+1,j-i-1); //Affiche(ConfStCom,clred);
confStCom:=copy(portCom,i+1,j-i-1);
Settings:=ConfStCom; // COMx:vitesse,n,8,1
Affiche('Demande ouverture COM'+intToSTR(NumPort)+':'+ConfStCom+' protocole '+IntToSTR(protocole),CLYellow);
if protocole>=4 then Handshaking:=0 {0=aucun 1=Xon-Xoff 2=cts 3=RTS-Xon-Xoff 4=5=protocoles "maison"}
@@ -6786,7 +6784,7 @@ begin
index:=index_aig(i);
if aiguillage[index].modele<>0 then // si l'aiguillage existe
begin
pos:=aiguillage[index].position;
pos:=aiguillage[index].posInit;
s:='Init aiguillage '+intToSTR(i)+'='+intToSTR(pos);
if pos=1 then s:=s+' (dévié)' else s:=s+' (droit)';
Affiche(s,cyan);
@@ -7139,7 +7137,7 @@ procedure TFormPrinc.MenuConnecterEthernetClick(Sender: TObject);
begin
if AdresseIP<>'0' then
begin
Affiche('Demande de connexion de l''interface Lenz en ethernet '+AdresseIP+':'+IntToSTR(Port),clyellow);
Affiche('Demande de connexion de l''interface XpressNet en ethernet sur '+AdresseIP+':'+IntToSTR(Port),clyellow);
ClientSocketLenz.port:=port;
ClientSocketLenz.Address:=AdresseIP;
ClientSocketLenz.Open;
@@ -7422,7 +7420,6 @@ begin
// Tempo_chgt_feux:=10; // demander la mise à jour des feux
end;
// évènement détecteur
posDT:=pos('CMDACC-ST_DT',commandeCDM);
if posDT<>0 then
@@ -7593,9 +7590,8 @@ begin
ConnecterCDMRail.enabled:=true;
end;
procedure TFormPrinc.Codificationdesfeux1Click(Sender: TObject);
var i,j,k,l,CondCarre,NfeuxDir : integer;
var i,j,k,l,CondCarre,NfeuxDir,nc : integer;
s,s2 : string;
begin
Affiche('Codification interne des feux',Cyan);
@@ -7612,31 +7608,29 @@ begin
s:=s+' Det='+IntToSTR(feux[i].Adr_det1);
s:=s+' El_Suiv1='+IntToSTR(feux[i].Adr_el_suiv1)+' Type suiv1='+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)';
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);
s:=s+'Cible unisemaf= '+intToSTR(feux[i].Unisemaf);
// conditions sur carré
CondCarre:=Length(feux[i].condcarre[1]);
l:=1;
s2:='';
while condCarre<>0 do
repeat
nc:=Length(feux[i].condcarre[l])-1 ;
if (nc>0) and (l=1) then begin Affiche(s,clYellow);s:='';end; // pour afficher sur 2 lignes
for k:=1 to nc do
begin
if condcarre<>0 then dec(condcarre);
for k:=1 to condCarre do
begin
s2:=s2+'A'+IntToSTR(feux[i].condcarre[l][k].Adresse)+feux[i].condcarre[l][k].PosAig+' ';
s:=s+'A'+IntToSTR(feux[i].condcarre[l][k].Adresse)+feux[i].condcarre[l][k].PosAig;
if k<nc then s:=s+',';
end;
s2:=s2+'/';
inc(l);
CondCarre:=Length(feux[i].condcarre[l]);
end;
if nc>0 then s:=s+'/';
until (nc<=0) or (l>6);
end
else
// feu directionnel
begin
@@ -7981,7 +7975,7 @@ begin
Tformconfig.create(nil);
formconfig.PageControl.ActivePage:=formconfig.TabSheetSig;
//Affiche(intToSTR(index),clOrange);
lignecliquee:=index-1;
ligneClicSig:=index-1;
formconfig.showmodal;
formconfig.close;
end;

Binary file not shown.

Binary file not shown.

View File

@@ -1,28 +1,31 @@
object FormVersion: TFormVersion
Left = 497
Top = 186
Width = 468
Height = 194
Left = 197
Top = 230
BorderIcons = []
BorderStyle = bsDialog
Caption = 'V'#233'rification de version'
Color = clBtnFace
ClientHeight = 213
ClientWidth = 644
Color = clNavy
Font.Charset = ANSI_CHARSET
Font.Color = clBlack
Font.Height = -16
Font.Name = 'Arial Narrow'
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 20
object Memo1: TMemo
Left = 16
Top = 32
Width = 425
Height = 105
Left = 0
Top = 0
Width = 641
Height = 209
BorderStyle = bsNone
Color = clNavy
Font.Charset = ANSI_CHARSET
Font.Color = clBlack
Font.Height = -13
Font.Color = clYellow
Font.Height = -19
Font.Name = 'Arial Narrow'
Font.Style = []
ParentFont = False

View File

@@ -4,7 +4,7 @@ interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls , ComCtrls ,WinInet, ExtCtrls;
Dialogs, StdCtrls , ComCtrls ,WinInet, ExtCtrls , StrUtils;
type
TFormVersion = class(TForm)
@@ -23,7 +23,7 @@ var
Lance_verif : integer;
verifVersion,notificationVersion : boolean;
Const Version='3.0'; // sert à la comparaison de la version publiée
Const Version='3.1'; // sert à la comparaison de la version publiée
implementation
@@ -100,10 +100,11 @@ end;
procedure verifie_version;
var s,s2,s3,Version_p,Url,LocalFile : string;
trouve_version,trouve_zip : boolean;
trouve_version,trouve_zip,zone_comm : boolean;
fichier : text;
i,j,erreur : integer;
i,j,erreur,Ncomm,i2,i3 : integer;
V_publie,V_utile : real;
comm : array[1..10] of string;
begin
//Affiche('vérifie version',clLime);
if not(AvecInit) then exit ;
@@ -112,6 +113,8 @@ begin
LocalFile:='page.txt';
trouve_version:=false;
trouve_zip:=false;
zone_comm:=false;
Ncomm:=0;
if DownloadURL_NOCache(Url,localFile) then
begin
AssignFile(fichier,LocalFile);
@@ -124,18 +127,43 @@ begin
begin
i:=pos('version ',s);
trouve_version:=i<>0;
if trouve_version then s2:=s;
if trouve_version then begin s2:=s;zone_comm:=true;end;
end;
if not(trouve_zip) then
begin
i:=pos('.zip',s);
trouve_zip:=i<>0;
if trouve_zip then
s3:=s;
if trouve_zip then begin s3:=s;zone_comm:=false;end;
end;
// commentaire en gras
if zone_comm then
begin
i:=pos('bold">',s)+6;i2:=posEx('<br />',s,i+1);
if i<>6 then
begin
inc(ncomm);
comm[ncomm]:=UTF8Decode(copy(s,i,i2-i));
Delete(s,1,i2-1);
j:=0;
repeat
i:=pos('<br />',s)+6;i3:=posEx('</span>',s,i+1);i2:=posEx('<br />',s,i+1);
inc(ncomm);
if i2<i3 then
begin
comm[ncomm]:=UTF8Decode(copy(s,i,i2-i));Delete(s,1,i2-1);
end
else
begin
comm[ncomm]:=UTF8Decode(copy(s,i,i3-i));Delete(s,1,i3-1);
end;
inc(j);
until (i3<i2) or (ncomm=10) or (j=20);
zone_comm:=false;
end;
end;
// Aff(s)
end;
closefile(fichier);
if trouve_version and trouve_zip then
begin
// isoler le champ version
@@ -151,7 +179,6 @@ begin
i:=pos('.',s3);
if i<>0 then delete(s3,i,1); // supprimer le .
s3:='http://cdmrail.free.fr/ForumCDR'+s3 ;
aff(s3); // lien dans s3
// changer le . en ,
s:=Version_p;
@@ -164,9 +191,17 @@ begin
if V_utile<V_publie then
begin
FormVersion.Top:=1;
FormVersion.Left:=1;
FormVersion.show;
//aff(s3); // url dans s3
s:='Vous utilisez la version '+version+' mais il existe la version '+Version_p;
Aff(s);
if ncomm>0 then
begin
Aff('Nouveautés de la V'+version_p+' de Signaux_Complexes_GL :');
Aff(' ');
for i:=1 to ncomm do aff(comm[i]);
end;
if MessageDlg(s+'. Voulez-vous la télécharger?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
begin
// récupérer depuis la variable d'environnement windows USERPROFILE le repertoire de la session ouverte

View File

@@ -56,6 +56,9 @@ version 3.0 : Ajout des fonctions Nouveau / supprimer feu, accessoires dans le
Tous les éléments des feux, aiguillages, branches et actionneurs peuvent être modifiés depuis le panneau.
Nécessite de nommer les sections dans le fichier config.cfg
Il n'est donc plus nécessaire de modifier les fichiers de configuration.
version 3.1 : Renforcement de la vérification de la configuration.
Modification de la liste d'initialisation des aiguillages en mode autonome.
Indépendance des modifications entre les onglets du panneau de configuration.