Loconet

#1 von js747a , 25.03.2022 18:38

Hallo, ich programiere eine Modellbahn Software und habe schon verschiedene Protocole integriert
- px50 - Intellybox
- z21-lan-protokoll
- CS1 CAN-Protokol
- CS2_can-protokoll_1-0

Jetzt möchte ich das Loconet Prototol (Uber USB) integrieren.
Ich habe schon einige Documente darüber gefunden.

Kennt einer sich damit aus und kann mir weiter helfen. Ich Verstehe das Loconet Protocol noch nicht so richtig.
Ich suche eine einfach darstellung wie man die Daten überträgt.
Ich programiere in Delphi. Kenne mich auch mit c++ aus.


js747a  
js747a
S-Bahn (S)
Beiträge: 17
Registriert am: 19.01.2021
Homepage: Link
Ort: Volkmarsen
Spurweite H0, N
Stromart Digital


RE: Loconet

#2 von MatthiasT , 26.03.2022 10:46

Hi,

vielleicht hilft es Dir, wenn Du die Arduino-Loconet-Bibliothek analysierst, gibt ja den kompletten Quelltext. Also anhand des funktionierenden Codes per reverse-engineering herausfinden, wie die Doku genau gemeint ist.

https://www.arduino.cc/reference/en/libraries/loconet/
https://github.com/mrrwa/LocoNet
https://mrrwa.org/loconet-interface/

Schöne Grüße
Matthias


Pyramidenkogel II - Baustelle
Pyramidenkogel I + Planung Pyramidenkogel II


js747a und Eckhart haben sich bedankt!
MatthiasT  
MatthiasT
RegionalExpress (RE)
Beiträge: 88
Registriert am: 20.01.2018
Spurweite N, 0
Stromart Digital


RE: Loconet

#3 von js747a , 05.04.2022 18:57

Ich versuche die Arduino-Loconet-Bibliothek zu analisieren aber es is ziemlich kompliziert.

Ich möchte erstmal nur die IC-Com uber USB steuern
- Power ON - Power OFF
OPC_GPON GLOBAL power ON 0x83
OPC_GPOFF GLOBAL power OFF 0x82
im protocol steht :
CHECKSUM = Exclusive Or of all the bytes in the message
Wie berechne ich die CHECKSUM , ich finde immer nur CHECKSUM wird automatisch berechnet

Mein Versuch :
OPC_GPOFF := 130; //0x82
CheckByte := $00;
Checksum := OPC_GPOFF xor CheckByte;


Jetzt habe ich ein Comport (InterfacePort) in den ich die Befehle schreibe so wie ich das auch für die Px50 kommandos über die Seriele Schnittstelle mach.
InterfacePort.WriteStr(Chr(OPC_GPOFF)+Chr(Checksum));

aber da tut sich nichts.

Hat jemand ein Beispiel dafür

Einfach nur den Befehl POWER OFF /ON senden.

www.johnny-modellbah.de


js747a  
js747a
S-Bahn (S)
Beiträge: 17
Registriert am: 19.01.2021
Homepage: Link
Ort: Volkmarsen
Spurweite H0, N
Stromart Digital


RE: Loconet

#4 von MatthiasT , 09.04.2022 20:08

...in der arduino-Loconet-Bibliothek müsste der dafür relevante Teil in ln_sw_uart.cpp in der Funktion sendLocoNetPacketTry(...) stecken. Die macht aber einiges mehr als Du jetzt versuchst, der ganze "retry"-Teil dürfte erstmal irrelevant sein..

Aufgefallen ist mir, dass dort die CheckSum zunächst auf 0xFF initialisiert wird, bei Dir aber auf 0x00. Da kommt beim xor natürlich anderes raus.

Schöne Grüße
Matthias


Pyramidenkogel II - Baustelle
Pyramidenkogel I + Planung Pyramidenkogel II


MatthiasT  
MatthiasT
RegionalExpress (RE)
Beiträge: 88
Registriert am: 20.01.2018
Spurweite N, 0
Stromart Digital


RE: Loconet

#5 von ICEVfan , 09.04.2022 21:02

Moin,

Zitat von js747a im Beitrag #3

Mein Versuch :
OPC_GPOFF := 130; //0x82
CheckByte := $00;
Checksum := OPC_GPOFF xor CheckByte;



Am Ende musst du die Checksumme noch invertieren:

1
 
Checksum = ~Checksum;  //C-Syntax
 


Beispiel bei einer 4-Byte-Message (Wieder C-Syntax):
<OPC><BYTE1><BYTE2><CHECKSUM>

1
2
3
4
5
6
7
 

CHECKSUM = 0;
CHECKSUM ^= OPC;
CHECKSUM ^= BYTE1;
CHECKSUM ^= BYTE2;
CHECKSUM = ~CHECKSUM;
 
 


Natürlich sollte man bei langen Messages die Checksumme in einer for-Schleife bilden.


Gruß

Fabian


ICEVfan  
ICEVfan
RegionalExpress (RE)
Beiträge: 84
Registriert am: 15.12.2012
Spurweite H0


RE: Loconet

#6 von DB 103 113-7 , 30.07.2022 13:37

Hallo,
ich habe einen Decoder für l.net gebaut und mich daher mit dem Protokoll beschäftigt.

Wenn man Checksum nicht mit 0x00 sondern mit 0xFF initialisiert entfällt das invertieren am Ende, denn 0xFF = ~0x00

VGA


DB 103 113-7  
DB 103 113-7
Regionalbahn (RB)
Beiträge: 29
Registriert am: 24.06.2018


   

Märklin Sound Bibliothek
Kostenlose Software für PC ?

  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz