Ankündigung

Einklappen
Keine Ankündigung bisher.

Calimero KNX Lib: writeAddress blockierend, mit Routing-Modus

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Calimero KNX Lib: writeAddress blockierend, mit Routing-Modus

    Hab angefangen mich ein wenig in die Calimero KNX Lin für Java einzuarbeiten. Bin aber auf ein kleines Problemchen gestoßen dass ich gerade nicht gelöst bekomme:

    Ich möchte mit Calimero eine PA in ein Gerät schreiben. Die passende Klasse und Methode habe ich gefunden (ManagementClientImpl#writeAddress())

    Problem ist aber: Ich habe einen IP-Router als Zugang zum Bus. Und diesen möchte ich gerne im Routing-Modus belassen. Calimero sagt in seiner JavaDoc Doku aber:

    If KNXnet/IP routing is used as base protocol, the send methods with wait for confirmation behave equally like without wait specified, since routing is an unconfirmed protocol. This implies that no confirmation frames are generated, thus NetworkLinkListener.confirmation(FrameEvent) is not used.
    Die writeAddress() Methode würde normalerweise blockieren bis der Vorgang abgeschlossen ist. Aber im Routing-Modus blockiert da in der Tat wie es in der Doku steht nix. Ich hätte aber gerne den blockierenden Fall, nur eben im Routing-Modus.

    Mein ETS kann aber mit dem IP-Router in Routing-Modus "blockierend" eine PA programmieren.

    Also muss es einen Weg geben.
    Ich nehme an ich muss auf diverse Antwortnachrichten warten/filtern...

    Hat das schon mal jemand gemacht oder muss ich mich selbst durch den Wald von Klassen und Events wühlen und "reverse engineeren" auf was ich tatsächlich hören/warten muss?!
    Oder gibt's einen anderen, einfacheren Weg?

    Gruß
    Alex

    #2
    Die Sequenz sieht auf dem Bus etwa so aus:
    MaskVersionRead auf Zieladresse (um sicherzustellen, dass die Adresse unbenutzt ist). Anfrage sollte unbeantwortet bleiben.
    PhysicalAddressRead an 0/0/0 (Broadcast).
    Antwort vom Gerät im Programmiermodus ist PhysicalAddressResponse
    PhysicalAddressWrite an 0/0/0
    Gerät antwortet WIMRE mit PhysicalAddressResponse

    Max

    Kommentar


      #3
      Danke. Der Busmonitor hat mich da dann auch noch drauf gebracht.
      Werde ich entsprechend einbauen.

      Gerät antwortet WIMRE mit PhysicalAddressResponse
      WIMRE?

      Kommentar


        #4
        Zitat von tuxedo Beitrag anzeigen
        WIMRE?
        Wenn Ich Mich Recht Erinnere.

        Kommentar


          #5
          Zitat von chrisper Beitrag anzeigen
          Wenn Ich Mich Recht Erinnere.
          Ah, eine deutschsprachige Variante von AFAIR ... Okay.

          Kommentar


            #6
            Bin gerade bei der Suche nach "MaskVersionRead" in Calimero hierauf gestoßen:

            ManagementProceduresImpl#writeAddress(...)

            Da wird das von dir beschriebene Prozedere schon behandelt... Fazit: Alles schon da. Man muss nur wissen wo ;-)

            Kommentar

            Lädt...
            X