This commit is contained in:
f1iwq2
2020-12-12 09:36:46 +01:00
parent d7ad7a4977
commit f537bbb01c
14 changed files with 367 additions and 902 deletions

Binary file not shown.

View File

@@ -219,7 +219,7 @@ TitreAig='Description de l''aiguillage ';
var var
FormConfig: TFormConfig; FormConfig: TFormConfig;
AdresseIPCDM,AdresseIP,PortCom,recuCDM : string; AdresseIPCDM,AdresseIP,PortCom,recuCDM,residuCDM : string;
portCDM,TempoOctet,TimoutMaxInterface,Valeur_entete,Port,protocole,NumPort, portCDM,TempoOctet,TimoutMaxInterface,Valeur_entete,Port,protocole,NumPort,
LigneCliquee,AncLigneCliquee : integer; LigneCliquee,AncLigneCliquee : integer;
clicliste : boolean; clicliste : boolean;
@@ -338,7 +338,9 @@ begin
if pos('_ACK',recuCDM)<>0 then if pos('_ACK',recuCDM)<>0 then
begin begin
Id_CDM:=copy(recuCDM,5,2); // récupère l'ID reçu de CDM, à utiliser dans toutes les futures trames Id_CDM:=copy(recuCDM,5,2); // récupère l'ID reçu de CDM, à utiliser dans toutes les futures trames
recucdm:='';
s:='Connecté au serveur CDM rail avec l''ID='+Id_CDM; s:='Connecté au serveur CDM rail avec l''ID='+Id_CDM;
Affiche(s,clYellow); Affiche(s,clYellow);
AfficheDebug(s,clyellow); AfficheDebug(s,clyellow);
CDM_connecte:=true; CDM_connecte:=true;

Binary file not shown.

View File

@@ -1,6 +1,6 @@
object FormDebug: TFormDebug object FormDebug: TFormDebug
Left = 342 Left = 329
Top = 80 Top = 122
Width = 842 Width = 842
Height = 762 Height = 762
Caption = 'Fen'#234'tre de d'#233'bug' Caption = 'Fen'#234'tre de d'#233'bug'
@@ -13,7 +13,6 @@ object FormDebug: TFormDebug
Font.Style = [] Font.Style = []
OldCreateOrder = False OldCreateOrder = False
Position = poMainFormCenter Position = poMainFormCenter
OnClose = FormClose
OnCreate = FormCreate OnCreate = FormCreate
DesignSize = ( DesignSize = (
826 826
@@ -22,7 +21,7 @@ object FormDebug: TFormDebug
TextHeight = 13 TextHeight = 13
object Label1: TLabel object Label1: TLabel
Left = 642 Left = 642
Top = 7 Top = 4
Width = 108 Width = 108
Height = 13 Height = 13
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
@@ -38,7 +37,7 @@ object FormDebug: TFormDebug
end end
object Label2: TLabel object Label2: TLabel
Left = 474 Left = 474
Top = 4 Top = 2
Width = 131 Width = 131
Height = 18 Height = 18
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
@@ -52,7 +51,7 @@ object FormDebug: TFormDebug
end end
object Label3: TLabel object Label3: TLabel
Left = 472 Left = 472
Top = 168 Top = 160
Width = 99 Width = 99
Height = 185 Height = 185
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
@@ -70,7 +69,7 @@ object FormDebug: TFormDebug
end end
object EditNivDebug: TEdit object EditNivDebug: TEdit
Left = 754 Left = 754
Top = 4 Top = 2
Width = 49 Width = 49
Height = 21 Height = 21
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
@@ -86,7 +85,7 @@ object FormDebug: TFormDebug
end end
object MemoEvtDet: TMemo object MemoEvtDet: TMemo
Left = 578 Left = 578
Top = 360 Top = 344
Width = 239 Width = 239
Height = 225 Height = 225
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
@@ -105,7 +104,7 @@ object FormDebug: TFormDebug
end end
object ButtonEcrLog: TButton object ButtonEcrLog: TButton
Left = 474 Left = 474
Top = 480 Top = 464
Width = 97 Width = 97
Height = 29 Height = 29
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
@@ -127,7 +126,7 @@ object FormDebug: TFormDebug
end end
object ButtonRazTampon: TButton object ButtonRazTampon: TButton
Left = 474 Left = 474
Top = 552 Top = 536
Width = 97 Width = 97
Height = 33 Height = 33
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
@@ -138,7 +137,7 @@ object FormDebug: TFormDebug
end end
object ButtonCherche: TButton object ButtonCherche: TButton
Left = 474 Left = 474
Top = 448 Top = 432
Width = 97 Width = 97
Height = 25 Height = 25
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
@@ -148,7 +147,7 @@ object FormDebug: TFormDebug
end end
object ButtonAffEvtChrono: TButton object ButtonAffEvtChrono: TButton
Left = 474 Left = 474
Top = 408 Top = 392
Width = 97 Width = 97
Height = 33 Height = 33
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
@@ -159,7 +158,7 @@ object FormDebug: TFormDebug
end end
object ButtonCop: TButton object ButtonCop: TButton
Left = 474 Left = 474
Top = 360 Top = 344
Width = 97 Width = 97
Height = 41 Height = 41
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
@@ -176,7 +175,7 @@ object FormDebug: TFormDebug
end end
object RichEdit: TRichEdit object RichEdit: TRichEdit
Left = 578 Left = 578
Top = 168 Top = 160
Width = 239 Width = 239
Height = 185 Height = 185
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
@@ -187,7 +186,7 @@ object FormDebug: TFormDebug
end end
object ButtonRazLog: TButton object ButtonRazLog: TButton
Left = 474 Left = 474
Top = 512 Top = 496
Width = 97 Width = 97
Height = 33 Height = 33
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
@@ -197,10 +196,10 @@ object FormDebug: TFormDebug
OnClick = ButtonRazLogClick OnClick = ButtonRazLogClick
end end
object GroupBox1: TGroupBox object GroupBox1: TGroupBox
Left = 474 Left = 472
Top = 592 Top = 576
Width = 343 Width = 353
Height = 132 Height = 145
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
Caption = 'Fonctions primitives' Caption = 'Fonctions primitives'
Color = cl3DLight Color = cl3DLight
@@ -215,13 +214,13 @@ object FormDebug: TFormDebug
object GroupBox3: TGroupBox object GroupBox3: TGroupBox
Left = 8 Left = 8
Top = 16 Top = 16
Width = 329 Width = 337
Height = 57 Height = 73
Caption = 'Signal' Caption = 'Signal'
TabOrder = 0 TabOrder = 0
object Label4: TLabel object Label4: TLabel
Left = 241 Left = 281
Top = 26 Top = 10
Width = 32 Width = 32
Height = 13 Height = 13
Caption = 'Signal:' Caption = 'Signal:'
@@ -235,8 +234,8 @@ object FormDebug: TFormDebug
object ButtonSigSuiv: TButton object ButtonSigSuiv: TButton
Left = 8 Left = 8
Top = 16 Top = 16
Width = 65 Width = 57
Height = 33 Height = 49
Hint = 'Etat du signal suivant' Hint = 'Etat du signal suivant'
Caption = 'Etat signal suivant' Caption = 'Etat signal suivant'
ParentShowHint = False ParentShowHint = False
@@ -246,10 +245,10 @@ object FormDebug: TFormDebug
OnClick = ButtonSigSuivClick OnClick = ButtonSigSuivClick
end end
object ButtonCanSuivSig: TButton object ButtonCanSuivSig: TButton
Left = 72 Left = 64
Top = 8 Top = 16
Width = 81 Width = 65
Height = 41 Height = 49
Hint = 'Renvoie l'#39'occupation du canton suivant le signal' Hint = 'Renvoie l'#39'occupation du canton suivant le signal'
Caption = 'Etat canton suivant signal' Caption = 'Etat canton suivant signal'
ParentShowHint = False ParentShowHint = False
@@ -259,8 +258,8 @@ object FormDebug: TFormDebug
OnClick = ButtonCanSuivSigClick OnClick = ButtonCanSuivSigClick
end end
object EditSigSuiv: TEdit object EditSigSuiv: TEdit
Left = 272 Left = 280
Top = 24 Top = 32
Width = 41 Width = 41
Height = 21 Height = 21
Hint = 'Indiquer l'#39'adresse du signal ' Hint = 'Indiquer l'#39'adresse du signal '
@@ -269,20 +268,30 @@ object FormDebug: TFormDebug
TabOrder = 2 TabOrder = 2
end end
object Button1: TButton object Button1: TButton
Left = 152 Left = 128
Top = 8 Top = 16
Width = 81 Width = 81
Height = 41 Height = 49
Caption = 'Etat 3 cantons pr'#233'c'#233'dents signal' Caption = 'Etat 3 cantons pr'#233'c'#233'dents signal'
TabOrder = 3 TabOrder = 3
WordWrap = True WordWrap = True
OnClick = Button1Click OnClick = Button1Click
end end
object Button2: TButton
Left = 208
Top = 16
Width = 65
Height = 49
Caption = 'Cond Carr'#233' aiguillages'
TabOrder = 4
WordWrap = True
OnClick = Button2Click
end
end end
object GroupBox4: TGroupBox object GroupBox4: TGroupBox
Left = 8 Left = 8
Top = 72 Top = 88
Width = 329 Width = 337
Height = 49 Height = 49
Caption = 'D'#233'tecteur suivant' Caption = 'D'#233'tecteur suivant'
TabOrder = 1 TabOrder = 1
@@ -324,7 +333,7 @@ object FormDebug: TFormDebug
end end
object GroupBox2: TGroupBox object GroupBox2: TGroupBox
Left = 472 Left = 472
Top = 24 Top = 20
Width = 345 Width = 345
Height = 137 Height = 137
Anchors = [akTop, akRight] Anchors = [akTop, akRight]

View File

@@ -43,7 +43,7 @@ type
EditPrec: TEdit; EditPrec: TEdit;
EditActuel: TEdit; EditActuel: TEdit;
Button1: TButton; Button1: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction); Button2: TButton;
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure ButtonEcrLogClick(Sender: TObject); procedure ButtonEcrLogClick(Sender: TObject);
procedure EditNivDebugKeyPress(Sender: TObject; var Key: Char); procedure EditNivDebugKeyPress(Sender: TObject; var Key: Char);
@@ -64,6 +64,7 @@ type
procedure ButtonDetSuivClick(Sender: TObject); procedure ButtonDetSuivClick(Sender: TObject);
procedure ButtonCanSuivSigClick(Sender: TObject); procedure ButtonCanSuivSigClick(Sender: TObject);
procedure Button1Click(Sender: TObject); procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private private
{ Déclarations privées } { Déclarations privées }
public public
@@ -117,13 +118,6 @@ begin
FormDebug.MemoDebug.Lines.add(s); FormDebug.MemoDebug.Lines.add(s);
end; end;
procedure TFormDebug.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Action := TCloseAction.caNone;
//DebugOuv:=False;
//NivDebug:=0;
end;
procedure RE_ColorLine(ARichEdit : TRichEdit;ARow : Integer;AColor : TColor); procedure RE_ColorLine(ARichEdit : TRichEdit;ARow : Integer;AColor : TColor);
begin begin
with ARichEdit do with ARichEdit do
@@ -371,4 +365,15 @@ begin
NivDebug:=AncDebug; NivDebug:=AncDebug;
end; end;
procedure TFormDebug.Button2Click(Sender: TObject);
var Adr,erreur,ancdebug : integer ;
begin
Val(EditSigSuiv.Text,Adr,erreur); if erreur<>0 then exit;
ancdebug:=NivDebug;
NivDebug:=3;
Cond_Carre(Adr);
carre_signal(adr);
NivDebug:=AncDebug;
end;
end. end.

Binary file not shown.

View File

@@ -816,7 +816,7 @@ object FormPrinc: TFormPrinc
Visible = False Visible = False
end end
object Image3Dir: TImage object Image3Dir: TImage
Left = 768 Left = 840
Top = 136 Top = 136
Width = 49 Width = 49
Height = 25 Height = 25
@@ -894,8 +894,8 @@ object FormPrinc: TFormPrinc
Visible = False Visible = False
end end
object Image4Dir: TImage object Image4Dir: TImage
Left = 816 Left = 1064
Top = 128 Top = 136
Width = 57 Width = 57
Height = 25 Height = 25
Picture.Data = { Picture.Data = {
@@ -1080,8 +1080,8 @@ object FormPrinc: TFormPrinc
Visible = False Visible = False
end end
object Image6Dir: TImage object Image6Dir: TImage
Left = 808 Left = 872
Top = 152 Top = 136
Width = 81 Width = 81
Height = 25 Height = 25
Picture.Data = { Picture.Data = {
@@ -1204,7 +1204,7 @@ object FormPrinc: TFormPrinc
object ListBox1: TListBox object ListBox1: TListBox
Left = 8 Left = 8
Top = 48 Top = 48
Width = 616 Width = 609
Height = 505 Height = 505
Style = lbOwnerDrawFixed Style = lbOwnerDrawFixed
Anchors = [akLeft, akTop, akRight, akBottom] Anchors = [akLeft, akTop, akRight, akBottom]
@@ -1235,7 +1235,7 @@ object FormPrinc: TFormPrinc
end end
object GroupBox1: TGroupBox object GroupBox1: TGroupBox
Left = 631 Left = 631
Top = 0 Top = 5
Width = 249 Width = 249
Height = 129 Height = 129
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
@@ -1345,6 +1345,9 @@ object FormPrinc: TFormPrinc
Top = 8 Top = 8
Width = 89 Width = 89
Height = 33 Height = 33
Hint =
'Mise '#224' jour des feux suivant les zones occup'#233'es et les aiguillag' +
'es'
Caption = 'Rafraichissement' Caption = 'Rafraichissement'
TabOrder = 0 TabOrder = 0
OnClick = BoutonRafClick OnClick = BoutonRafClick
@@ -1354,6 +1357,7 @@ object FormPrinc: TFormPrinc
Top = 8 Top = 8
Width = 83 Width = 83
Height = 33 Height = 33
Hint = 'Demande la version XpressNet '#224' la centrale'
Caption = 'Dem version' Caption = 'Dem version'
TabOrder = 1 TabOrder = 1
OnClick = BoutVersionClick OnClick = BoutVersionClick
@@ -1393,7 +1397,7 @@ object FormPrinc: TFormPrinc
Top = 48 Top = 48
Width = 89 Width = 89
Height = 33 Height = 33
Caption = 'Demande '#233'tat r'#233'trosignalisation' Caption = 'Demande '#233'tat aiguillages'
TabOrder = 5 TabOrder = 5
WordWrap = True WordWrap = True
OnClick = ButtonTestClick OnClick = ButtonTestClick
@@ -1422,6 +1426,7 @@ object FormPrinc: TFormPrinc
Top = 8 Top = 8
Width = 81 Width = 81
Height = 33 Height = 33
Hint = 'Lance CDM Rail'
Caption = 'Lance CDM rail' Caption = 'Lance CDM rail'
TabOrder = 8 TabOrder = 8
OnClick = ButtonLanceCDMClick OnClick = ButtonLanceCDMClick
@@ -1520,12 +1525,12 @@ object FormPrinc: TFormPrinc
object Interface1: TMenuItem object Interface1: TMenuItem
Caption = 'Interface' Caption = 'Interface'
object MenuConnecterUSB: TMenuItem object MenuConnecterUSB: TMenuItem
Caption = 'Connecter USB' Caption = 'Connecter l'#39'interface en USB'
Hint = 'Connecter l'#39'interface en USB' Hint = 'Connecter l'#39'interface en USB'
OnClick = MenuConnecterUSBClick OnClick = MenuConnecterUSBClick
end end
object DeconnecterUSB: TMenuItem object DeconnecterUSB: TMenuItem
Caption = 'D'#233'connecter USB' Caption = 'D'#233'connecter interface de l'#39'USB'
Hint = 'D'#233'connecter l'#39'interface USB' Hint = 'D'#233'connecter l'#39'interface USB'
OnClick = DeconnecterUSBClick OnClick = DeconnecterUSBClick
end end
@@ -1533,12 +1538,12 @@ object FormPrinc: TFormPrinc
Caption = '-' Caption = '-'
end end
object MenuConnecterEthernet: TMenuItem object MenuConnecterEthernet: TMenuItem
Caption = 'Connecter Ethernet' Caption = 'Connecter l'#39'interface en Ethernet'
Hint = 'Connecter l'#39'interface par Ethernet' Hint = 'Connecter l'#39'interface par Ethernet'
OnClick = MenuConnecterEthernetClick OnClick = MenuConnecterEthernetClick
end end
object MenuDeconnecterEthernet: TMenuItem object MenuDeconnecterEthernet: TMenuItem
Caption = 'D'#233'connecter Ethernet' Caption = 'D'#233'connecter l'#39'interface de Ethernet'
Hint = 'D'#233'connecter l'#39'interface par Ethernet' Hint = 'D'#233'connecter l'#39'interface par Ethernet'
OnClick = MenuDeconnecterEthernetClick OnClick = MenuDeconnecterEthernetClick
end end

View File

@@ -157,7 +157,7 @@ const
titre='Signaux complexes GL '; titre='Signaux complexes GL ';
tempoFeu=100; tempoFeu=100;
MaxAcc=2048; MaxAcc=2048;
LargImg=50;HtImg=91; LargImg=50;HtImg=91; // image des feux
const_droit=2;const_devie=1; // positions aiguillages transmises par la centrale LENZ const_droit=2;const_devie=1; // positions aiguillages transmises par la centrale LENZ
const_devieG_CDM=3; // positions aiguillages transmises par cdm const_devieG_CDM=3; // positions aiguillages transmises par cdm
const_devieD_CDM=2; // positions aiguillages transmises par cdm const_devieD_CDM=2; // positions aiguillages transmises par cdm
@@ -206,28 +206,28 @@ type TBranche = record
DDevie : integer; // destination de la TJD en position déviée DDevie : integer; // destination de la TJD en position déviée
DDevieB : char ; DDevieB : char ;
tjsint : integer; // pour TJS
tjsint : integer;
tjsintb : char ; tjsintb : char ;
// éléments connectés sur la branche déviée 2 (cas d'un aiguillage triple) // éléments connectés sur la branche déviée 2 (cas d'un aiguillage triple)
Adevie2 : integer; Adevie2 : integer;
Adevie2B : char ; Adevie2B : char ;
// modifié // si modifié en mode config
modifie : boolean ; modifie : boolean ;
end; end;
Taccessoire = (aig,feu); Taccessoire = (aig,feu);
TMA = (valide,devalide); TMA = (valide,devalide);
var ancien_tablo_signalCplx,EtatsignalCplx : array[0..MaxAcc] of word; var
ancien_tablo_signalCplx,EtatsignalCplx : array[0..MaxAcc] of word;
AvecInitAiguillages,tempsCli,NbreFeux,pasreponse,AdrDevie,fenetre, AvecInitAiguillages,tempsCli,NbreFeux,pasreponse,AdrDevie,fenetre,
NombreImages,signalCpx,branche_trouve,Indexbranche_trouve,Actuel,Signal_suivant, NombreImages,signalCpx,branche_trouve,Indexbranche_trouve,Actuel,Signal_suivant,
Nbre_recu_cdm,Tempo_chgt_feux,Adj1,Adj2,NbrePN,ServeurInterfaceCDM, Nbre_recu_cdm,Tempo_chgt_feux,Adj1,Adj2,NbrePN,ServeurInterfaceCDM,
ServeurRetroCDM,TailleFonte,Nb_Det_Dist : integer; ServeurRetroCDM,TailleFonte,Nb_Det_Dist : integer;
Hors_tension2,traceSign,TraceZone,Ferme,parSocket,ackCdm,PremierFD, Hors_tension2,traceSign,TraceZone,Ferme,parSocketLenz,ackCdm,PremierFD,
NackCDM,MsgSim,succes,recu_cv,AffActionneur,AffAigDet,Option_demarrage, NackCDM,MsgSim,succes,recu_cv,AffActionneur,AffAigDet,Option_demarrage,
TraceListe,clignotant,nack,Maj_feux_cours,configNulle,LanceCDM : boolean; TraceListe,clignotant,nack,Maj_feux_cours,configNulle,LanceCDM : boolean;
@@ -236,8 +236,8 @@ var ancien_tablo_signalCplx,EtatsignalCplx : array[0..MaxAcc] of word;
FormPrinc: TFormPrinc; FormPrinc: TFormPrinc;
ack,portCommOuvert,trace,AffMem,AfficheDet,CDM_connecte,SocketCDM_connecte, ack,portCommOuvert,trace,AffMem,AfficheDet,CDM_connecte,SocketCDM_connecte,
DebugOuv,Raz_Acc_signaux,AvecInit,AvecTCO,terminal,Srvc_Aig,Srvc_Det,Srvc_Act, Raz_Acc_signaux,AvecInit,AvecTCO,terminal,Srvc_Aig,Srvc_Det,Srvc_Act,
Srvc_PosTrain,Srvc_Sig : boolean; Srvc_PosTrain,Srvc_Sig,debugtrames : boolean;
tablo : array of byte; // tableau rx usb tablo : array of byte; // tableau rx usb
Enregistrement,chaine_Envoi,chaine_recue,Id_CDM,Af, Enregistrement,chaine_Envoi,chaine_recue,Id_CDM,Af,
entete,suffixe,ConfStCom,LAY : string; entete,suffixe,ConfStCom,LAY : string;
@@ -354,6 +354,8 @@ function suivant_alg3(prec : integer;typeELprec : integer;var actuel : integer;t
function detecteur_suivant_El(el1: integer;TypeDet1 : integer;el2 : integer;TypeDet2 : integer) : integer ; function detecteur_suivant_El(el1: integer;TypeDet1 : integer;el2 : integer;TypeDet2 : integer) : integer ;
function test_memoire_zones(adresse : integer) : boolean; function test_memoire_zones(adresse : integer) : boolean;
function PresTrainPrec(AdrFeu : integer) : boolean; function PresTrainPrec(AdrFeu : integer) : boolean;
function cond_carre(adresse : integer) : boolean;
function carre_signal(adresse : integer) : boolean;
implementation implementation
@@ -1324,7 +1326,7 @@ begin
end; end;
// par socket (ethernet) // par socket (ethernet)
if parSocket then Formprinc.ClientSocketLenz.Socket.SendText(s); if parSocketLenz then Formprinc.ClientSocketLenz.Socket.SendText(s);
end; end;
// envoi d'une chaîne à la centrale Lenz par USBLenz ou socket, puis attend l'ack ou le nack // envoi d'une chaîne à la centrale Lenz par USBLenz ou socket, puis attend l'ack ou le nack
@@ -1336,7 +1338,7 @@ begin
envoi_ss_ack(s); envoi_ss_ack(s);
// attend l'ack // attend l'ack
ack:=false;nack:=false; ack:=false;nack:=false;
if portCommOuvert or ParSocket then if portCommOuvert or parSocketLenz then
begin begin
temps:=0; temps:=0;
repeat repeat
@@ -1516,7 +1518,7 @@ begin
if Acc=Aig then if Acc=Aig then
begin begin
temps:=aiguillage[adresse].temps;if temps=0 then temps:=4; temps:=aiguillage[adresse].temps;if temps=0 then temps:=4;
if portCommOuvert or ParSocket then tempo(temps); if portCommOuvert or parSocketLenz then tempo(temps);
end; end;
sleep(50); sleep(50);
@@ -1552,7 +1554,7 @@ begin
// si l'accessoire est un feu, fixer l tempo à 1 // si l'accessoire est un feu, fixer l tempo à 1
//if index_feu(adresse)<>0 then temps:=1; //if index_feu(adresse)<>0 then temps:=1;
//if portCommOuvert or ParSocket then tempo(temps); //if portCommOuvert or parSocketLenz then tempo(temps);
// pilotage à 0 pour éteindre le pilotage de la bobine du relais // pilotage à 0 pour éteindre le pilotage de la bobine du relais
s:=#$52+Char(groupe)+char(fonction or $80); // désactiver la sortie s:=#$52+Char(groupe)+char(fonction or $80); // désactiver la sortie
s:=checksum(s); s:=checksum(s);
@@ -1562,7 +1564,7 @@ end;
procedure vitesse_loco(loco : integer;vitesse : integer;sens : boolean); procedure vitesse_loco(loco : integer;vitesse : integer;sens : boolean);
var s : string; var s : string;
begin begin
if portCommOuvert or parSocket then if portCommOuvert or parSocketLenz then
begin begin
if sens then vitesse:=vitesse or 128; if sens then vitesse:=vitesse or 128;
s:=#$e4+#$13+#$0+char(loco)+char(vitesse); s:=#$e4+#$13+#$0+char(loco)+char(vitesse);
@@ -3459,7 +3461,7 @@ end;
branche_trouve:=NBranche; branche_trouve:=NBranche;
IndexBranche_trouve:=i; IndexBranche_trouve:=i;
end; end;
procedure lit_config; procedure lit_config;
@@ -3508,6 +3510,7 @@ var s,sa,chaine,SOrigine: string;
end; end;
end; end;
end; end;
until (adresse=0);
end; end;
begin begin
@@ -3561,6 +3564,7 @@ begin
end; end;
end; end;
// adresse ip et port de CDM
sa:='IPV4_PC='; sa:='IPV4_PC=';
i:=pos(sa,s); i:=pos(sa,s);
if i<>0 then if i<>0 then
@@ -3576,7 +3580,7 @@ begin
// AfficheDet:=true; // AfficheDet:=true;
sa:='IPV4_INTERFACE='; sa:='IPV4_INTERFACE=';
i:=pos(sa,s); i:=pos(sa,s);
if i<>0 then if i<>0 then
begin begin
inc(nv); inc(nv);
delete(s,i,length(sa)); delete(s,i,length(sa));
@@ -3756,6 +3760,8 @@ begin
end; end;
inc(it); inc(it);
until (Nv>=18) or (it>30);
//affiche(IntToSTR(Nv)+' variables',cyan);
if (it>30) then if (it>30) then
begin begin
s:='ERREUR: manque variables dans config-gl.cfg'; s:='ERREUR: manque variables dans config-gl.cfg';
@@ -4538,18 +4544,6 @@ begin
Ancien_detecteur[adresse]:=detecteur[adresse].etat; Ancien_detecteur[adresse]:=detecteur[adresse].etat;
end; end;
function detecteur_1(adresse : integer) : boolean;
begin
detecteur_1:=(Ancien_detecteur[adresse]=false) and ((detecteur[adresse].etat)=true);
Ancien_detecteur[adresse]:=detecteur[adresse].etat;
end;
function virgule_prec(sl : string;o : integer) : integer;
var k : integer;
begin
o:=o-1;
for k:=o downto 1 do
begin
function detecteur_1(adresse : integer) : boolean; function detecteur_1(adresse : integer) : boolean;
begin begin
detecteur_1:=(Ancien_detecteur[adresse]=false) and ((detecteur[adresse].etat)=true); detecteur_1:=(Ancien_detecteur[adresse]=false) and ((detecteur[adresse].etat)=true);
@@ -4589,7 +4583,6 @@ begin
end end
else begin s:='Erreur 175 - élément '+intToSTR(el); else begin s:='Erreur 175 - élément '+intToSTR(el);
s:=s+' non trouvé';Affiche(s,clred); s:=s+' non trouvé';Affiche(s,clred);
branche_trouve:=0; IndexBranche_trouve:=0;
branche_trouve:=0; IndexBranche_trouve:=0; branche_trouve:=0; IndexBranche_trouve:=0;
if NivDebug>=1 then AfficheDebug(s,clred); if NivDebug>=1 then AfficheDebug(s,clred);
end; end;
@@ -4602,7 +4595,6 @@ end;
// alg= algorithme : // alg= algorithme :
// 1=arret sur suivant qu'il soit un détecteur ou un aiguillage // 1=arret sur suivant qu'il soit un détecteur ou un aiguillage
// 2=arret sur aiguillage en talon mal positionné // 2=arret sur aiguillage en talon mal positionné
// 3=arret sur un aiguillage pris en pointe dévié et AdrDevie contient l'adresse de l'aiguillage dévié ainsi que typeGen
// 3=arret sur un aiguillage pris en pointe dévié et AdrDevie contient l'adresse de l'aiguillage dévié ainsi que typeGen // 3=arret sur un aiguillage pris en pointe dévié et AdrDevie contient l'adresse de l'aiguillage dévié ainsi que typeGen
// code de sortie : élément suivant ou: // code de sortie : élément suivant ou:
// 9999=erreur fatale ou itération trop longue // 9999=erreur fatale ou itération trop longue
@@ -4848,17 +4840,17 @@ begin
tjscourbe1:=(aiguillage[Adr].tjsintB='S') and (aiguillage[tjsc1].position<>const_droit); tjscourbe1:=(aiguillage[Adr].tjsintB='S') and (aiguillage[tjsc1].position<>const_droit);
tjscourbe1:=((aiguillage[Adr].tjsintB='D') and (aiguillage[tjsc1].position=const_droit)) or tjscourbe1; tjscourbe1:=((aiguillage[Adr].tjsintB='D') and (aiguillage[tjsc1].position=const_droit)) or tjscourbe1;
end; end;
if tjsc2<>0 then if tjsc2<>0 then
begin begin
tjscourbe2:=(aiguillage[AdrTjdP].tjsintB='S') and (aiguillage[tjsc2].position<>const_droit); tjscourbe2:=(aiguillage[AdrTjdP].tjsintB='S') and (aiguillage[tjsc2].position<>const_droit);
tjscourbe2:=((aiguillage[AdrTjdP].tjsintB='D') and (aiguillage[tjsc2].position=const_droit)) or tjscourbe2; tjscourbe2:=((aiguillage[AdrTjdP].tjsintB='D') and (aiguillage[tjsc2].position=const_droit)) or tjscourbe2;
end; end;
if NivDebug=3 then
if NivDebug=3 then AfficheDebug('137 - TJD '+intToSTR(Adr)+'/'+IntToSTR(AdrTjdP),clYellow); begin
s:='adr='+IntToSTR(adr)+'='; s:='137 - TJD '+intToSTR(Adr)+'/'+IntToSTR(AdrTjdP)+' pos=';
if aiguillage[Adr].position=const_droit then s:=s+'droit' if aiguillage[Adr].position=const_droit then s:=s+'droit'
else if aiguillage[Adr].position=const_devie then s:=s+'dévié' else if aiguillage[Adr].position=const_devie then s:=s+'dévié'
else s:=s+'inconnu' ; else s:=s+'inconnu' ;
if aiguillage[AdrTJDP].position=const_droit then s:=s+'/droit' if aiguillage[AdrTJDP].position=const_droit then s:=s+'/droit'
else if aiguillage[AdrTJDP].position=const_devie then s:=s+'/dévié' else if aiguillage[AdrTJDP].position=const_devie then s:=s+'/dévié'
@@ -4888,13 +4880,16 @@ begin
//Affichedebug('element connecté:'+inttostr(adr)+A,clred); //Affichedebug('element connecté:'+inttostr(adr)+A,clred);
end end
else else
if A='D' then
begin
A:=aiguillage[adr2].AdroitB; A:=aiguillage[adr2].AdroitB;
adr2:=aiguillage[adr2].Adroit; adr2:=aiguillage[adr2].Adroit;
end end
adr2:=aiguillage[adr2].Adroit; else
begin begin
if aiguillage[adr].position<>9 then if aiguillage[adr].position<>9 then
begin begin
s:='Erreur 1021 TJD '+intToSTR(adr)+' non résolue';
affichedebug(s,clred); affichedebug(s,clred);
Affiche(s,clred); Affiche(s,clred);
suivant_alg3:=9996; suivant_alg3:=9996;
@@ -5253,6 +5248,7 @@ procedure Det_Adj(adresse : integer);
detecteur_suivant:=AdrSuiv; detecteur_suivant:=AdrSuiv;
end; end;
// renvoie les adresses des détecteurs adjacents au détecteur "adresse"
// résultat dans adj1 et adj2 // résultat dans adj1 et adj2
procedure Det_Adj(adresse : integer); procedure Det_Adj(adresse : integer);
var Adr,BtypePrec,AdrFonc,Branche,BtypeFonc,AdrPrec,IndexBranche,i,Dir : integer; var Adr,BtypePrec,AdrFonc,Branche,BtypeFonc,AdrPrec,IndexBranche,i,Dir : integer;
@@ -5278,7 +5274,6 @@ begin
AdrFonc:=BrancheN[branche,i].Adresse; AdrFonc:=BrancheN[branche,i].Adresse;
BtypeFonc:=BrancheN[branche,i].BType; BtypeFonc:=BrancheN[branche,i].BType;
i:=0;
i:=0; i:=0;
repeat repeat
if BtypeFonc<>1 then if BtypeFonc<>1 then
@@ -5292,6 +5287,7 @@ begin
AdrPrec:=AdrFonc;BtypePrec:=BtypeFonc; AdrPrec:=AdrFonc;BtypePrec:=BtypeFonc;
AdrFonc:=Adr;BtypeFonc:=typeGen; AdrFonc:=Adr;BtypeFonc:=typeGen;
i:=i+1; i:=i+1;
sortie:=(i=20) or (Adr=0) or (Adr>=9996) or (TypeGen=1);
until (sortie) ; // boucle de parcours until (sortie) ; // boucle de parcours
if (typeGen=1) and (Dir=1) then begin Adj1:=Adr;end; if (typeGen=1) and (Dir=1) then begin Adj1:=Adr;end;
if (typeGen=1) and (Dir=2) then begin Adj2:=Adr;end; if (typeGen=1) and (Dir=2) then begin Adj2:=Adr;end;
@@ -5465,6 +5461,7 @@ begin
while NcondCarre<>0 do while NcondCarre<>0 do
begin begin
if Ncondcarre<>0 then dec(Ncondcarre);
resultatET:=true; resultatET:=true;
for k:=1 to NcondCarre do for k:=1 to NcondCarre do
begin begin
@@ -5477,7 +5474,7 @@ begin
//if resultatET then Affiche('VRAI',clyellow) else affiche('FAUX',clred); //if resultatET then Affiche('VRAI',clyellow) else affiche('FAUX',clred);
inc(l); inc(l);
resultatOU:=resultatOU or resultatET; resultatOU:=resultatOU or resultatET;
NCondCarre:=Length(feux[i].condcarre[l]); NCondCarre:=Length(feux[i].condcarre[l]);
end; end;
//if resultatOU then Affiche('VRAI final',clyellow) else affiche('FAUX final',clred); //if resultatOU then Affiche('VRAI final',clyellow) else affiche('FAUX final',clred);
if NivDebug=3 then if NivDebug=3 then
@@ -5615,27 +5612,12 @@ begin
if feux[i].Btype_suiv1=5 then TypeActuel:=3; // le type du feu 1=détécteur 2=aig 5=bis if feux[i].Btype_suiv1=5 then TypeActuel:=3; // le type du feu 1=détécteur 2=aig 5=bis
repeat repeat
inc(j); inc(j);
if nivDebug=3 then AfficheDebug('Itération '+IntToSTR(j),clyellow);
// à la première itération, si "actuel" est déja un détecteur, ne pas faire de recherche sur le suivant
if (j=1) and (TypeActuel=1) then
if nivDebug=3 then AfficheDebug('Itération '+IntToSTR(j),clyellow); if nivDebug=3 then AfficheDebug('Itération '+IntToSTR(j),clyellow);
// à la première itération, si "actuel" est déja un détecteur, ne pas faire de recherche sur le suivant // à la première itération, si "actuel" est déja un détecteur, ne pas faire de recherche sur le suivant
if (j=1) and (TypeActuel=1) then if (j=1) and (TypeActuel=1) then
begin begin
// if nivDebug=3 then AfficheDebug('Substitution precedent='+intToSTR(prec)+' Actuel='+IntToSTR(actuel),clyellow);
end
else
begin
//if nivDebug=3 then AfficheDebug('Engagement j='+IntToSTR(j)+' '+IntToSTR(prec)+'/'+IntToSTR(actuel),clyellow);
AdrSuiv:=suivant_alg3(prec,TypePrec,actuel,TypeActuel,1);
{if (typeGen=2) then // si le précédent est une TJD/S et le suivant aussi
begin
if ((aiguillage[Adrsuiv].modele=2) or (aiguillage[AdrSuiv].modele=3)) and
((aiguillage[actuel].modele=2) or (aiguillage[actuel].modele=3)) then
begin
AdrSuiv:=actuel; AdrSuiv:=actuel;
end end
else else
@@ -5696,7 +5678,6 @@ begin
end end
end end
else if nivDebug=3 then AfficheDebug('Pas de feu pour le det '+IntToSTR(AdrSuiv),clyellow); else if nivDebug=3 then AfficheDebug('Pas de feu pour le det '+IntToSTR(AdrSuiv),clyellow);
end;
end; end;
until (j=10) or ((AdrFeu<>0) and (num_feu=rang)); until (j=10) or ((AdrFeu<>0) and (num_feu=rang));
if etat=0 then Signal_Suivant:=0; if etat=0 then Signal_Suivant:=0;
@@ -6049,6 +6030,7 @@ var PresTrain : boolean;
test_route_valide:=10 ; test_route_valide:=10 ;
end; end;
// présence train 3 détecteurs avant le feu
function PresTrainPrec(AdrFeu : integer) : boolean; function PresTrainPrec(AdrFeu : integer) : boolean;
var PresTrain : boolean; var PresTrain : boolean;
j,i,Det_initial,Adr_El_Suiv,Btype_el_suivant,DetPrec1,DetPrec2,DetPrec3,DetPrec4 : integer; j,i,Det_initial,Adr_El_Suiv,Btype_el_suivant,DetPrec1,DetPrec2,DetPrec3,DetPrec4 : integer;
@@ -6106,7 +6088,7 @@ begin
DetPrec2:=detecteur_suivant_El(det_initial,1,DetPrec1,1); DetPrec2:=detecteur_suivant_El(det_initial,1,DetPrec1,1);
if DetPrec2<1024 then if DetPrec2<1024 then
begin begin
DetPrec3:=detecteur_suivant_El(DetPrec1,1,DetPrec2,1); DetPrec3:=detecteur_suivant_El(DetPrec1,1,DetPrec2,1);
if DetPrec3<1024 then if DetPrec3<1024 then
begin begin
DetPrec4:=detecteur_suivant_El(DetPrec2,1,DetPrec3,1); DetPrec4:=detecteur_suivant_El(DetPrec2,1,DetPrec3,1);
@@ -6115,7 +6097,7 @@ begin
if AffSignal or (NivDebug=3) then AfficheDebug('Les détecteurs précédents au feu '+IntToSTR(Adrfeu)+' sont:'+intToSTR(Det_initial)+' '+intToSTR(DetPrec1)+' '+intToSTR(DetPrec2)+' '+intToSTR(DetPrec3)+' '+intToSTR(DetPrec4),clyellow); if AffSignal or (NivDebug=3) then AfficheDebug('Les détecteurs précédents au feu '+IntToSTR(Adrfeu)+' sont:'+intToSTR(Det_initial)+' '+intToSTR(DetPrec1)+' '+intToSTR(DetPrec2)+' '+intToSTR(DetPrec3)+' '+intToSTR(DetPrec4),clyellow);
PresTrain:=MemZone[DetPrec4,detPrec3] or PresTrain:=MemZone[DetPrec4,detPrec3] or
MemZone[DetPrec3,detPrec2] or MemZone[DetPrec2,detPrec1] or MemZone[DetPrec1,Det_initial] or presTrain ; MemZone[DetPrec3,detPrec2] or MemZone[DetPrec2,detPrec1] or MemZone[DetPrec1,Det_initial] or presTrain ;
if AffSignal or (NivDebug=3) then if AffSignal or (NivDebug=3) then
begin begin
if MemZone[DetPrec4,detPrec3] then AfficheDebug('0.présence train '+IntToSTR(DetPrec4)+' '+IntToSTR(detPrec3),clyellow); if MemZone[DetPrec4,detPrec3] then AfficheDebug('0.présence train '+IntToSTR(DetPrec4)+' '+IntToSTR(detPrec3),clyellow);
if MemZone[DetPrec3,detPrec2] then AfficheDebug('1.présence train '+IntToSTR(DetPrec3)+' '+IntToSTR(detPrec2),clyellow); if MemZone[DetPrec3,detPrec2] then AfficheDebug('1.présence train '+IntToSTR(DetPrec3)+' '+IntToSTR(detPrec2),clyellow);
@@ -6125,9 +6107,9 @@ begin
end; end;
end; end;
//if AffSignal then AfficheDebug('MemZone'+intToSTR(DetPrec3)+' '+IntToSTR(detPrec2) = '+MemZone[DetPrec3,detPrec2] //if AffSignal then AfficheDebug('MemZone'+intToSTR(DetPrec3)+' '+IntToSTR(detPrec2) = '+MemZone[DetPrec3,detPrec2]
end; end;
end; end;
end; end;
end; end;
inc(j); inc(j);
until (j>=5); until (j>=5);
@@ -6295,6 +6277,7 @@ end;
end; end;
end; end;
end; end;
envoi_signauxCplx;
end; end;
Procedure Maj_feux; Procedure Maj_feux;
@@ -6359,6 +6342,7 @@ var AdrFeu,AdrDetFeu,Nbre,Nouveau_Det,i,resultat,det1,det2,det3,AdrSuiv,TypeSuiv
// calcul des zones depuis le tableau des fronts descendants des évènements détecteurs // calcul des zones depuis le tableau des fronts descendants des évènements détecteurs
// transmis dans le tableau Event_det // transmis dans le tableau Event_det
procedure calcul_zones; procedure calcul_zones;
var AdrFeu,AdrDetFeu,Nbre,Nouveau_Det,i,resultat,det1,det2,det3,AdrSuiv,TypeSuiv,AdrPrec : integer ;
creer_tableau : boolean; creer_tableau : boolean;
s : string; s : string;
begin begin
@@ -6503,14 +6487,14 @@ end;
if TraceListe then if TraceListe then
begin begin
AfficheDebug('Nouveau Tampon train '+intToStr(N_trains)+'--------',clyellow); AfficheDebug('Nouveau Tampon train '+intToStr(N_trains)+'--------',clyellow);
AfficheDebug(intToSTR(event_det_train[N_trains].det[1]),clyellow ); AfficheDebug(intToSTR(event_det_train[N_trains].det[1]),clyellow );
end; end;
end; end;
// demande l'état d'un accessoire à la centrale. Le résultat sera réceptionné sur évènement des informations // demande l'état d'un accessoire à la centrale. Le résultat sera réceptionné sur évènement des informations
// de rétrosignalisation. // de rétrosignalisation.
procedure demande_info_acc(adresse : integer); procedure demande_info_acc(adresse : integer);
var s : string; var s : string;
n : integer; n : integer;
@@ -6622,6 +6606,15 @@ begin
end; end;
Procedure affiche_memoire; Procedure affiche_memoire;
var s: string;
begin
s:='Mémoire évènements '+IntToSTR( 100*N_Event_tick div Max_Event_det_tick)+' %';
Formprinc.statictext.caption:=s;
end;
procedure evalue;
begin
if not(configNulle) then
begin begin
//if CDM_connecte // and (length(recuCDM)<1000) then //if CDM_connecte // and (length(recuCDM)<1000) then
Maj_feux; // on ne traite pas les calculs si CDM en envoie plusieurs Maj_feux; // on ne traite pas les calculs si CDM en envoie plusieurs
@@ -6723,7 +6716,7 @@ begin
if aiguillage[i].position=9 then if aiguillage[i].position=9 then
begin begin
Affiche('Attention : position de l''aiguillage '+IntToSTR(i)+' inconnue',clred); Affiche('Attention : position de l''aiguillage '+IntToSTR(i)+' inconnue',clred);
AfficheDebug('Attention : position de l''aiguillage '+IntToSTR(i)+' inconnue',clred); AfficheDebug('Attention : position de l''aiguillage '+IntToSTR(i)+' inconnue',clred);
end; end;
end; end;
end; end;
@@ -6746,6 +6739,7 @@ end;
if AvecTCO then if AvecTCO then
begin begin
formTCO.Maj_TCO(Adresse); formTCO.Maj_TCO(Adresse);
end;
end; end;
// évènement d'aiguillage // évènement d'aiguillage
@@ -6755,9 +6749,11 @@ begin
begin begin
// ------------------- traitement du numéro d'objet ------------------------- // ------------------- traitement du numéro d'objet -------------------------
// init objet // init objet
if aiguillage[adresse].objet=0 then
begin
aiguillage[adresse].objet:=objet;
//affiche('stockage Aiguillage '+intToSTR(adresse)+' objet='+intToSTR(objet),clYellow); //affiche('stockage Aiguillage '+intToSTR(adresse)+' objet='+intToSTR(objet),clYellow);
end; end;
aiguillage[adresse].objet:=objet;
// ne pas faire l'évaluation si l'ancien état de l'aiguillage est indéterminée (9) // ne pas faire l'évaluation si l'ancien état de l'aiguillage est indéterminée (9)
// car le RUN vient de démarrer // car le RUN vient de démarrer
@@ -6785,7 +6781,7 @@ begin
event_det_tick[N_event_tick].aiguillage:=adresse; event_det_tick[N_event_tick].aiguillage:=adresse;
event_det_tick[N_event_tick].etat:=pos; event_det_tick[N_event_tick].etat:=pos;
event_det_tick[N_event_tick].objet:=objet; event_det_tick[N_event_tick].objet:=objet;
// Mettre à jour le TCO // Mettre à jour le TCO
if AvecTCO then if AvecTCO then
begin begin
@@ -7495,7 +7491,7 @@ begin
//Menu_interface(devalide); //Menu_interface(devalide);
// créée la fenetre debug // créée la fenetre debug
FormDebug:=TFormDebug.Create(Self); FormDebug:=TFormDebug.Create(Self);
FormDebug.Caption:=AF+' debug'; FormDebug.Caption:=AF+' debug';
N_Trains:=0; N_Trains:=0;
@@ -7508,6 +7504,7 @@ begin
Diffusion:=AvecInit; Diffusion:=AvecInit;
Application.processMessages; Application.processMessages;
// créée la fenetre vérification de version
FormVersion:=TformVersion.Create(Self); FormVersion:=TformVersion.Create(Self);
ferme:=false; ferme:=false;
@@ -7549,7 +7546,7 @@ begin
begin begin
Affiche('demande connexion à la centrale Lenz par Ethernet',clyellow); Affiche('demande connexion à la centrale Lenz par Ethernet',clyellow);
ClientSocketLenz.port:=port; ClientSocketLenz.port:=port;
ClientSocketLenz.Address:=AdresseIP; ClientSocketLenz.Address:=AdresseIP;
ClientSocketLenz.Open; ClientSocketLenz.Open;
end end
end; end;
@@ -7574,7 +7571,7 @@ begin
NbreImagePLigne:=Formprinc.ScrollBox1.Width div (largImg+5); NbreImagePLigne:=Formprinc.ScrollBox1.Width div (largImg+5);
if not(diffusion) then LireunfichierdeCV1.enabled:=true; if not(diffusion) then LireunfichierdeCV1.enabled:=true;
// ajoute une image dynamiquement // ajoute une image dynamiquement
for i:=1 to NbreFeux do for i:=1 to NbreFeux do
begin begin
@@ -7610,7 +7607,6 @@ begin
//essai &&&&&&&&&& //essai &&&&&&&&&&
Affiche('Fin des initialisations',clyellow); Affiche('Fin des initialisations',clyellow);
LabelEtat.Caption:=' '; LabelEtat.Caption:=' ';
Affiche_memoire;
Affiche_memoire; Affiche_memoire;
//--------------------------------- //---------------------------------
{ {
@@ -7697,7 +7693,7 @@ begin
if (Tempo_init=1) and AvecInit then if (Tempo_init=1) and AvecInit then
begin begin
if not(ConfigNulle) then Affiche('Positionnement des feux',clYellow); if not(ConfigNulle) then Affiche('Positionnement des feux',clYellow);
if not(ferme) and not(ConfigNulle) then envoi_signauxCplx; // initialisation des feux if not(ferme) and not(ConfigNulle) then envoi_signauxCplx; // initialisation des feux
if not(ConfigNulle) and not(ferme) and (AvecInitAiguillages=1) then if not(ConfigNulle) and not(ferme) and (AvecInitAiguillages=1) then
begin begin
Affiche('Positionnement des aiguillages',clYellow); Affiche('Positionnement des aiguillages',clYellow);
@@ -7917,7 +7913,7 @@ begin
TextOut(Rect.Left,Rect.Top+4,ListBox1.Items[index]); TextOut(Rect.Left,Rect.Top+4,ListBox1.Items[index]);
end; end;
end; end;
procedure TFormPrinc.BoutonRafClick(Sender: TObject); procedure TFormPrinc.BoutonRafClick(Sender: TObject);
begin begin
rafraichit; rafraichit;
@@ -7933,7 +7929,7 @@ begin
case ErrorCode of case ErrorCode of
10053 : s:=s+': Connexion avortée - Timeout'; 10053 : s:=s+': Connexion avortée - Timeout';
10054 : s:=s+': Connexion avortée par tiers'; 10054 : s:=s+': Connexion avortée par tiers';
10060 : s:=s+': Timeout'; 10060 : s:=s+': Timeout';
10061 : s:=s+': Connexion refusée'; 10061 : s:=s+': Connexion refusée';
10065 : s:=s+': Port non connecté'; 10065 : s:=s+': Port non connecté';
end; end;
@@ -7953,7 +7949,7 @@ begin
10053 : s:=s+': Connexion avortée - Timeout'; 10053 : s:=s+': Connexion avortée - Timeout';
10054 : s:=s+': Connexion avortée par tiers'; 10054 : s:=s+': Connexion avortée par tiers';
10060 : s:=s+': Timeout'; 10060 : s:=s+': Timeout';
10061 : s:=s+': Connexion refusée'; 10061 : s:=s+': Connexion refusée';
10065 : s:=s+': Port non connecté'; 10065 : s:=s+': Port non connecté';
end; end;
affiche(s,ClOrange); affiche(s,ClOrange);
@@ -7987,7 +7983,7 @@ begin
Maj_feux ; // évalue l'état des signaux Maj_feux ; // évalue l'état des signaux
end; end;
procedure TFormPrinc.ButtonInfoClick(Sender: TObject); procedure TFormPrinc.ButtonInfoClick(Sender: TObject);
begin begin
Affiche('Ce programme pilote des signaux complexes de façon autonome ou avec CDM rail ',ClYellow); Affiche('Ce programme pilote des signaux complexes de façon autonome ou avec CDM rail ',ClYellow);
@@ -8051,11 +8047,7 @@ begin
end; end;
function cde_cdm(s : string) : string; function cde_cdm(s : string) : string;
var i : integer; var i : integer;
begin
i:=length(s)-1;
cde_cdm:='0'+IntToSTR(i)+s;
end;
begin begin
i:=length(s)-1; i:=length(s)-1;
cde_cdm:='0'+IntToSTR(i)+s; cde_cdm:='0'+IntToSTR(i)+s;
@@ -8143,7 +8135,7 @@ procedure TFormPrinc.ClientSocketLenzConnect(Sender: TObject;Socket: TCustomWinS
end; end;
end; end;
procedure TFormPrinc.ClientSocketLenzConnect(Sender: TObject;Socket: TCustomWinSocket); procedure TFormPrinc.ClientSocketLenzConnect(Sender: TObject;Socket: TCustomWinSocket);
begin begin
@@ -8164,57 +8156,94 @@ begin
Affiche(s,clYellow); Affiche(s,clYellow);
AfficheDebug(s,clYellow); AfficheDebug(s,clYellow);
SocketCDM_connecte:=True; SocketCDM_connecte:=True;
MenuConnecterUSB.enabled:=false; MenuConnecterUSB.enabled:=false;
DeConnecterUSB.enabled:=false; DeConnecterUSB.enabled:=false;
ConnecterCDMRail.enabled:=false; ConnecterCDMRail.enabled:=false;
DeConnecterCDMRail.enabled:=true; DeConnecterCDMRail.enabled:=true;
end; end;
procedure Interprete_trameCDM(trame_CDM:string); procedure Interprete_trameCDM(trame_CDM:string);
var i,j,objet,posST,posAC,posDT,posSG,posXY,k,l,erreur, adr,adr2,etat,etataig, var i,j,objet,posST,posAC,posDT,posSG,posXY,k,l,erreur, adr,adr2,etat,etataig,
vitesse,etatAig2,name,prv : integer ; vitesse,etatAig2,name,prv,nbre,nbreVir,long : integer ;
x,y,x2,y2 : longint ; x,y,x2,y2 : longint ;
s,ss,train : string; s,ss,train,commandeCDM : string;
traite,sort : boolean;
begin
{
recuCDM:='S-E-52-6601-CMDACC-ST_TO|037|05|NAME=2;OBJ=2;AD=126;AD2=0;STATE=0;S-E-52-6602-CMDACC'; recuCDM:='S-E-52-6601-CMDACC-ST_TO|037|05|NAME=2;OBJ=2;AD=126;AD2=0;STATE=0;S-E-52-6602-CMDACC';
begin recuCDM:=recuCDM+'-ST_TO|037|05|NAME=6;OBJ=6;AD=127;AD2=0;STATE=0;S-E-52-6603-CMDACC-ST_TO|039|05|NAME=10;OBJ=10;AD=128;AD2=0;STATE=0;S-E-52-6604-CMDACC-ST_TO|039|05|';
recuCDM:=recuCDM+'NAME=14;OBJ=14;AD=129;OBJ=10;AD=128;AD2=0;STATE=0;S-E-52-6604-CMDACC-ST_TO|039|05|NAME=14;OBJ=14;AD=129;AD2=0;STATE=0;'; recuCDM:=recuCDM+'NAME=14;OBJ=14;AD=129;OBJ=10;AD=128;AD2=0;STATE=0;S-E-52-6604-CMDACC-ST_TO|039|05|NAME=14;OBJ=14;AD=129;AD2=0;STATE=0;';
}
AckCDM:=trame_CDM<>''; AckCDM:=trame_CDM<>'';
if pos('ACK',trame_CDM)=0 then
begin begin
if pos('ACK',recuCDM)=0 then if pos('ERR=200',trame_CDM)<>0 then Affiche('Erreur CDM : réseau non chargé',clred);
begin end;
if pos('ERR=200',recuCDM)<>0 then Affiche('Erreur CDM : réseau non chargé',clred);
end; k:=0;
//Affiche('L='+InTToSTR(length(recuCDM)),clyellow);
repeat repeat
repeat // trouver la longueur de la chaîne de paramètres
// Affiche('K='+intToSTR(k)+' longueur='+intToSTR(length(recuCDM)),clyellow);
// évènement aiguillage. Le champ AD2 n'est pas forcément présent
posST:=pos('CMDACC-ST_TO',recuCDM);
if posST<>0 then
begin
//Affiche(recuCDM,cllime);
objet:=0;
i:=posEx('OBJ=',recuCDM,posST);ss:=copy(recuCDM,i+4,10);
if i<>0 then val(ss,objet,erreur) else Affiche('Erreur pas d''objet ',clred);
i:=posEx('AD=',recuCDM,posST);ss:=copy(recuCDM,i+3,10); //Affiche('j='+IntToSTR(j)+' i='+intToSTR(i),clred);
if i<posST then begin Affiche('Erreur 96',clred);exit;end;
val(ss,adr,erreur);
//Affiche(copy(recuCDM,j,i+80),clOrange);
i:=posEx('AD2=',recuCDM,i);ss:=copy(recuCDM,i+4,10); // Affiche('i='+intToSTR(i),clOrange);
if i<posST then begin Affiche('Erreur 97',clred);exit;end;
val(ss,adr2,erreur); //Affiche('adr2='+intToSTR(adr2),clyellow);
i:=posEx('STATE=',recuCDM,i);ss:=copy(recuCDM,i+6,10); //Affiche('j='+IntToSTR(j)+' i='+intToSTR(i),clred);
i:=pos('|',trame_CDM); i:=pos('|',trame_CDM);
val(copy(trame_CDM,i+1,5),long,erreur); val(copy(trame_CDM,i+1,5),long,erreur);
//Affiche('long chaine param='+intToSTR(long),clyellow); //Affiche('long chaine param='+intToSTR(long),clyellow);
if long=0 then
begin
if debugTrames then Affiche('Longueur nulle',clYellow);
Nbre_recu_cdm:=0;
exit;
end;
// trouver le nombre de paramètres
i:=posEx('|',trame_CDM,i+1);
if i=0 then
begin
if debugTrames then Affiche('0 paramètres '+trame_CDM,clyellow);
Nbre_recu_cdm:=0;
exit;
end;
val(copy(trame_CDM,i+1,5),nbre,erreur);
//Affiche('nbre='+IntToSTR(nbre),clyellow);
// compter le nombre de virgules qui doit être égal au nombre de paramètres
NbreVir:=0; // nombre de virgules
repeat
i:=posEx(';',trame_CDM,i+1);
if i<>0 then inc(NbreVir);
until (i=0) or (NbreVir=nbre);
if i=0 then
begin
if debugTrames then Affiche('tronqué : '+trame_CDM,clyellow);
residuCDM:=trame_CDM;
Nbre_recu_cdm:=0;
exit;
end;
CommandeCDM:=copy(trame_CDM,1,i);
if debugTrames then Affiche(commandeCDM,clorange);
Delete(trame_CDM,1,i);
// Affiche('K='+intToSTR(k)+' longueur='+intToSTR(length(recuCDM)),clyellow);
// évènement aiguillage. Le champ AD2 n'est pas forcément présent
posST:=pos('CMDACC-ST_TO',commandeCDM);
if posST<>0 then
begin
delete(commandeCDM,posST,12);
objet:=0;
i:=posEx('OBJ=',commandeCDM,posST);ss:=copy(commandeCDM,i+4,10);
if i<>0 then begin val(ss,objet,erreur);delete(commandeCDM,i,6);end else Affiche('Erreur 95 : pas d''objet ',clred);
i:=posEx('AD=',commandeCDM,posST);ss:=copy(commandeCDM,i+3,10); //Affiche('j='+IntToSTR(j)+' i='+intToSTR(i),clred);
if i=0 then begin Affiche('Erreur 96 : absence AD aig '+intToSTR(adr),clred);Affiche(commandeCDM,clyellow);end;
val(ss,adr,erreur);Delete(commandeCDM,i,4);
//Affiche(copy(recuCDM,j,i+80),clOrange);
i:=posEx('AD2=',commandeCDM,i);ss:=copy(commandeCDM,i+4,10); // Affiche('i='+intToSTR(i),clOrange);
if i=0 then begin Affiche('Erreur 97 : absence AD2 aig '+intToSTR(adr),clred);Affiche(commandeCDM,clyellow);end; if i=0 then begin Affiche('Erreur 97 : absence AD2 aig '+intToSTR(adr),clred);Affiche(commandeCDM,clyellow);end;
Affiche(s,clred); val(ss,adr2,erreur); //Affiche('adr2='+intToSTR(adr2),clyellow);
Nbre_recu_cdm:=0; Delete(commandeCDM,i,5);
Affiche(recuCDM,clred);
exit; i:=posEx('STATE=',commandeCDM,i);ss:=copy(commandeCDM,i+6,10); //Affiche('j='+IntToSTR(j)+' i='+intToSTR(i),clred);
if i=0 then begin Affiche('Erreur 98 : absence STATE aig '+intToSTR(adr),clred);Affiche(commandeCDM,clyellow);end; if i=0 then begin Affiche('Erreur 98 : absence STATE aig '+intToSTR(adr),clred);Affiche(commandeCDM,clyellow);end;
val(ss,etat,erreur); val(ss,etat,erreur);
Delete(commandeCDM,i,7); Delete(commandeCDM,i,7);
@@ -8257,26 +8286,30 @@ begin
if (etat=0) or (etat=2) then etatAig:=2; if (etat=0) or (etat=2) then etatAig:=2;
if etat=3 then etatAig:=1; if etat=3 then etatAig:=1;
// état de l'aiguillage 2 // état de l'aiguillage 2
adr2:=aiguillage[adr].AdrTriple; adr2:=aiguillage[adr].AdrTriple;
if (etat=0) or (etat=3) then etatAig2:=2;
if etat=2 then etatAig2:=1;
Event_Aig(adr,etatAig,objet);
Event_Aig(adr2,etatAig2,objet);
if (etat=0) or (etat=3) then etatAig2:=2; if (etat=0) or (etat=3) then etatAig2:=2;
if etat=2 then etatAig2:=1; if etat=2 then etatAig2:=1;
Event_Aig(adr,etatAig,objet);
Event_Aig(adr2,etatAig2,objet); Event_Aig(adr2,etatAig2,objet);
end;
// Tempo_chgt_feux:=10; // demander la mise à jour des feux // Tempo_chgt_feux:=10; // demander la mise à jour des feux
end; end;
end;
// évènement détecteur
posDT:=pos('CMDACC-ST_DT',commandeCDM);
if posDT<>0 then
begin begin
// évènement détecteur Delete(commandeCDM,posDT,12);
posDT:=pos('CMDACC-ST_DT',recuCDM); i:=posEx('AD=',commandeCDM,posDT);
if posDT<>0 then if i<>0 then
begin
ss:=copy(commandeCDM,i+3,10);Delete(commandeCDM,i,4);
val(ss,adr,erreur);
end; end;
i:=posEx('AD=',recuCDM,posDT);ss:=copy(recuCDM,i+3,10); i:=posEx('TRAIN=',commandeCDM,posDT);
val(ss,adr,erreur); j:=PosEx(';',commandeCDM,i);
i:=posEx('TRAIN=',recuCDM,posDT); train:=copy(commandeCDM,i+6,j-i-6);
delete(commandeCDM,i,7); delete(commandeCDM,i,7);
//Affiche('Train=*'+Train+'*',clOrange); //Affiche('Train=*'+Train+'*',clOrange);
@@ -8284,13 +8317,14 @@ begin
val(ss,etat,erreur); Delete(commandeCDM,i,7); val(ss,etat,erreur); Delete(commandeCDM,i,7);
if (train='_NONE') then train:=detecteur[Adr].train; if (train='_NONE') then train:=detecteur[Adr].train;
Event_detecteur(Adr,etat=1,train); Event_detecteur(Adr,etat=1,train);
//Affiche(IntToSTR(adr)+' '+IntToSTR(etat),clyellow); //Affiche(IntToSTR(adr)+' '+IntToSTR(etat),clyellow);
if AfficheDet then Affiche('Rétro Détecteur '+intToSTR(adr)+'='+IntToStr(etat),clYellow); if AfficheDet then Affiche('Rétro Détecteur '+intToSTR(adr)+'='+IntToStr(etat),clYellow);
end ; end ;
// évènement signal - non stocké ni interprété // évènement signal - non stocké ni interprété
// évènement signal - non stocké ni interprété posSG:=pos('CMDACC-ST_SG',commandeCDM);
posSG:=pos('CMDACC-ST_SG',recuCDM); if posSG<>0 then
begin begin
Delete(commandeCDM,posSG,12); Delete(commandeCDM,posSG,12);
i:=posEx('AD=',commandeCDM,posDT);ss:=copy(commandeCDM,i+3,10); i:=posEx('AD=',commandeCDM,posDT);ss:=copy(commandeCDM,i+3,10);
@@ -8298,91 +8332,109 @@ begin
i:=posEx('STATE=',commandeCDM,posSG);ss:=copy(commandeCDM,i+6,10); i:=posEx('STATE=',commandeCDM,posSG);ss:=copy(commandeCDM,i+6,10);
Delete(commandeCDM,posSG,i+5-posSG); Delete(commandeCDM,posSG,i+5-posSG);
val(ss,etat,erreur); val(ss,etat,erreur);
//Affiche('SignalCDM '+intToSTR(adr)+'='+IntToStr(etat),clYellow); //Affiche('SignalCDM '+intToSTR(adr)+'='+IntToStr(etat),clYellow);
end ; end ;
// évènement actionneur // évènement actionneur
// attention un actionneur qui repasse à 0 ne contient pas de nom de train
//S-E-03-0157-CMDACC-ST_AC|049|05|NAME=0;OBJ=7101;AD=815;TRAIN=CC406526;STATE=1; //S-E-03-0157-CMDACC-ST_AC|049|05|NAME=0;OBJ=7101;AD=815;TRAIN=CC406526;STATE=1;
//S-E-03-0157-CMDACC-ST_AC|049|05|NAME=0;OBJ=7101;AD=815;TRAIN=CC406526;STATE=1; posAC:=pos('CMDACC-ST_AC',commandeCDM);
if posAC<>0 then if posAC<>0 then
if posAC<>0 then begin
begin Delete(commandeCDM,posAC,12);
i:=posEx('AD=',recuCDM,posAC);ss:=copy(recuCDM,i+3,10); i:=posEx('AD=',commandeCDM,posAC);ss:=copy(commandeCDM,i+3,10);
val(ss,adr,erreur); val(ss,adr,erreur);
i:=posEx('NAME=',recuCDM,posAC);ss:=copy(recuCDM,i+5,10); i:=posEx('NAME=',commandeCDM,posAC);ss:=copy(commandeCDM,i+5,10);
val(ss,name,erreur); val(ss,name,erreur);
i:=posEx('TRAIN=',recuCDM,posAC);l:=PosEx(';',recuCDM,i); i:=posEx('TRAIN=',commandeCDM,posAC);l:=PosEx(';',commandeCDM,i);
train:=copy(commandeCDM,i+6,l-i-6); train:=copy(commandeCDM,i+6,l-i-6);
i:=posEx('STATE=',commandeCDM,posAC);ss:=copy(commandeCDM,i+6,10); i:=posEx('STATE=',commandeCDM,posAC);ss:=copy(commandeCDM,i+6,10);
val(ss,etat,erreur); val(ss,etat,erreur);
Delete(commandeCDM,posAC,i-posAC); Delete(commandeCDM,posAC,i-posAC);
i:=pos(';',commandeCDM); i:=pos(';',commandeCDM);
if i<>0 then Delete(commandeCDM,1,i); if i<>0 then Delete(commandeCDM,1,i);
if AfficheDet then if AfficheDet then
Affiche('Actionneur AD='+intToSTR(adr)+' Nom='+intToSTR(name)+' Train='+train+' Etat='+IntToSTR(etat),clyellow); Affiche('Actionneur AD='+intToSTR(adr)+' Nom='+intToSTR(name)+' Train='+train+' Etat='+IntToSTR(etat),clyellow);
Event_act(adr,etat,train); // déclenche évent actionneur Event_act(adr,etat,train); // déclenche évent actionneur
end; end;
// évènement position des trains - non stocké ni interprété
posXY:=pos('CMDTRN-SPDXY',commandeCDM); posXY:=pos('CMDTRN-SPDXY',commandeCDM);
if posXY<>0 then if posXY<>0 then
if posXY<>0 then begin
Delete(commandeCDM,posXY,12); Delete(commandeCDM,posXY,12);
i:=posEx('AD=',recuCDM,posXY);l:=posEx(';',recuCDM,i); i:=posEx('AD=',commandeCDM,posXY);l:=posEx(';',commandeCDM,i);
ss:=copy(recuCDM,i+3,10); ss:=copy(commandeCDM,i+3,10);
val(ss,adr,erreur); val(ss,adr,erreur);
//Affiche('AD='+IntToSTR(adr),clyellow); //Affiche('AD='+IntToSTR(adr),clyellow);
Delete(commandeCDM,i,l-i+1); Delete(commandeCDM,i,l-i+1);
i:=posEx('NAME=',recuCDM,posXY);l:=posEx(';',recuCDM,i); i:=posEx('NAME=',commandeCDM,posXY);l:=posEx(';',commandeCDM,i);
train:=copy(commandeCDM,i+5,l-i-5); train:=copy(commandeCDM,i+5,l-i-5);
//Affiche('Train='+train,clyellow); //Affiche('Train='+train,clyellow);
Delete(recuCDM,i,l-i+1); Delete(commandeCDM,i,l-i+1);
i:=posEx('SPEED=',recuCDM,posXY);l:=posEx(';',recuCDM,i); i:=posEx('SPEED=',commandeCDM,posXY);l:=posEx(';',commandeCDM,i);
ss:=copy(recuCDM,i+6,10); ss:=copy(commandeCDM,i+6,10);
val(ss,vitesse,erreur); val(ss,vitesse,erreur);
//Affiche('Vitesse='+intToSTR(vitesse),clyellow); //Affiche('Vitesse='+intToSTR(vitesse),clyellow);
Delete(recuCDM,i,l-i+1); Delete(commandeCDM,i,l-i+1);
i:=posEx('X=',recuCDM,posXY);l:=posEx(';',recuCDM,i); i:=posEx('X=',commandeCDM,posXY);l:=posEx(';',commandeCDM,i);
ss:=copy(recuCDM,i+2,10); ss:=copy(commandeCDM,i+2,10);
val(ss,x,erreur); val(ss,x,erreur);
//Affiche('X='+IntTostr(x),clyellow); //Affiche('X='+IntTostr(x),clyellow);
Delete(recuCDM,i,l-i+1); Delete(commandeCDM,i,l-i+1);
i:=posEx('Y=',recuCDM,posXY);l:=posEx(';',recuCDM,i); i:=posEx('Y=',commandeCDM,posXY);l:=posEx(';',commandeCDM,i);
ss:=copy(recuCDM,i+2,10); ss:=copy(commandeCDM,i+2,10);
val(ss,y,erreur); val(ss,y,erreur);
//Affiche('Y='+IntTostr(y),clyellow);; //Affiche('Y='+IntTostr(y),clyellow);;
Delete(recuCDM,i,l-i+1); Delete(commandeCDM,i,l-i+1);
i:=posEx('X2=',recuCDM,posXY);l:=posEx(';',recuCDM,i); i:=posEx('X2=',commandeCDM,posXY);l:=posEx(';',commandeCDM,i);
ss:=copy(recuCDM,i+3,10); ss:=copy(commandeCDM,i+3,10);
val(ss,x2,erreur); val(ss,x2,erreur);
//Affiche('X2='+IntTostr(x2),clyellow); //Affiche('X2='+IntTostr(x2),clyellow);
Delete(recuCDM,i,l-i+1); Delete(commandeCDM,i,l-i+1);
i:=posEx('Y2=',recuCDM,posXY);l:=posEx(';',recuCDM,i); i:=posEx('Y2=',commandeCDM,posXY);l:=posEx(';',commandeCDM,i);
ss:=copy(commandeCDM,i+3,10); ss:=copy(commandeCDM,i+3,10);
val(ss,y2,erreur); val(ss,y2,erreur);
//Affiche('Y2='+IntTostr(y2),clyellow); //Affiche('Y2='+IntTostr(y2),clyellow);
Delete(recuCDM,i,l-i+1); Delete(commandeCDM,i,l-i+1);
Delete(commandeCDM,posXY,12); Delete(commandeCDM,posXY,12);
end; end;
end;
inc(k);
//Affiche('k='+intToSTR(k),clyellow);
sort:=(length(trame_CDM)<10) or (k>=2000);// or (posST=0) and (posDT=0) and (posAC=0) and (posSG=0);
until (sort); until (sort);
//Affiche('k='+IntToSTR(k)+' Ligne traitée '+recuCDM,clLime); //Affiche('k='+IntToSTR(k)+' Ligne traitée '+recuCDM,clLime);
//if pos('_ACK',recuCDM)=0 then recuCDM:=''; // effacer la trame sauf si c'est une trame ACK car le trame est utilisée dans le process de connexion de cdm //if pos('_ACK',recuCDM)=0 then recuCDM:=''; // effacer la trame sauf si c'est une trame ACK car le trame est utilisée dans le process de connexion de cdm
if k>=2000 then begin Affiche('Erreur 90 : Longrestante='+IntToSTR(length(trame_CDM)),clred); Affiche(trame_CDM,clred); end; if k>=2000 then begin Affiche('Erreur 90 : Longrestante='+IntToSTR(length(trame_CDM)),clred); Affiche(trame_CDM,clred); end;
if k>=200 then begin Affiche('Erreur 90 : Longrestante='+IntToSTR(length(recuCDM)),clred); Affiche(recuCDM,clred); end;
Nbre_recu_cdm:=0; Nbre_recu_cdm:=0;
end; end;
// réception d'un message de CDM rail // réception d'un message de CDM rail
procedure TFormPrinc.ClientSocketCDMRead(Sender: TObject;Socket: TCustomWinSocket); procedure TFormPrinc.ClientSocketCDMRead(Sender: TObject;Socket: TCustomWinSocket);
var i,j,k,l,erreur, adr,adr2,etat,etataig,etatAig2,name : integer ; var i,l,n : integer ;
s,ss,train : string;
traite,sort : boolean;
begin
inc(Nbre_recu_cdm);
//if Nbre_recu_cdm>1 then Affiche('Empilement de trames CDM: '+RecuCDM,clred);
recuCDM:=residuCDM+ClientSocketCDM.Socket.ReceiveText; // commandeCDM est le morceau tronquée de la fin de la réception précédente
//if residuCDM<>'' then Affiche(recuCDM,clLime);
residuCDM:='';
if trace then
begin
n:=80;
Affiche('recu de CDM Tick='+IntToSTR(tick)+' '+IntToSTR(length(recuCDM))+' car',clWhite);Affiche(copy(recuCDM,1,n),clWhite);
l:=length(recuCDM);
i:=1; i:=1;
repeat repeat
Affiche(copy(recuCDM,i*n,n),clWhite); Affiche(copy(recuCDM,i*n,n),clWhite);
@@ -8477,7 +8529,7 @@ end;
Affiche(s,clYellow); Affiche(s,clYellow);
if s2<>'' then Affiche('Conditions de carré : '+s2,clYellow); if s2<>'' then Affiche('Conditions de carré : '+s2,clYellow);
end; end;
end; end;
procedure TFormPrinc.ClientSocketLenzDisconnect(Sender: TObject; procedure TFormPrinc.ClientSocketLenzDisconnect(Sender: TObject;
@@ -8658,10 +8710,11 @@ var i,adract,etatAct,fonction,v,acc,aO,aF,accessoire,sortie : integer;
end; end;
procedure TFormPrinc.Codificationdesactionneurs1Click(Sender: TObject); procedure TFormPrinc.Codificationdesactionneurs1Click(Sender: TObject);
var i,adract,etatAct,fonction,v,acc,aO,aF,accessoire,sortie : integer; var i,adract,etatAct,fonction,v,acc,aO,aF,accessoire,sortie : integer;
s,s2 : string; s,s2 : string;
begin begin
if (maxTablo_act=0) and (NbrePN=0) then
begin begin
Affiche('Aucun actionneur déclaré',Cyan); Affiche('Aucun actionneur déclaré',Cyan);
exit; exit;
@@ -8728,6 +8781,7 @@ begin
if openDialog.Execute then if openDialog.Execute then
begin begin
s:=openDialog.FileName; s:=openDialog.FileName;
assignFile(fte,s);
reset(fte); reset(fte);
while not(eof(fte)) do while not(eof(fte)) do
begin begin
@@ -8757,8 +8811,19 @@ begin
// ButtonLanceCDM.unfocused; // ButtonLanceCDM.unfocused;
end; end;
procedure TFormPrinc.Affichefentredebug1Click(Sender: TObject);
begin
formDebug.show;
end;
procedure TFormPrinc.locoClick(Sender: TObject);
begin
// vitesse et direction 18 pas
vitesse_loco(3,20,true); vitesse_loco(3,20,true);
end; end;
begin begin

Binary file not shown.

Binary file not shown.

624
page.txt
View File

@@ -1,624 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="content-language" content="fr" />
<meta http-equiv="imagetoolbar" content="no" />
<meta name="resource-type" content="document" />
<meta name="distribution" content="global" />
<meta name="copyright" content="2000, 2002, 2005, 2007 phpBB Group" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<style type="text/css">
<!--
.Style6 {color: #0000FF}
.Style8 {color: #CC3300}
-->
</style>
<title>Forum CDM-Rail &bull; Voir le sujet - Client Graphique Signaux_complexes_GL</title>
<!--
phpBB style name: prosilver
Based on style: prosilver (this is the default phpBB3 style)
Original author: Tom Beddard ( http://www.subBlue.com/ )
Modified by:
NOTE: This page was generated by phpBB, the free open-source bulletin board package.
The phpBB Group is not responsible for the content of this page and forum. For more information
about phpBB please visit http://www.phpbb.com
-->
<script type="text/javascript">
// <![CDATA[
var jump_page = 'Entrez le numéro de la page que vous souhaitez atteindre:';
var on_page = '1';
var per_page = '10';
var base_url = './viewtopic.php?f=77&amp;t=3906';
var style_cookie = 'phpBBstyle';
var style_cookie_settings = '; path=/; domain=cdmrail.free.fr';
var onload_functions = new Array();
var onunload_functions = new Array();
/**
* Find a member
*/
function find_username(url)
{
popup(url, 760, 570, '_usersearch');
return false;
}
/**
* New function for handling multiple calls to window.onload and window.unload by pentapenguin
*/
window.onload = function()
{
for (var i = 0; i < onload_functions.length; i++)
{
eval(onload_functions[i]);
}
}
window.onunload = function()
{
for (var i = 0; i < onunload_functions.length; i++)
{
eval(onunload_functions[i]);
}
}
// ]]>
</script>
<script type="text/javascript" src="./styles/prosilver/template/styleswitcher.js"></script>
<script type="text/javascript" src="./styles/prosilver/template/forum_fn.js"></script>
<link href="./styles/prosilver/theme/print.css" rel="stylesheet" type="text/css" media="print" title="printonly" />
<link href="./style.php?sid=e0537f4fdbc9ba2c100f5b9ba31c8e17&amp;id=1&amp;lang=en" rel="stylesheet" type="text/css" media="screen, projection" />
<link href="./styles/prosilver/theme/normal.css" rel="stylesheet" type="text/css" title="A" />
<link href="./styles/prosilver/theme/medium.css" rel="alternate stylesheet" type="text/css" title="A+" />
<link href="./styles/prosilver/theme/large.css" rel="alternate stylesheet" type="text/css" title="A++" />
</head>
<body id="phpbb" class="section-viewtopic ltr">
<div id="wrap">
<a id="top" name="top" accesskey="t"></a>
<div id="page-header">
<div class="headerbar">
<div class="inner"><span class="corners-top"><span></span></span>
<div id="site-description">
<a href="./index.php" title="Index du forum" id="logo"><img src="./styles/prosilver/imageset/site_logo.gif" width="139" height="52" alt="" title="" /></a>
<h1>Forum CDM-Rail</h1>
<p>Forum des utilisateurs de CDM-Rail</p>
<h5 align="center"> <img src="http://cdmrail.free.fr/ForumCDR/styles/prosilver/template/Bandeau_Guy_3.jpg" border="0" width="1157" height="122" alt="" /></h5>
<h2 align="center" class="Style6">MINI<span class="Style6">WOR</span>LD LYON (<a href="https://www.youtube.com/embed/OG9uLqcP3wM" class="Style8"> voir video </a>): OFFRE SPECIALE ----&gt; CLIQUER <a href="https://miniworldlyon.com/decouvrez-mini-world-lyon-offre-speciale-ferrovipathes/"> <span class="Style8">ICI</span> </a></h2>
<H1 align="center"> </H1>
<h1 align="center" style="display: none;"><a href="#start_here">Aller au contenu</a></h1>
</div>
<div id="search-box">
<form action="./search.php" method="post" id="search">
<fieldset>
<input name="keywords" id="keywords" type="text" maxlength="128" title="Rechercher par mots-clés" class="inputbox search" value="Rechercher…" onclick="if(this.value=='Rechercher…')this.value='';" onblur="if(this.value=='')this.value='Rechercher…';" />
<input class="button2" value="Rechercher" type="submit" /><br />
<a href="./search.php" title="Voir les options de la recherche avancée">Recherche avancée</a> </fieldset>
</form>
</div>
<span class="corners-bottom"><span></span></span></div>
</div>
<div class="navbar">
<div class="inner"><span class="corners-top"><span></span></span>
<ul class="linklist navlinks">
<li class="icon-home"><a href="./index.php" accesskey="h">Index du forum</a> <strong>&#8249;</strong> <a href="./viewforum.php?f=7">A propos de CDM-Rail</a> <strong>&#8249;</strong> <a href="./viewforum.php?f=77">Fonctionnement en réseau: Comm/IP</a></li>
<li class="rightside"><a href="#" onclick="fontsizeup(); return false;" onkeypress="fontsizeup(); return false;" class="fontsize" title="Modifier la taille de la police">Modifier la taille de la police</a></li>
<li class="rightside"><a href="./viewtopic.php?f=77&amp;t=3906&amp;start=0&amp;view=print" title="Imprimer" accesskey="p" class="print">Imprimer</a></li> </ul>
<ul class="linklist rightside">
<li class="icon-faq"><a href="./faq.php" title="Foire Aux Questions">FAQ</a></li>
<li class="icon-register"><a href="./ucp.php?mode=register">Inscription</a></li> <li class="icon-logout"><a href="./ucp.php?mode=login" title="Connexion" accesskey="l">Connexion</a></li>
</ul>
<span class="corners-bottom"><span></span></span></div>
</div>
</div>
<a name="start_here"></a>
<div id="page-body">
<h2><a href="./viewtopic.php?f=77&amp;t=3906&amp;start=0">Client Graphique Signaux_complexes_GL</a></h2>
<!-- NOTE: remove the style="display: none" when you want to have the forum description on the topic body -->
<div class="topic-actions">
<div class="buttons">
<div class="reply-icon"><a href="./posting.php?mode=reply&amp;f=77&amp;t=3906" title="Publier une réponse"><span></span>Publier une réponse</a></div>
</div>
<div class="search-box">
<form method="post" id="topic-search" action="./search.php?t=3906">
<fieldset>
<input class="inputbox search tiny" type="text" name="keywords" id="search_keywords" size="20" value="Rechercher dans ce sujet…" onclick="if(this.value=='Rechercher dans ce sujet…')this.value='';" onblur="if(this.value=='')this.value='Rechercher dans ce sujet…';" />
<input class="button2" type="submit" value="Rechercher" />
<input type="hidden" value="3906" name="t" />
<input type="hidden" value="msgonly" name="sf" />
</fieldset>
</form>
</div>
<div class="pagination">
41 messages &bull; <a href="#" onclick="jumpto(); return false;" title="Cliquez ici afin de sauter vers la page…">Page <strong>1</strong> sur <strong>5</strong></a> &bull; <span><strong>1</strong><span class="page-sep">, </span><a href="./viewtopic.php?f=77&amp;t=3906&amp;start=10">2</a><span class="page-sep">, </span><a href="./viewtopic.php?f=77&amp;t=3906&amp;start=20">3</a><span class="page-sep">, </span><a href="./viewtopic.php?f=77&amp;t=3906&amp;start=30">4</a><span class="page-sep">, </span><a href="./viewtopic.php?f=77&amp;t=3906&amp;start=40">5</a></span> </div>
</div>
<div class="clear"></div>
<div id="p50499" class="post bg2">
<div class="inner"><span class="corners-top"><span></span></span>
<div class="postbody">
<h3 class="first"><a href="#p50499">Client Graphique Signaux_complexes_GL</a></h3>
<p class="author"><a href="./viewtopic.php?p=50499#p50499"><img src="./styles/prosilver/imageset/icon_post_target.gif" width="11" height="9" alt="Message" title="Message" /></a>par <strong><a href="./memberlist.php?mode=viewprofile&amp;u=13164" style="color: #008800;" class="username-coloured">gily</a></strong> &raquo; 20 Janvier 2020, 21:25 </p>
<div class="content">Bonjour<br /><br />attention <span style="font-weight: bold">ne gère plus les aiguillages BIS qui sont problématiques</span>.<br />attention <span style="font-weight: bold">nécessite de nommer les variables du fichier config-gl.cfg - voir le fichier</span><br />attention <span style="font-weight: bold">changement de paramétrage des TJD</span><br /><br />Version 2.11 du 15/11/2020<br />Vous trouverez ici la version graphique du programme signaux_complexes_GL, client de CDM rail mais qui fonctionne aussi de façon autonome si vous disposez d'une centrale LENZ ou compatible. Il permet également de piloter des fonctions F de locomotives et des passages à niveaux à plusieurs voies d'après des actionneurs. Il gère un TCO et peut lancer CDM rail automatiquement avec votre LAY et l'interface choisie. <img src="./images/smilies/icon_mrgreen.gif" alt=":mrgreen:" title="M. Vert" /> <br /><br />Ce logiciel nécessite une installation : faire clic droit en sélectionnant &quot;exécuter en tant qu'administrateur&quot; sur installeur.exe.<br />Vous pouvez voir les nouveautés de chaque version dans le fichier versions.txt.<br /><br />Pour une mise à jour n'oubliez pas de sauvegarder vos deux fichiers de config (.cfg) avant de copier la nouvelle version ; vous pouvez ne copier que le fichier signaux_complexes_GL.exe.<br /><br />Elle est téléchargeable depuis ce lien (droits en contrôle total)<br /><div class="inline-attachment"> <dl class="file">
<dt><img src="./styles/prosilver/imageset/icon_topic_attach.gif" width="7" height="10" alt="" title="" /> <a class="postlink" href="./download/file.php?id=12992">signaux_complexes_V2.11.zip</a></dt>
<dd>(728.73 Kio) Jamais téléchargé</dd>
</dl>
</div><br /><br />Notice: (cliquer dessus lance le téléchargement automatiquement)<br /><a href="https://github.com/f1iwq2/Signaux_complexes_GL/raw/master/Notice%20d'utilisation%20des%20signaux_complexes_GL_V2.11.pdf" class="postlink">https://github.com/f1iwq2/Signaux_complexes_GL/raw/master/Notice%20d'utilisation%20des%20signaux_complexes_GL_V2.11.pdf</a><br /><br />Pour les programmeurs, le zip suivant contient les fichiers source en Delphi, une notice avancée et l'installeur.<br /><a href="https://github.com/f1iwq2/Signaux_complexes_GL/archive/master.zip" class="postlink">https://github.com/f1iwq2/Signaux_complexes_GL/archive/master.zip</a><br /><br />A bientot<br /><br /><div class="inline-attachment"> <dl class="thumbnail">
<dt><a href="./download/file.php?id=12085&amp;mode=view"><img src="./download/file.php?id=12085&amp;t=1" alt="scgl.jpg" title="scgl.jpg (274.24 Kio) Consulté 45 fois" /></a></dt>
</dl>
</div><br /><br /><div class="inline-attachment"> <dl class="thumbnail">
<dt><a href="./download/file.php?id=12339&amp;mode=view"><img src="./download/file.php?id=12339&amp;t=1" alt="ex_tco.jpg" title="ex_tco.jpg (264.36 Kio) Consulté 24 fois" /></a></dt>
</dl>
</div></div>
<div class="notice">Dernière édition par <a href="./memberlist.php?mode=viewprofile&amp;u=13164" style="color: #008800;" class="username-coloured">gily</a> le 15 Novembre 2020, 10:46, édité 105 fois au total. </div>
</div>
<dl class="postprofile" id="profile50499">
<dt>
<a href="./memberlist.php?mode=viewprofile&amp;u=13164" style="color: #008800;" class="username-coloured">gily</a> </dt>
<dd>&nbsp;</dd>
<dd><strong>Messages:</strong> 755</dd><dd><strong>Inscrit le:</strong> 25 Juillet 2014, 14:32</dd><dd><strong>Localisation:</strong> nord</dd>
</dl>
<div class="back2top"><a href="#wrap" class="top" title="Haut">Haut</a></div>
<span class="corners-bottom"><span></span></span></div>
</div>
<hr class="divider" />
<div id="p50509" class="post bg1">
<div class="inner"><span class="corners-top"><span></span></span>
<div class="postbody">
<h3 ><a href="#p50509">Re: Client Graphique Signaux_complexes_GL</a></h3>
<p class="author"><a href="./viewtopic.php?p=50509#p50509"><img src="./styles/prosilver/imageset/icon_post_target.gif" width="11" height="9" alt="Message" title="Message" /></a>par <strong><a href="./memberlist.php?mode=viewprofile&amp;u=23845">fredo94</a></strong> &raquo; 22 Janvier 2020, 07:56 </p>
<div class="content">Bonjour. <br /><br />Merci beaucoup. <br />Petite question est il utile de l utiliser si sur le réseau il n y a que du 2 ou 3 signaux et que comme c est actuellement,cela fonctionne très bien <br /><br /><br />Merci <br /><br /><br />Fred</div>
</div>
<dl class="postprofile" id="profile50509">
<dt>
<a href="./memberlist.php?mode=viewprofile&amp;u=23845">fredo94</a> </dt>
<dd>&nbsp;</dd>
<dd><strong>Messages:</strong> 189</dd><dd><strong>Inscrit le:</strong> 26 Mai 2019, 08:46</dd>
</dl>
<div class="back2top"><a href="#wrap" class="top" title="Haut">Haut</a></div>
<span class="corners-bottom"><span></span></span></div>
</div>
<hr class="divider" />
<div id="p50510" class="post bg2">
<div class="inner"><span class="corners-top"><span></span></span>
<div class="postbody">
<h3 ><a href="#p50510">Re: Client Graphique Signaux_complexes_GL</a></h3>
<p class="author"><a href="./viewtopic.php?p=50510#p50510"><img src="./styles/prosilver/imageset/icon_post_target.gif" width="11" height="9" alt="Message" title="Message" /></a>par <strong><a href="./memberlist.php?mode=viewprofile&amp;u=13164" style="color: #008800;" class="username-coloured">gily</a></strong> &raquo; 22 Janvier 2020, 08:27 </p>
<div class="content">Bonjour<br /><br />Si tes signaux ne sont pas complexes (c'est à dire qu'ils n'affichent pas plus de 3 états rouge- vert - jaune)<br />cela n'a aucun intérêt en effet. Ce programme client ne sert que pour piloter les signaux non pilotables par CDM rail (qui sappellent les signaux complexes et comportent au moins 4 feux)<br /><br />Salutations</div>
</div>
<dl class="postprofile" id="profile50510">
<dt>
<a href="./memberlist.php?mode=viewprofile&amp;u=13164" style="color: #008800;" class="username-coloured">gily</a> </dt>
<dd>&nbsp;</dd>
<dd><strong>Messages:</strong> 755</dd><dd><strong>Inscrit le:</strong> 25 Juillet 2014, 14:32</dd><dd><strong>Localisation:</strong> nord</dd>
</dl>
<div class="back2top"><a href="#wrap" class="top" title="Haut">Haut</a></div>
<span class="corners-bottom"><span></span></span></div>
</div>
<hr class="divider" />
<div id="p50511" class="post bg1">
<div class="inner"><span class="corners-top"><span></span></span>
<div class="postbody">
<h3 ><a href="#p50511">Re: Client Graphique Signaux_complexes_GL</a></h3>
<p class="author"><a href="./viewtopic.php?p=50511#p50511"><img src="./styles/prosilver/imageset/icon_post_target.gif" width="11" height="9" alt="Message" title="Message" /></a>par <strong><a href="./memberlist.php?mode=viewprofile&amp;u=23845">fredo94</a></strong> &raquo; 22 Janvier 2020, 09:25 </p>
<div class="content">Merci je vais donc rester comme je suis là.</div>
</div>
<dl class="postprofile" id="profile50511">
<dt>
<a href="./memberlist.php?mode=viewprofile&amp;u=23845">fredo94</a> </dt>
<dd>&nbsp;</dd>
<dd><strong>Messages:</strong> 189</dd><dd><strong>Inscrit le:</strong> 26 Mai 2019, 08:46</dd>
</dl>
<div class="back2top"><a href="#wrap" class="top" title="Haut">Haut</a></div>
<span class="corners-bottom"><span></span></span></div>
</div>
<hr class="divider" />
<div id="p50527" class="post bg2">
<div class="inner"><span class="corners-top"><span></span></span>
<div class="postbody">
<h3 ><a href="#p50527">Re: Client Graphique Signaux_complexes_GL</a></h3>
<p class="author"><a href="./viewtopic.php?p=50527#p50527"><img src="./styles/prosilver/imageset/icon_post_target.gif" width="11" height="9" alt="Message" title="Message" /></a>par <strong><a href="./memberlist.php?mode=viewprofile&amp;u=20284">DJEFF25</a></strong> &raquo; 26 Janvier 2020, 19:49 </p>
<div class="content">Bonsoir,<br />j'ai plein de questions à ce sujet car je compte mettre une signalisation avec signaux complexes, mais je ne trouve pas (ou très peu de renseignement) comment placer les différents type de signaux.<br />Est-ce que l'un d'entre vous aurait une doc sur le sujet, ou bien m'aider à les placer sur mon réseau ?<br />J'ai déjà réalisé des décodeurs Unisemaf de Paco qui précise dans le pdf comment programmer les cv suivant le type de signal jusqu'à 9 feux.<br />Le client signaux complexes peut-il gérer ce décodeur car il fonctionne sous cdm rail configuré type signal &quot;CDF&quot; sur un signal 3 feux.<br />D'autre part j'ai essayé d'installer le programme signaux complexe GL impossible erreur<br />[img]f:\train\erreur%20GL[/img]<br />puis après validation de l'erreur<br />[img]f:\train\erreur%20GL-1[/img]<br />je pense que ce problème est du ressort de &quot;gily&quot; qui est le concepteur de ce programme.<br />Je m'arrête là pour aujourd'hui, d'autres questions sur le sujet sont à venir<br />Cordialement<br />J.F</div>
</div>
<dl class="postprofile" id="profile50527">
<dt>
<a href="./memberlist.php?mode=viewprofile&amp;u=20284">DJEFF25</a> </dt>
<dd>&nbsp;</dd>
<dd><strong>Messages:</strong> 41</dd><dd><strong>Inscrit le:</strong> 14 Février 2018, 20:40</dd>
</dl>
<div class="back2top"><a href="#wrap" class="top" title="Haut">Haut</a></div>
<span class="corners-bottom"><span></span></span></div>
</div>
<hr class="divider" />
<div id="p50528" class="post bg1">
<div class="inner"><span class="corners-top"><span></span></span>
<div class="postbody">
<h3 ><a href="#p50528">Re: Client Graphique Signaux_complexes_GL</a></h3>
<p class="author"><a href="./viewtopic.php?p=50528#p50528"><img src="./styles/prosilver/imageset/icon_post_target.gif" width="11" height="9" alt="Message" title="Message" /></a>par <strong><a href="./memberlist.php?mode=viewprofile&amp;u=17616" style="color: #008800;" class="username-coloured">Dominique76</a></strong> &raquo; 26 Janvier 2020, 21:25 </p>
<div class="content">Bonsoir<br /><br />Locorevue a publié un ' B-A-BA de la signalisation ferroviaire', en vente sur leur site, peut être y trouveras tu des réponses à tes questions?<br /><br />Dominique</div>
</div>
<dl class="postprofile" id="profile50528">
<dt>
<a href="./memberlist.php?mode=viewprofile&amp;u=17616" style="color: #008800;" class="username-coloured">Dominique76</a> </dt>
<dd>&nbsp;</dd>
<dd><strong>Messages:</strong> 593</dd><dd><strong>Inscrit le:</strong> 10 Avril 2017, 22:34</dd>
</dl>
<div class="back2top"><a href="#wrap" class="top" title="Haut">Haut</a></div>
<span class="corners-bottom"><span></span></span></div>
</div>
<hr class="divider" />
<div id="p50529" class="post bg2">
<div class="inner"><span class="corners-top"><span></span></span>
<div class="postbody">
<h3 ><a href="#p50529">Re: Client Graphique Signaux_complexes_GL</a></h3>
<p class="author"><a href="./viewtopic.php?p=50529#p50529"><img src="./styles/prosilver/imageset/icon_post_target.gif" width="11" height="9" alt="Message" title="Message" /></a>par <strong><a href="./memberlist.php?mode=viewprofile&amp;u=13164" style="color: #008800;" class="username-coloured">gily</a></strong> &raquo; 26 Janvier 2020, 21:27 </p>
<div class="content">Bonjour!!<br /><br />je vais tenter de répondre aux questions:<br />Rapidement dit, les signaux complexes s'implantent avant les aiguillages (ou des grills) pour les protéger (par un carré) et/ ou annoncer un aiguillage dévié pour présenter le rappel de ralentissement, et dans le cas ce signal doit être précédé (sur le canton précédent) d'un autre signal complexe pouvant afficher un ralentissement. <br /><br />Le décodeur Unisemaf de Paco n'est pas géré, je ne le connais même pas <img src="./images/smilies/icon_e_confused.gif" alt=":?" title="Confus" /> , il y a un fil sur ce forum qui en parle. Peux tu me donner un lien pour la documentation a télécharger.<br /><br />Par contre je ne comprends pas l'erreur que tu décrits à l'installation?! Peux tu être plus précis et décrire ce que tu fais avant que l'erreur arrive. <br />Je vois dans ton message que tu a voulu charger une image mais tu as oublié de l'insérer dans le texte.<br />Pour information on peut installer le programme de 3 façons.<br />clic droit avec exécuter en tant qu'administrateur soit sur le fichier install.bat , install2.bat ou installeur.Exe.<br /><br />Je prépare la version 1.1 qui gèrera les panneaux directionnels (6 feux maxi)<br /><br />Salutations</div>
</div>
<dl class="postprofile" id="profile50529">
<dt>
<a href="./memberlist.php?mode=viewprofile&amp;u=13164" style="color: #008800;" class="username-coloured">gily</a> </dt>
<dd>&nbsp;</dd>
<dd><strong>Messages:</strong> 755</dd><dd><strong>Inscrit le:</strong> 25 Juillet 2014, 14:32</dd><dd><strong>Localisation:</strong> nord</dd>
</dl>
<div class="back2top"><a href="#wrap" class="top" title="Haut">Haut</a></div>
<span class="corners-bottom"><span></span></span></div>
</div>
<hr class="divider" />
<div id="p50530" class="post bg1">
<div class="inner"><span class="corners-top"><span></span></span>
<div class="postbody">
<h3 ><a href="#p50530">Re: Client Graphique Signaux_complexes_GL</a></h3>
<p class="author"><a href="./viewtopic.php?p=50530#p50530"><img src="./styles/prosilver/imageset/icon_post_target.gif" width="11" height="9" alt="Message" title="Message" /></a>par <strong><a href="./memberlist.php?mode=viewprofile&amp;u=20284">DJEFF25</a></strong> &raquo; 27 Janvier 2020, 10:02 </p>
<div class="content">Bonjour,<br /><br />Concernant le décodeur de Paco voici le fichier le lien (impossible de le mettre en pièce jointe car : Désolé, la limite du nombre de pièce jointe sur le forum a été atteinte)<br /><!-- m --><a class="postlink" href="http://usuaris.tinet.cat/fmco/download/UniSemaf648_manual.pdf">http://usuaris.tinet.cat/fmco/download/ ... manual.pdf</a><!-- m --><br /><br />Ensuite je vais essayer de remettre les erreurs,<br />[img]f:\train\erreur%20gl.jpeg[/img]<br />[img]f:\train\erreur%20gl-1.jpeg[/img]<br /><br />A+<br />JF</div>
</div>
<dl class="postprofile" id="profile50530">
<dt>
<a href="./memberlist.php?mode=viewprofile&amp;u=20284">DJEFF25</a> </dt>
<dd>&nbsp;</dd>
<dd><strong>Messages:</strong> 41</dd><dd><strong>Inscrit le:</strong> 14 Février 2018, 20:40</dd>
</dl>
<div class="back2top"><a href="#wrap" class="top" title="Haut">Haut</a></div>
<span class="corners-bottom"><span></span></span></div>
</div>
<hr class="divider" />
<div id="p50531" class="post bg2">
<div class="inner"><span class="corners-top"><span></span></span>
<div class="postbody">
<h3 ><a href="#p50531">Re: Client Graphique Signaux_complexes_GL</a></h3>
<p class="author"><a href="./viewtopic.php?p=50531#p50531"><img src="./styles/prosilver/imageset/icon_post_target.gif" width="11" height="9" alt="Message" title="Message" /></a>par <strong><a href="./memberlist.php?mode=viewprofile&amp;u=20284">DJEFF25</a></strong> &raquo; 27 Janvier 2020, 10:42 </p>
<div class="content">Re bonjour,<br /><br />ça y est j'ai réussi à installer signaux complexes GL je m'était trompé de fichie zip pour les programmeurs.<br /><br />JF</div>
</div>
<dl class="postprofile" id="profile50531">
<dt>
<a href="./memberlist.php?mode=viewprofile&amp;u=20284">DJEFF25</a> </dt>
<dd>&nbsp;</dd>
<dd><strong>Messages:</strong> 41</dd><dd><strong>Inscrit le:</strong> 14 Février 2018, 20:40</dd>
</dl>
<div class="back2top"><a href="#wrap" class="top" title="Haut">Haut</a></div>
<span class="corners-bottom"><span></span></span></div>
</div>
<hr class="divider" />
<div id="p50532" class="post bg1">
<div class="inner"><span class="corners-top"><span></span></span>
<div class="postbody">
<h3 ><a href="#p50532">Re: Client Graphique Signaux_complexes_GL</a></h3>
<p class="author"><a href="./viewtopic.php?p=50532#p50532"><img src="./styles/prosilver/imageset/icon_post_target.gif" width="11" height="9" alt="Message" title="Message" /></a>par <strong><a href="./memberlist.php?mode=viewprofile&amp;u=13164" style="color: #008800;" class="username-coloured">gily</a></strong> &raquo; 27 Janvier 2020, 11:14 </p>
<div class="content">bon ok bonne nouvelle pour l'installation <img src="./images/smilies/icon_mrgreen.gif" alt=":mrgreen:" title="M. Vert" /> <br />oui pour les pièces jointes, c'est 1Mo maxi... <br />je vais regarder ce décodeur...</div>
</div>
<dl class="postprofile" id="profile50532">
<dt>
<a href="./memberlist.php?mode=viewprofile&amp;u=13164" style="color: #008800;" class="username-coloured">gily</a> </dt>
<dd>&nbsp;</dd>
<dd><strong>Messages:</strong> 755</dd><dd><strong>Inscrit le:</strong> 25 Juillet 2014, 14:32</dd><dd><strong>Localisation:</strong> nord</dd>
</dl>
<div class="back2top"><a href="#wrap" class="top" title="Haut">Haut</a></div>
<span class="corners-bottom"><span></span></span></div>
</div>
<hr class="divider" />
<form id="viewtopic" method="post" action="./viewtopic.php?f=77&amp;t=3906&amp;start=0">
<fieldset class="display-options" style="margin-top: 0; ">
<a href="./viewtopic.php?f=77&amp;t=3906&amp;start=10" class="right-box right">Suivant</a> <label>Afficher les messages depuis: <select name="st" id="st"><option value="0" selected="selected">Tous les messages</option><option value="1">1 jour</option><option value="7">7 jours</option><option value="14">2 semaines</option><option value="30">1 mois</option><option value="90">3 mois</option><option value="180">6 mois</option><option value="365">1 an</option></select></label>
<label>Trier par <select name="sk" id="sk"><option value="a">Auteur</option><option value="t" selected="selected">Date du message</option><option value="s">Sujet</option></select></label> <label><select name="sd" id="sd"><option value="a" selected="selected">Croissant</option><option value="d">Décroissant</option></select> <input type="submit" name="sort" value="Aller" class="button2" /></label>
</fieldset>
</form>
<hr />
<div class="topic-actions">
<div class="buttons">
<div class="reply-icon"><a href="./posting.php?mode=reply&amp;f=77&amp;t=3906" title="Publier une réponse"><span></span>Publier une réponse</a></div>
</div>
<div class="pagination">
41 messages &bull; <a href="#" onclick="jumpto(); return false;" title="Cliquez ici afin de sauter vers la page…">Page <strong>1</strong> sur <strong>5</strong></a> &bull; <span><strong>1</strong><span class="page-sep">, </span><a href="./viewtopic.php?f=77&amp;t=3906&amp;start=10">2</a><span class="page-sep">, </span><a href="./viewtopic.php?f=77&amp;t=3906&amp;start=20">3</a><span class="page-sep">, </span><a href="./viewtopic.php?f=77&amp;t=3906&amp;start=30">4</a><span class="page-sep">, </span><a href="./viewtopic.php?f=77&amp;t=3906&amp;start=40">5</a></span> </div>
</div>
<p></p><p><a href="./viewforum.php?f=77" class="left-box left" accesskey="r">Retourner vers Fonctionnement en réseau: Comm/IP</a></p>
<form method="post" id="jumpbox" action="./viewforum.php" onsubmit="if(document.jumpbox.f.value == -1){return false;}">
<fieldset class="jumpbox">
<label for="f" accesskey="j">Sauter vers:</label>
<select name="f" id="f" onchange="if(this.options[this.selectedIndex].value != -1){ document.forms['jumpbox'].submit() }">
<option value="-1">Sélectionner un forum</option>
<option value="-1">------------------</option> <option value="31">Pourquoi s'enregistrer sur ce forum</option>
<option value="6">Informations générales</option>
<option value="117">&nbsp; &nbsp;Evènements divers</option>
<option value="9">&nbsp; &nbsp;Objet du forum CDM-Rail</option>
<option value="23">&nbsp; &nbsp;Présentation des membres: bienvenue à Jean Louis</option>
<option value="82">CDM-Rail: notes d'utilisation</option>
<option value="108">&nbsp; &nbsp;COMMENT DEMARRER</option>
<option value="85">&nbsp; &nbsp;Notes d'application pour CDM-Rail</option>
<option value="87">&nbsp; &nbsp;Dessin du réseau: notes d'utilisation et didacticiels vidéos</option>
<option value="88">&nbsp; &nbsp;Signaux, cantons, détecteurs: notes d'utilisation et didacticiels videos</option>
<option value="90">&nbsp; &nbsp;Actionneurs: notes d'utilisation</option>
<option value="112">&nbsp; &nbsp;Itinéraires</option>
<option value="93">&nbsp; &nbsp;Signaux réels: notes d'utilisation</option>
<option value="89">&nbsp; &nbsp;Simulation: notes d'utilisation et didacticiels vidéos</option>
<option value="86">&nbsp; &nbsp;Pilotage du réseau réel: notes d'utilisation</option>
<option value="109">&nbsp; &nbsp;Opérations sur trains: notes d'utilisation</option>
<option value="7">A propos de CDM-Rail</option>
<option value="65">&nbsp; &nbsp;Notes d'application pour CDM-Rail</option>
<option value="74">&nbsp; &nbsp;Les réseaux pilotés par CDM-Rail</option>
<option value="8">&nbsp; &nbsp;Dessin du réseau (tracé des voies)</option>
<option value="10">&nbsp; &nbsp;Dessin du décor</option>
<option value="15">&nbsp; &nbsp;Signaux, cantons, itinéraires, détecteurs</option>
<option value="14">&nbsp; &nbsp;Trains</option>
<option value="11">&nbsp; &nbsp;Simulation</option>
<option value="59">&nbsp; &nbsp;Réglage des CVs (pour CDM-Rail)</option>
<option value="79">&nbsp; &nbsp;Actionneurs</option>
<option value="12">&nbsp; &nbsp;Configuration pour le digital (DCC)</option>
<option value="69">&nbsp; &nbsp;Réseau réel: les zones de détection</option>
<option value="92">&nbsp; &nbsp;Réseau Réel: les signaux réels</option>
<option value="13">&nbsp; &nbsp;Pilotage du réseau réel</option>
<option value="70">&nbsp; &nbsp;Compatibilité de matériels</option>
<option value="120">&nbsp; &nbsp;CDM-Rail et DCCpp pour Arduino (ou DCC++)</option>
<option value="49">&nbsp; &nbsp;CDM-Rail et les montages de PACO</option>
<option value="77" selected="selected">&nbsp; &nbsp;Fonctionnement en réseau: Comm/IP</option>
<option value="94">&nbsp; &nbsp;Contrôle par mobile ou tablette</option>
<option value="116">&nbsp; &nbsp;Support sur XIS88, FIS88</option>
<option value="30">&nbsp; &nbsp;Versions CDM-Rail. Dernière version stable 8.01 (6/10/2020)</option>
<option value="16">Modélisme ferroviaire</option>
<option value="64">&nbsp; &nbsp;Règles générales pour la conception d'un réseau</option>
<option value="17">&nbsp; &nbsp;Digital: général</option>
<option value="48">&nbsp; &nbsp;Digital: les montages de PACO</option>
<option value="19">&nbsp; &nbsp;Analogique</option>
<option value="20">&nbsp; &nbsp;Réseaux</option>
<option value="51">&nbsp; &nbsp;Le câblage du réseau</option>
<option value="56">&nbsp; &nbsp;La voie, les accessoires de voie</option>
<option value="91">&nbsp; &nbsp;Automatismes</option>
<option value="80">&nbsp; &nbsp;Le décor</option>
<option value="81">&nbsp; &nbsp;Décor et outillage spécialisé</option>
<option value="58">&nbsp; &nbsp;Matériel roulant, digitalisation de locomotives</option>
<option value="35">Que choisir?</option>
<option value="36">&nbsp; &nbsp;Echelle: HO, N, ....</option>
<option value="37">&nbsp; &nbsp;Les marques en HO: Marklin ... et les autres</option>
<option value="40">&nbsp; &nbsp;Les marques en N</option>
<option value="38">&nbsp; &nbsp;La voie</option>
<option value="39">&nbsp; &nbsp;Les systèmes numériques; les centrales</option>
<option value="63">&nbsp; &nbsp;Les contrôleurs/régulateurs manuels (&quot;manettes de contrôle&quot;)</option>
<option value="41">&nbsp; &nbsp;Les décodeurs pour locos</option>
<option value="42">&nbsp; &nbsp;Les accessoires &quot;numériques&quot; fixes (décodeurs d'aiguillages, de signaux, ...)</option>
<option value="43">&nbsp; &nbsp;La rétro-signalisation</option>
<option value="46">&nbsp; &nbsp;Pilotage par ordinateur: comment et par où démarrer?</option>
<option value="44">&nbsp; &nbsp;Fournisseurs en modélisme ferroviaire</option>
<option value="52">Le coin des bricoleurs</option>
<option value="53">&nbsp; &nbsp;Informations générales, liens, ...</option>
<option value="54">&nbsp; &nbsp;Montages testés et validés par des membres du forum</option>
<option value="45">&nbsp; &nbsp;Le coin des bricoleurs (électronique)</option>
<option value="115">&nbsp; &nbsp;Impression 3D</option>
<option value="21">Divers</option>
<option value="22">&nbsp; &nbsp;Questions diverses</option>
<option value="67">&nbsp; &nbsp;Liens vers les sites de membres du forum</option>
<option value="47">&nbsp; &nbsp;Liens vers d'autres sites ou forums</option>
<option value="50">&nbsp; &nbsp;Expositions, Réunions, ...</option>
<option value="66">&nbsp; &nbsp;Le buffet de la gare</option>
<option value="75">&nbsp; &nbsp;Ventes / Achats de matériel</option>
</select>
<input type="submit" value="Aller" class="button2" />
</fieldset>
</form>
<h3>Qui est en ligne ?</h3>
<p>Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité</p>
</div>
<div id="page-footer">
<div class="navbar">
<div class="inner"><span class="corners-top"><span></span></span>
<ul class="linklist">
<li class="icon-home"><a href="./index.php" accesskey="h">Index du forum</a></li>
<li class="rightside"><a href="./memberlist.php?mode=leaders">Léquipe</a> &bull; <a href="./ucp.php?mode=delete_cookies">Supprimer tous les cookies du forum</a> &bull; Heures au format UTC + 1 heure </li>
</ul>
<span class="corners-bottom"><span></span></span></div>
</div>
<!--
We request you retain the full copyright notice below including the link to www.phpbb.com.
This not only gives respect to the large amount of time given freely by the developers
but also helps build interest, traffic and use of phpBB3. If you (honestly) cannot retain
the full copyright we ask you at least leave in place the "Powered by phpBB" line, with
"phpBB" linked to www.phpbb.com. If you refuse to include even this then support on our
forums may be affected.
The phpBB Group : 2006
//-->
<div class="copyright">Powered by <a href="http://www.phpbb.com/">phpBB</a> &copy; 2000, 2002, 2005, 2007 phpBB Group
<br />Translated by <a href="http://www.phpbb.com/community/memberlist.php?mode=viewprofile&u=218368">Xaphos</a> &copy; 2007, 2008, 2009 <a href="http://www.phpbb.fr/">phpBB.fr</a> </div>
</div>
</div>
<div>
<a id="bottom" name="bottom" accesskey="z"></a>
</div>
</body>
</html>

Binary file not shown.

View File

@@ -23,7 +23,7 @@ var
Lance_verif : integer; Lance_verif : integer;
verifVersion,notificationVersion : boolean; verifVersion,notificationVersion : boolean;
Const Version='2.21'; // sert à la comparaison de la version publiée Const Version='2.3'; // sert à la comparaison de la version publiée
implementation implementation

View File

@@ -42,6 +42,9 @@ Version 2.2 : Correction d'un bug sur le verrouillage des signaux au carr
Mise à jour du fichier de config.cfg si modification des signaux dans la configuration. Mise à jour du fichier de config.cfg si modification des signaux dans la configuration.
version 2.21 : Paramétrage du nombre de détecteurs considérés comme trop distants version 2.21 : Paramétrage du nombre de détecteurs considérés comme trop distants
Correction d'un bug de la 2.2 Correction d'un bug de la 2.2
version 2.3 : Changement de la méthode de réception des trames du protocole IPC de CDM-Rail