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
BIN
View File
Binary file not shown.
+3 -1
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;
BIN
View File
Binary file not shown.
+46 -37
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]
+13 -8
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.
BIN
View File
Binary file not shown.
+17 -12
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
+241 -176
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;
procedure lit_config; procedure lit_config;
var s,sa,chaine,SOrigine: string; var s,sa,chaine,SOrigine: string;
c,paig : char; c,paig : char;
tec,tjd,tjs,s2,trouve,triple,debugConfig,multiple,fini,finifeux,trouve_NbDetDist : boolean; tec,tjd,tjs,s2,trouve,triple,debugConfig,multiple,fini,finifeux,trouve_NbDetDist,trouve_ipv4_PC : boolean;
bd,virgule,i_detect,i,erreur,aig,aig2,detect,offset,index, adresse,j,position,temporisation,invers,indexPointe,indexDevie,indexDroit, bd,virgule,i_detect,i,erreur,aig,aig2,detect,offset,index, adresse,j,position,temporisation,invers,indexPointe,indexDevie,indexDroit,
ComptEl,Compt_IT,Num_Element,k,modele,adr,adr2,erreur2,l,t,Nligne,postriple, ComptEl,Compt_IT,Num_Element,k,modele,adr,adr2,erreur2,l,t,Nligne,postriple,
postjd,postjs,nv,it : integer; postjd,postjs,nv,it : integer;
@@ -3508,6 +3510,7 @@ var s,sa,chaine,SOrigine: string;
begin begin
debugConfig:=false; debugConfig:=false;
trouve_NbDetDist:=false; trouve_NbDetDist:=false;
trouve_ipv4_PC:=false;
Nb_Det_Dist:=3; Nb_Det_Dist:=3;
// initialisation des aiguillages avec des valeurs par défaut // initialisation des aiguillages avec des valeurs par défaut
for i:=1 to MaxAcc do for i:=1 to MaxAcc do
@@ -3561,6 +3564,7 @@ begin
if i<>0 then if i<>0 then
begin begin
inc(nv); inc(nv);
trouve_ipv4_PC:=true;
delete(s,i,length(sa)); delete(s,i,length(sa));
i:=pos(':',s); i:=pos(':',s);
if i<>0 then begin adresseIPCDM:=copy(s,1,i-1);Delete(s,1,i);portCDM:=StrToINT(s);end; if i<>0 then begin adresseIPCDM:=copy(s,1,i-1);Delete(s,1,i);portCDM:=StrToINT(s);end;
@@ -3576,7 +3580,7 @@ begin
delete(s,i,length(sa)); delete(s,i,length(sa));
i:=pos(':',s); i:=pos(':',s);
if i<>0 then begin adresseIP:=copy(s,1,i-1);Delete(s,1,i);port:=StrToINT(s);end if i<>0 then begin adresseIP:=copy(s,1,i-1);Delete(s,1,i);port:=StrToINT(s);end
else begin adresseIP:='0';parSocket:=false;end; else begin adresseIP:='0';parSocketLenz:=false;end;
end; end;
// configuration du port com // configuration du port com
@@ -3756,6 +3760,8 @@ begin
begin begin
s:='ERREUR: manque variables dans config-gl.cfg'; s:='ERREUR: manque variables dans config-gl.cfg';
if not(trouve_NbDetDist) then s:=s+' : NB_DET_DIST'; if not(trouve_NbDetDist) then s:=s+' : NB_DET_DIST';
if not(trouve_ipv4_PC) then s:=s+' : IpV4_PC';
affiche(s,clred); affiche(s,clred);
end; end;
//Affiche('Valeurs d''initialisation des aiguillages',clyellow); //Affiche('Valeurs d''initialisation des aiguillages',clyellow);
@@ -4538,18 +4544,6 @@ begin
Ancien_detecteur[adresse]:=detecteur[adresse].etat; Ancien_detecteur[adresse]:=detecteur[adresse].etat;
end; end;
function virgule_prec(sl : string;o : integer) : integer;
var k : integer;
begin
o:=o-1;
for k:=o downto 1 do
begin
//Affiche(intToSTR(k)+'/'+sl[k],clGreen);
if sl[k]=',' then begin result:=k;exit;end;
end;
result:=0;
end;
// trouve un élément dans les branches à partir de la branche offset renvoie branche_trouve IndexBranche_trouve // trouve un élément dans les branches à partir de la branche offset renvoie branche_trouve IndexBranche_trouve
// el : adresse de l'élément TypeEL=(1=détécteur 2=aig 3=aig Bis 4=aig triple) // el : adresse de l'élément TypeEL=(1=détécteur 2=aig 3=aig Bis 4=aig triple)
procedure trouve_element(el, TypeEl, Offset : integer); procedure trouve_element(el, TypeEl, Offset : integer);
@@ -4589,7 +4583,6 @@ begin
end; end;
// renvoie élément suivant entre deux éléments quels qu'ils soient mais contigus // renvoie élément suivant entre deux éléments quels qu'ils soient mais contigus
// et en variables globales: typeGen le type de l'élément // et en variables globales: typeGen le type de l'élément
// s'ils ne sont pas contigus, on aura une erreur // s'ils ne sont pas contigus, on aura une erreur
@@ -4602,7 +4595,6 @@ end;
// 9998= arret sur aiguillage en talon mal positionnée // 9998= arret sur aiguillage en talon mal positionnée
// 9997: arrêt sur aiguillage dévié // 9997: arrêt sur aiguillage dévié
// 9996: arrêt sur position inconnue d'aiguillage // 9996: arrêt sur position inconnue d'aiguillage
// 9995: TJD non résolue
// typeGen : 1=detecteur 2=aiguillage 3=aiguillage bis // typeGen : 1=detecteur 2=aiguillage 3=aiguillage bis
function suivant_alg3(prec : integer;typeELprec : integer;var actuel : integer;typeElActuel : integer;alg : integer) : integer; function suivant_alg3(prec : integer;typeELprec : integer;var actuel : integer;typeElActuel : integer;alg : integer) : integer;
var Btype,Adr,AdrPrec,BtypePrec,indexBranche_prec,branche_trouve_prec,indexBranche_actuel,branche_trouve_actuel, var Btype,Adr,AdrPrec,BtypePrec,indexBranche_prec,branche_trouve_prec,indexBranche_actuel,branche_trouve_actuel,
@@ -4848,17 +4840,17 @@ begin
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' ;
s:=s+'/adrTjdP='+IntToSTR(adrTJDP)+'='; 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é' else s:=s+'/inconnu' ;
else s:=s+'inconnu' ; AfficheDebug(s,clyellow);
end;
// rechercher le port de destination de la tjd // rechercher le port de destination de la tjd
Adr2:=0;A:=#0; Adr2:=0;A:=#0;
@@ -4888,13 +4880,16 @@ begin
adr2:=aiguillage[adr2].Adroit; adr2:=aiguillage[adr2].Adroit;
end end
else else
begin
if aiguillage[adr].position<>9 then
begin begin
s:='Erreur 1021 TJD '+intToSTR(adr)+' non résolue'; 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;
exit; exit;
end; end;
end;
if nivDebug=3 then AfficheDebug('tjd: '+s+' Suiv='+intToSTR(adr2)+A,clYellow); if nivDebug=3 then AfficheDebug('tjd: '+s+' Suiv='+intToSTR(adr2)+A,clYellow);
if A='Z' then typeGen:=1 else typeGen:=2; //TypeEL=(1=détécteur 2=aig 3=aig Bis) if A='Z' then typeGen:=1 else typeGen:=2; //TypeEL=(1=détécteur 2=aig 3=aig Bis)
@@ -5253,6 +5248,7 @@ 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;
sortie : boolean; sortie : boolean;
begin begin
if TraceListe then AfficheDebug('Det_Adj '+IntToSTR(adresse),clyellow);
trouve_element(adresse,1,1); // branche_trouve IndexBranche_trouve trouve_element(adresse,1,1); // branche_trouve IndexBranche_trouve
if (IndexBranche_trouve=0) then if (IndexBranche_trouve=0) then
begin begin
@@ -5278,7 +5274,6 @@ begin
begin begin
Adr:=suivant_alg3(AdrPrec,BtypePrec,AdrFonc,BtypeFonc,2); // élément suivant mais arret sur aiguillage en talon mal positionnée Adr:=suivant_alg3(AdrPrec,BtypePrec,AdrFonc,BtypeFonc,2); // élément suivant mais arret sur aiguillage en talon mal positionnée
end end
else else
begin Adr:=AdrFonc;TypeGen:=BtypeFonc;end; begin Adr:=AdrFonc;TypeGen:=BtypeFonc;end;
if Adr>9990 then typeGen:=1; if Adr>9990 then typeGen:=1;
@@ -5292,6 +5287,7 @@ begin
if (typeGen=1) and (Dir=2) then begin Adj2:=Adr;end; if (typeGen=1) and (Dir=2) then begin Adj2:=Adr;end;
inc(dir); inc(dir);
until dir=3; until dir=3;
if TraceListe then AfficheDebug('Fin Det_Adj ',clyellow);
end; end;
// renvoie l'adresse du détecteur suivant des deux éléments // renvoie l'adresse du détecteur suivant des deux éléments
@@ -5465,6 +5461,7 @@ begin
begin begin
//s2:=s2+'A'+IntToSTR(feux[i].condcarre[l][k].Adresse)+feux[i].condcarre[l][k].PosAig+' '; //s2:=s2+'A'+IntToSTR(feux[i].condcarre[l][k].Adresse)+feux[i].condcarre[l][k].PosAig+' ';
AdrAig:=feux[i].condcarre[l][k].Adresse; AdrAig:=feux[i].condcarre[l][k].Adresse;
if nivDebug=3 then AfficheDebug('Contrôle aiguillage '+IntToSTR(AdrAig),clyellow);
resultatET:=((aiguillage[AdrAig].position=const_devie) and (feux[i].condcarre[l][k].PosAig='S') or (aiguillage[AdrAig].position=const_droit) and (feux[i].condcarre[l][k].PosAig='D')) resultatET:=((aiguillage[AdrAig].position=const_devie) and (feux[i].condcarre[l][k].PosAig='S') or (aiguillage[AdrAig].position=const_droit) and (feux[i].condcarre[l][k].PosAig='D'))
and resultatET; and resultatET;
end; end;
@@ -5477,7 +5474,7 @@ begin
if NivDebug=3 then if NivDebug=3 then
begin begin
s:='Conditions de carré suivant aiguillages: '; s:='Conditions de carré suivant aiguillages: ';
if ResultatOU then s:=s+'vrai' else s:=s+'faux'; if ResultatOU then s:=s+'vrai : le signal doit afficher carré' else s:=s+'faux : le signal ne doit pas afficher de carré';
AfficheDebug(s,clyellow); AfficheDebug(s,clyellow);
end; end;
cond_carre:=ResultatOU; cond_carre:=ResultatOU;
@@ -5615,27 +5612,12 @@ begin
// à 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
// AdrSuiv:=actuel; AdrSuiv:=actuel;
// actuel:=prec;
// TypeActuel:=1;
// TypePrec:=1;
// if nivDebug=3 then AfficheDebug('Substitution precedent='+intToSTR(prec)+' Actuel='+IntToSTR(actuel),clyellow);
end end
else else
begin begin
//if nivDebug=3 then AfficheDebug('Engagement j='+IntToSTR(j)+' '+IntToSTR(prec)+'/'+IntToSTR(actuel),clyellow); //if nivDebug=3 then AfficheDebug('Engagement j='+IntToSTR(j)+' '+IntToSTR(prec)+'/'+IntToSTR(actuel),clyellow);
AdrSuiv:=suivant_alg3(prec,TypePrec,actuel,TypeActuel,1); 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
if nivDebug=3 then AfficheDebug('507 - Détection Précédent=TJD/S Suivant=TJD/S',clyellow);
// subsituer la pointe
Actuel:=aiguillage[Actuel].APointe;
end;
end; }
if Nivdebug=3 then AfficheDebug('Suivant='+intToSTR(AdrSuiv),clyellow); if Nivdebug=3 then AfficheDebug('Suivant='+intToSTR(AdrSuiv),clyellow);
prec:=actuel;TypePrec:=TypeActuel; prec:=actuel;TypePrec:=TypeActuel;
@@ -5696,7 +5678,6 @@ begin
etat_signal_suivant:=Etat; etat_signal_suivant:=Etat;
AdresseFeuSuivant:=Signal_suivant; AdresseFeuSuivant:=Signal_suivant;
if (NivDebug=3) and (adrFeu=0) then AfficheDebug('Pas Trouvé de feu suivant au feu Adr='+IntToSTR(ADresse),clOrange); if (NivDebug=3) and (adrFeu=0) then AfficheDebug('Pas Trouvé de feu suivant au feu Adr='+IntToSTR(ADresse),clOrange);
//TraceDet:=false;
end; end;
@@ -6049,6 +6030,7 @@ 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;
begin begin
i:=index_feu(Adrfeu); i:=index_feu(Adrfeu);
//memZone[518,520]:=true;
if i=0 then if i=0 then
begin begin
Affiche('Erreur 602 - feu '+IntToSTR(adrFeu)+' non trouvé',clred); Affiche('Erreur 602 - feu '+IntToSTR(adrFeu)+' non trouvé',clred);
@@ -6106,7 +6088,7 @@ begin
DetPrec4:=detecteur_suivant_El(DetPrec2,1,DetPrec3,1); DetPrec4:=detecteur_suivant_El(DetPrec2,1,DetPrec3,1);
if DetPrec4<1024 then if DetPrec4<1024 then
begin 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
@@ -6115,7 +6097,7 @@ begin
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);
if MemZone[DetPrec2,detPrec1] then AfficheDebug('2.présence train '+IntToSTR(DetPrec2)+' '+IntToSTR(detPrec1),clyellow); if MemZone[DetPrec2,detPrec1] then AfficheDebug('2.présence train '+IntToSTR(DetPrec2)+' '+IntToSTR(detPrec1),clyellow);
if MemZone[DetPrec1,det_initial] then AfficheDebug('3.présence train '+IntToSTR(DetPrec1)+' '+IntToSTR(det_Initial),clyellow); if MemZone[DetPrec1,det_initial] then AfficheDebug('3.présence train '+IntToSTR(DetPrec1)+' '+IntToSTR(det_Initial),clyellow);
//if PresTrain then AfficheDebug('présence train',clyellow) else afficheDebug('abscence train',clyellow); if PresTrain then AfficheDebug('présence train',clyellow) else afficheDebug('abscence train',clyellow);
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]
@@ -6125,9 +6107,9 @@ begin
end; end;
inc(j); inc(j);
until (j>=5); until (j>=5);
if presTrain or (NivDebug=3) then if AffSignal or (NivDebug=3) then
begin begin
if AffSignal Then afficheDebug('présence train feu '+intToSTR(AdrFeu),clorange) if presTrain Then afficheDebug('présence train feu '+intToSTR(AdrFeu),clorange)
else AfficheDebug('Absence train feu '+intToSTR(AdrFeu),clorange); else AfficheDebug('Absence train feu '+intToSTR(AdrFeu),clorange);
end; end;
PresTrainPrec:=presTrain; PresTrainPrec:=presTrain;
@@ -6295,6 +6277,7 @@ end;
Procedure Maj_feux; Procedure Maj_feux;
var i : integer; var i : integer;
begin begin
//Affiche('MAJ FEUX',clOrange);
Maj_feux_cours:=TRUE; Maj_feux_cours:=TRUE;
for i:=1 to NbreFeux do for i:=1 to NbreFeux do
begin begin
@@ -6359,6 +6342,7 @@ var AdrFeu,AdrDetFeu,Nbre,Nouveau_Det,i,resultat,det1,det2,det3,AdrSuiv,TypeSuiv
begin begin
creer_tableau:=false; creer_tableau:=false;
det3:=event_det[N_event_det]; // c'est le nouveau détecteur det3:=event_det[N_event_det]; // c'est le nouveau détecteur
if det3=0 then exit; // pas de nouveau détecteur
FormDebug.MemoEvtDet.lines.add('Le nouveau détecteur est '+IntToSTR(det3)) ; FormDebug.MemoEvtDet.lines.add('Le nouveau détecteur est '+IntToSTR(det3)) ;
if TraceListe then AfficheDebug('Le nouveau détecteur est '+IntToSTR(det3),clyellow) ; if TraceListe then AfficheDebug('Le nouveau détecteur est '+IntToSTR(det3),clyellow) ;
@@ -6503,14 +6487,14 @@ end;
// demande l'état d'un accessoire à la centrale. Le résultat sera réceptionné sur réception 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;
begin begin
// uniquement si connecté directement à la centrale // uniquement si connecté directement à la centrale
if portCommOuvert or ParSocket then if portCommOuvert or parSocketLenz then
begin begin
// envoyer 2 fois la commande, une fois avec N=0 pour récupérer le nibble bas, // envoyer 2 fois la commande, une fois avec N=0 pour récupérer le nibble bas,
// une autre fois avec N=1 pour récupérer le nibble haut // une autre fois avec N=1 pour récupérer le nibble haut
@@ -6622,6 +6606,15 @@ begin
Formprinc.statictext.caption:=s; Formprinc.statictext.caption:=s;
end; end;
procedure evalue;
begin
if not(configNulle) then
begin
//if CDM_connecte // and (length(recuCDM)<1000) then
Maj_feux; // on ne traite pas les calculs si CDM en envoie plusieurs
end;
end;
// traitement sur les évènements détecteurs // traitement sur les évènements détecteurs
procedure Event_Detecteur(Adresse : integer;etat : boolean;train : string); procedure Event_Detecteur(Adresse : integer;etat : boolean;train : string);
var i,AdrSuiv,AdrFeu,AdrDetfeu,TrainActuel,Etat01,typeSuiv,AdrPrec : integer; var i,AdrSuiv,AdrFeu,AdrDetfeu,TrainActuel,Etat01,typeSuiv,AdrPrec : integer;
@@ -6723,7 +6716,7 @@ begin
end; end;
end; end;
premierFD:=True; premierFD:=True;
if not(configNulle) then calcul_zones; // en avant les calculs calcul_zones;
end; end;
end; end;
@@ -6746,6 +6739,7 @@ end;
// évènement d'aiguillage // évènement d'aiguillage
procedure Event_Aig(adresse,pos,objet : integer); procedure Event_Aig(adresse,pos,objet : integer);
var s: string; var s: string;
faire_event: boolean;
begin begin
// ------------------- traitement du numéro d'objet ------------------------- // ------------------- traitement du numéro d'objet -------------------------
// init objet // init objet
@@ -6755,9 +6749,11 @@ begin
//affiche('stockage Aiguillage '+intToSTR(adresse)+' objet='+intToSTR(objet),clYellow); //affiche('stockage Aiguillage '+intToSTR(adresse)+' objet='+intToSTR(objet),clYellow);
end; end;
// ne pas faire l'évaluation si l'ancien état de l'aiguillage est indéterminée (9)
// car le RUN vient de démarrer
faire_event:=aiguillage[adresse].position<>9;
aiguillage[adresse].position:=pos; aiguillage[adresse].position:=pos;
// ------------- stockage évènement aiguillage dans tampon event_det_tick ------------------------- // ------------- stockage évènement aiguillage dans tampon event_det_tick -------------------------
if (N_Event_tick>=Max_Event_det_tick) then if (N_Event_tick>=Max_Event_det_tick) then
begin begin
@@ -6785,7 +6781,7 @@ begin
begin begin
formTCO.Maj_TCO(Adresse); formTCO.Maj_TCO(Adresse);
end; end;
Maj_feux; if faire_event then evalue;
end; end;
@@ -7495,7 +7491,7 @@ begin
N_Trains:=0; N_Trains:=0;
NivDebug:=0; NivDebug:=0;
TempoAct:=0; TempoAct:=0;
DebugOuv:=True; debugtrames:=false;
AvecInit:=true; //&&&& AvecInit:=true; //&&&&
Option_demarrage:=false; Option_demarrage:=false;
@@ -7508,6 +7504,7 @@ begin
ferme:=false; ferme:=false;
CDM_connecte:=false; CDM_connecte:=false;
pasreponse:=0; pasreponse:=0;
recuCDM:='';
Nbre_recu_cdm:=0; Nbre_recu_cdm:=0;
AffMem:=true; AffMem:=true;
N_routes:=0; N_routes:=0;
@@ -7549,7 +7546,7 @@ begin
end; end;
end; end;
if portCommOuvert or parsocket then if portCommOuvert or parSocketLenz then
With Formprinc do With Formprinc do
begin begin
ButtonEcrCV.Enabled:=true; ButtonEcrCV.Enabled:=true;
@@ -7574,7 +7571,7 @@ begin
begin begin
cree_image(i); // et initialisation tableaux signaux cree_image(i); // et initialisation tableaux signaux
end; end;
Tempo_init:=10; // démarre les initialisation des signaux et des aiguillages dans 1 s Tempo_init:=5; // démarre les initialisation des signaux et des aiguillages dans 1 s
// initialisation de la chronologie des évènements détecteurs // initialisation de la chronologie des évènements détecteurs
for i:=0 to Max_Event_det_tick do for i:=0 to Max_Event_det_tick do
@@ -7610,7 +7607,6 @@ begin
aiguillage[20].position:=const_droit; aiguillage[20].position:=const_droit;
aiguillage[21].position:=const_droit; aiguillage[21].position:=const_droit;
NivDebug:=3; NivDebug:=3;
FormDebug.show; FormDebug.show;
//i:=Detecteur_suivant_El(591,1,602,1); //i:=Detecteur_suivant_El(591,1,602,1);
@@ -7697,7 +7693,7 @@ begin
Affiche('Positionnement des aiguillages',clYellow); Affiche('Positionnement des aiguillages',clYellow);
init_aiguillages; // initialisation des aiguillages init_aiguillages; // initialisation des aiguillages
end; end;
if (AvecInitAiguillages=0) and not(ferme) and (parSocket or portCommOuvert) then if (AvecInitAiguillages=0) and not(ferme) and (parSocketLenz or portCommOuvert) then
begin begin
demande_etat_acc; // demande l'état des accessoires (position des aiguillages) demande_etat_acc; // demande l'état des accessoires (position des aiguillages)
end; end;
@@ -7917,7 +7913,7 @@ begin
rafraichit; rafraichit;
end; end;
// erreur sur socket // erreur sur socket Lenz
procedure TFormPrinc.ClientSocketLenzError(Sender: TObject; procedure TFormPrinc.ClientSocketLenzError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer); var ErrorCode: Integer);
@@ -7933,7 +7929,7 @@ begin
end; end;
affiche(s,clOrange); affiche(s,clOrange);
if nivDebug=3 then afficheDebug(s,clOrange); if nivDebug=3 then afficheDebug(s,clOrange);
parSocket:=false; parSocketLenz:=false;
ErrorCode:=0; ErrorCode:=0;
end; end;
@@ -7953,7 +7949,7 @@ begin
affiche(s,ClOrange); affiche(s,ClOrange);
afficheDebug(s,ClOrange); afficheDebug(s,ClOrange);
CDM_connecte:=false; CDM_connecte:=false;
if (portCommOuvert=false) and (parsocket=false) then LabelTitre.caption:=titre; if (portCommOuvert=false) and (parSocketLenz=false) then LabelTitre.caption:=titre;
caption:=AF; caption:=AF;
ErrorCode:=0; ErrorCode:=0;
end; end;
@@ -7987,7 +7983,7 @@ 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);
Affiche('En fonction des détecteurs mis à 1 ou 0 par des locomotives',ClYellow); Affiche('En fonction des détecteurs mis à 1 ou 0 par des locomotives',ClYellow);
Affiche('en circulation sur le réseau',ClYellow); Affiche('en circulation sur le réseau',ClYellow);
Affiche('Il est nécessaire de renseigner le fichier config.cfg',ClOrange); Affiche('Il est nécessaire de renseigner les fichiers config.cfg et config-gl.cfg',ClOrange);
Affiche('En vert : Trames envoyées à l''interface',ClWhite); Affiche('En vert : Trames envoyées à l''interface',ClWhite);
Affiche('En blanc : Trames reçues de l''interface',ClWhite); Affiche('En blanc : Trames reçues de l''interface',ClWhite);
Affiche('En violet : Trames brutes reçues de l''interface',ClWhite); Affiche('En violet : Trames brutes reçues de l''interface',ClWhite);
@@ -8051,11 +8047,7 @@ begin
cde_cdm:='0'+IntToSTR(i)+s; cde_cdm:='0'+IntToSTR(i)+s;
end; end;
procedure TFormPrinc.locoClick(Sender: TObject);
begin
// vitesse et direction 18 pas
vitesse_loco(3,20,true);
end;
procedure TFormPrinc.AffEtatDetecteurs(Sender: TObject); procedure TFormPrinc.AffEtatDetecteurs(Sender: TObject);
var j,adr,NBranche : integer; var j,adr,NBranche : integer;
@@ -8143,7 +8135,7 @@ procedure TFormPrinc.ClientSocketLenzConnect(Sender: TObject;Socket: TCustomWinS
begin begin
Affiche('Lenz connecté ',clYellow); Affiche('Lenz connecté ',clYellow);
AfficheDebug('Lenz connecté ',clYellow); AfficheDebug('Lenz connecté ',clYellow);
parSocket:=True; parSocketLenz:=True;
ButtonEcrCV.Enabled:=true; ButtonEcrCV.Enabled:=true;
ButtonLitCV.Enabled:=true; ButtonLitCV.Enabled:=true;
LireunfichierdeCV1.enabled:=true; LireunfichierdeCV1.enabled:=true;
@@ -8164,57 +8156,94 @@ begin
DeConnecterCDMRail.enabled:=true; DeConnecterCDMRail.enabled:=true;
end; end;
procedure Interprete_trameCDM(recuCDM : 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; traite,sort : boolean;
begin begin
//recuCDM:='S-E-08-0530-CMDTRN-SPDXY|063|07|NAME=BB16024;AD=3;SPEED=120;X=10521;Y=2867;X2=18915;Y2=3202;S-E-08-0531-CMDGEN-_STOP|000|'; {
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';
AckCDM:=recuCDM<>''; 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|';
if pos('ACK',recuCDM)=0 then 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<>'';
if pos('ACK',trame_CDM)=0 then
begin begin
if pos('ERR=200',recuCDM)<>0 then Affiche('Erreur CDM : réseau non chargé',clred); if pos('ERR=200',trame_CDM)<>0 then Affiche('Erreur CDM : réseau non chargé',clred);
end; end;
k:=0; k:=0;
//Affiche('L='+InTToSTR(length(recuCDM)),clyellow);
repeat repeat
// Affiche('K='+intToSTR(k)+' longueur='+intToSTR(length(recuCDM)),clyellow); // trouver la longueur de la chaîne de paramètres
// évènement aiguillage. Le champ AD2 n'est pas forcément présent i:=pos('|',trame_CDM);
posST:=pos('CMDACC-ST_TO',recuCDM); val(copy(trame_CDM,i+1,5),long,erreur);
if posST<>0 then //Affiche('long chaine param='+intToSTR(long),clyellow);
if long=0 then
begin begin
//Affiche(recuCDM,cllime); if debugTrames then Affiche('Longueur nulle',clYellow);
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);
if i<posST then begin Affiche('Erreur 98',clred);exit;end;
if i+5-posST>0 then begin Delete(recuCDM,posST,i+5-posST) ;end else
begin
s:='Erreur 95 posST='+IntToSTR(posST)+' i='+intToSTR(i);
Affiche(s,clred);
Nbre_recu_cdm:=0; Nbre_recu_cdm:=0;
Affiche(recuCDM,clred);
exit; exit;
end; 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;
val(ss,adr2,erreur); //Affiche('adr2='+intToSTR(adr2),clyellow);
Delete(commandeCDM,i,5);
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;
val(ss,etat,erreur); val(ss,etat,erreur);
//Affiche('Aiguillage CDM '+intToSTR(adr)+'='+IntToStr(etat)+' objet='+intToSTR(objet),clLime); Delete(commandeCDM,i,7);
// conversion en position :
// CDM: 0=droit 1=droite 3=gauche //Affiche('Aig '+inttostr(adr)+' pos='+IntToSTR(etat),clyellow);
// logiciel : 1=dévié 2=droit //Affiche(commandeCDM,clyellow);
// aiguillage normal // aiguillage normal
if aiguillage[adr].modele=1 then if aiguillage[adr].modele=1 then
@@ -8257,26 +8286,30 @@ begin
Event_Aig(adr,etatAig,objet); Event_Aig(adr,etatAig,objet);
Event_Aig(adr2,etatAig2,objet); Event_Aig(adr2,etatAig2,objet);
end; end;
// Tempo_chgt_feux:=10; // demander la mise à jour des feux
Tempo_chgt_feux:=10; // demander la mise à jour des feux
//Affiche(recuCDM,CLOrange);
//if length(recuCDM)>80 then Affiche(copy(recuCDM,80,length(recuCDM)-80),clOrange);
end; end;
// évènement détecteur // évènement détecteur
posDT:=pos('CMDACC-ST_DT',recuCDM); posDT:=pos('CMDACC-ST_DT',commandeCDM);
if posDT<>0 then if posDT<>0 then
begin begin
i:=posEx('AD=',recuCDM,posDT);ss:=copy(recuCDM,i+3,10); Delete(commandeCDM,posDT,12);
i:=posEx('AD=',commandeCDM,posDT);
if i<>0 then
begin
ss:=copy(commandeCDM,i+3,10);Delete(commandeCDM,i,4);
val(ss,adr,erreur); val(ss,adr,erreur);
i:=posEx('TRAIN=',recuCDM,posDT); end;
j:=PosEx(';',recuCDM,i); i:=posEx('TRAIN=',commandeCDM,posDT);
train:=copy(recuCDM,i+6,j-i-6); j:=PosEx(';',commandeCDM,i);
train:=copy(commandeCDM,i+6,j-i-6);
delete(commandeCDM,i,7);
//Affiche('Train=*'+Train+'*',clOrange); //Affiche('Train=*'+Train+'*',clOrange);
i:=posEx('STATE=',recuCDM,posDT);ss:=copy(recuCDM,i+6,10); i:=posEx('STATE=',commandeCDM,posDT);ss:=copy(commandeCDM,i+6,10);
val(ss,etat,erreur); val(ss,etat,erreur); Delete(commandeCDM,i,7);
Delete(recuCDM,posDT,i+5-posDT);
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);
@@ -8284,13 +8317,14 @@ begin
end ; end ;
// évènement signal - non stocké ni interprété // évènement signal - non stocké ni interprété
posSG:=pos('CMDACC-ST_SG',recuCDM); posSG:=pos('CMDACC-ST_SG',commandeCDM);
if posSG<>0 then if posSG<>0 then
begin begin
i:=posEx('AD=',recuCDM,posDT);ss:=copy(recuCDM,i+3,10); Delete(commandeCDM,posSG,12);
i:=posEx('AD=',commandeCDM,posDT);ss:=copy(commandeCDM,i+3,10);
val(ss,adr,erreur); val(ss,adr,erreur);
i:=posEx('STATE=',recuCDM,posSG);ss:=copy(recuCDM,i+6,10); i:=posEx('STATE=',commandeCDM,posSG);ss:=copy(commandeCDM,i+6,10);
Delete(recuCDM,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 ;
@@ -8298,91 +8332,109 @@ begin
// évènement actionneur // évènement actionneur
// attention un actionneur qui repasse à 0 ne contient pas de nom de train // 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;
posAC:=pos('CMDACC-ST_AC',recuCDM); posAC:=pos('CMDACC-ST_AC',commandeCDM);
if posAC<>0 then if posAC<>0 then
begin begin
i:=posEx('AD=',recuCDM,posAC);ss:=copy(recuCDM,i+3,10); Delete(commandeCDM,posAC,12);
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(recuCDM,i+6,l-i-6); train:=copy(commandeCDM,i+6,l-i-6);
i:=posEx('STATE=',recuCDM,posAC);ss:=copy(recuCDM,i+6,10); i:=posEx('STATE=',commandeCDM,posAC);ss:=copy(commandeCDM,i+6,10);
val(ss,etat,erreur); val(ss,etat,erreur);
Delete(recuCDM,posAC,i-posAC); Delete(commandeCDM,posAC,i-posAC);
i:=pos(';',recuCDM); i:=pos(';',commandeCDM);
if i<>0 then Delete(recuCDM,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é // évènement position des trains - non stocké ni interprété
posXY:=pos('CMDTRN-SPDXY',recuCDM); posXY:=pos('CMDTRN-SPDXY',commandeCDM);
if posXY<>0 then if posXY<>0 then
begin begin
i:=posEx('AD=',recuCDM,posXY);l:=posEx(';',recuCDM,i); Delete(commandeCDM,posXY,12);
ss:=copy(recuCDM,i+3,10); i:=posEx('AD=',commandeCDM,posXY);l:=posEx(';',commandeCDM,i);
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(recuCDM,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(recuCDM,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(recuCDM,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(recuCDM,posXY,12); Delete(commandeCDM,posXY,12);
end; end;
inc(k); inc(k);
sort:=(k>200) or (posST=0) and (posDT=0) and (posAC=0) and (posSG=0); //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('Ligne traitée'+recuCDM,clLime); //Affiche('k='+IntToSTR(k)+' Ligne traitée '+recuCDM,clLime);
if k>=200 then begin Affiche('Erreur 90 : Longrestante='+IntToSTR(length(recuCDM)),clred); Affiche(recuCDM,clred); end; //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;
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; s,ss,train : string;
traite,sort : boolean; traite,sort : boolean;
begin begin
inc(Nbre_recu_cdm); inc(Nbre_recu_cdm);
recuCDM:=ClientSocketCDM.Socket.ReceiveText; //if Nbre_recu_cdm>1 then Affiche('Empilement de trames CDM: '+RecuCDM,clred);
if trace then begin Affiche('recu de CDM:',clWhite);Affiche(recuCDM,clWhite);end; 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;
repeat
Affiche(copy(recuCDM,i*n,n),clWhite);
inc(i);
until l<i*n;
end;
Interprete_trameCDM(recuCDM); Interprete_trameCDM(recuCDM);
end; end;
@@ -8477,7 +8529,7 @@ end;
procedure TFormPrinc.ClientSocketLenzDisconnect(Sender: TObject; procedure TFormPrinc.ClientSocketLenzDisconnect(Sender: TObject;
Socket: TCustomWinSocket); Socket: TCustomWinSocket);
begin begin
parSocket:=False; parSocketLenz:=False;
end; end;
@@ -8658,10 +8710,11 @@ var i,adract,etatAct,fonction,v,acc,aO,aF,accessoire,sortie : integer;
begin begin
if (maxTablo_act=0) and (NbrePN=0) then if (maxTablo_act=0) and (NbrePN=0) then
begin begin
Affiche('Aucun actionneur déclaré',clYellow); Affiche('Aucun actionneur déclaré',Cyan);
exit; exit;
end; end;
Affiche('Codification interne des actionneurs',Cyan);
for i:=1 to maxTablo_act do for i:=1 to maxTablo_act do
begin begin
s:=Tablo_actionneur[i].train; s:=Tablo_actionneur[i].train;
@@ -8728,6 +8781,7 @@ begin
begin begin
readln(fte,s); readln(fte,s);
Affiche(s,clLime); Affiche(s,clLime);
RecuCDM:=s;
Interprete_trameCDM(s); Interprete_trameCDM(s);
end; end;
closeFile(fte); closeFile(fte);
@@ -8757,8 +8811,19 @@ begin
formDebug.show; formDebug.show;
end; end;
procedure TFormPrinc.locoClick(Sender: TObject);
begin
// vitesse et direction 18 pas
vitesse_loco(3,20,true);
end;
begin begin
end. end.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
-624
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>
BIN
View File
Binary file not shown.
+1 -1
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
+3
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