Einzelnen Beitrag anzeigen

js747a

Registriert seit: 11. Aug 2008
Ort: Nord hessen
43 Beiträge
 
Delphi 7 Enterprise
 
#1

Loconet uber USB

  Alt 6. Apr 2022, 18:53
Hallo, ich erweitere mein Modellbahnprogramm mit LOCONET über USB

Bisher habe ich Daten verschickt über den COM Port (cPort)
- InterfacePort := TComPort.Create
- InterfacePort.Open
- z.B. Mit InterfacePort.WriteStr('x' + Chr(160));

oder über ein Netzwerk mit TClientSocket - WLAN - Netwerkkabel...

Jetzt möchte ich Daten verschicken über USB.

Ich habe versucht mit den COM Port(cPort)
- InterfacePort.Open
- If InterfacePort.Connected zeigt mir das der Port verbunden ist.

Im LOCONET Protokol steht das
Die Daten-Bytes auf dem LocoNet® sind als 8-Bit-Daten definiert, die mit dem als letztes Bit im Oktett übertragenen höchstwertigen Bit (ms) eine Befehlscode-Markierung (OPCODE) erhalten. Wenn das ms-Bit (D7) 1 ist, werden die 7 geringwertigeren Bits als Netzwerk-OPCODE interpretiert. Dieses OPCODE-Byte ist immner nur einmal in einer gültigen Nachricht enthalten und ist das erste Byte einer Nachricht. In allen überigen Bytes der Nachricht muss inklusive des letzten Prüfsummenbytes (CHECKSUM) das höchstwertige Bit auf 0 gesetzt sein. Die CHECKSUM ist das Einer-COMPLEMENT eines Exclusiv-Oder über alle Bytes der Nachricht, außer der CHECKSUM selbst. Um die Datengenauigkeit zu prüfen, sind alle Bytes einer korrekten Nachricht exclusiv-oder-verknüpft. Wenn der resultierende Wert hexadezimal “FF” ist, werden die Daten als richtig akzeptiert.

Irgendwie verstehe ich das ganze nicht so.
Ich habe versucht mit


OPC_GPON ,CheckByte ,Checksum : Integer;

OPC_GPON := 130; //0x83
CheckByte := $00;
Checksum := OPC_GPON xor CheckByte;
InterfacePort.WriteStr(Chr(OPC_GPON)+Chr(Checksum) );

Es tut sich nichts.
Mache ich was falsch bei exclusiv-oder-verknüpfung oder geht das mit dem Com Port für USB nicht.
  Mit Zitat antworten Zitat