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

Binary file not shown.

View File

@@ -219,7 +219,7 @@ TitreAig='Description de l''aiguillage ';
var
FormConfig: TFormConfig;
AdresseIPCDM,AdresseIP,PortCom,recuCDM : string;
AdresseIPCDM,AdresseIP,PortCom,recuCDM,residuCDM : string;
portCDM,TempoOctet,TimoutMaxInterface,Valeur_entete,Port,protocole,NumPort,
LigneCliquee,AncLigneCliquee : integer;
clicliste : boolean;
@@ -338,7 +338,9 @@ begin
if pos('_ACK',recuCDM)<>0 then
begin
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;
Affiche(s,clYellow);
AfficheDebug(s,clyellow);
CDM_connecte:=true;

Binary file not shown.

View File

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

View File

@@ -43,7 +43,7 @@ type
EditPrec: TEdit;
EditActuel: TEdit;
Button1: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure ButtonEcrLogClick(Sender: TObject);
procedure EditNivDebugKeyPress(Sender: TObject; var Key: Char);
@@ -64,6 +64,7 @@ type
procedure ButtonDetSuivClick(Sender: TObject);
procedure ButtonCanSuivSigClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Déclarations privées }
public
@@ -117,13 +118,6 @@ begin
FormDebug.MemoDebug.Lines.add(s);
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);
begin
with ARichEdit do
@@ -371,4 +365,15 @@ begin
NivDebug:=AncDebug;
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.

Binary file not shown.

View File

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

View File

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

Binary file not shown.

Binary file not shown.

624
page.txt
View File

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

Binary file not shown.

View File

@@ -23,7 +23,7 @@ var
Lance_verif : integer;
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

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.
version 2.21 : Paramétrage du nombre de détecteurs considérés comme trop distants
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