Ankündigung

Einklappen
Keine Ankündigung bisher.

Erfahrungen mit BUS-Datentypen mit Falcon.NET?

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

    Erfahrungen mit BUS-Datentypen mit Falcon.NET?

    Hallo zusammen,

    ich hatte bisher eigene Implementierungen verschiedener Tools immer mittels der C++ Falcon Library (2.0) gemacht.
    Nun bastle ich gerade zum ersten Mal mit Falcon.NET (Version 5).

    Erster Eindruck: Sehr gut!

    Allerdings ist das Arbeiten mit den Bus-Datentypen nun völlig anders und ich kriege gerade die komplexeren Typen (Temperaturen, etc.) nicht konvertiert.
    Hat da jemand schon mit Erfahrungen und kann mir helfen?

    Viele Grüße
    Marcel

    #2
    Okay, eine erste Antwort kann ich mir selbst geben: Wenn man von dem vom Bus erhaltenen GroupData-Objekt das byte[]-Value abruft, kann man es so machen wie früher mit den Byte-Konvertern.

    Allerdings geht das bestimmt schöner, da scheinbar diese Konvertierungsoperatoren in der neuen Falcon.NET Library schon vorhanden sind.

    Kommentar


      #3
      Hallo Marcel,

      Im Falcon-API gibt es leider im Moment keine Konvertierung von DPT9 (2 Byte float) codierten Daten; muss man also von Hand machen. ​Für die 4-byte und 8-byte float-Typen gibt es hingegen entsprechende Konvertierungsoperatoren in der GroupValue-Klasse.

      Gruß, Klaus

      Kommentar


        #4
        Hi Klaus,

        danke für den Hinweis, das ist irgendwie inkonsequent. Ich nutze erstmal weiterhin meine eigenen Implementierungen, funktioniert über die serialisierten Byte-Arrays nach wie vor super.

        Was mich aber viel mehr stört:
        Es geht kein "ReadAsync" mehr, ich finde nur noch ein sychrones "Read" in der neuen Schnittstelle.
        Wenn ich es selbst parallel in mehreren Tasks aufrufe, kommt die BusConnection durcheinander.
        Das war im alten C++ Falcon schöner, da konnte man einfach einen Read auf den Bus "fire&forget" abfeuern und hat später die Antwort über die Events bekommen.
        Jetzt muss ich ein Read machen und auf das Ergebnis warten. Dazu ist das gerade bei hoher Bus-Last auch nicht zuverlässig, ich bekomme "NoResponseReceivedExceptions" und muss den Lesevorgang ab und zu wiederholen.

        Vieles ist schon schöner und stabiler, aber das ist echt unschön...

        Kommentar


          #5
          Hallo Marcel,

          Es wird demnächst wegen KNX Secure eine neue Version geben, da sind dann auch die asynchronen GroupValueReads wieder drin.

          Gruß, Klaus

          Kommentar


            #6
            Lässt sicher der Zeithorizont etwas einschränken? Weißt du ob es Überlegungen gibt das Falcon SDK als Universal Runtime Version zur Verfügung zu stellen?

            Kommentar


              #7
              Ich kann leider keine Aussagen zu Release-Terminen machen, dafür ist die KNX zuständig.

              Was meinst du mit "Universal Runtime"? Ich kenne den Begriff nur als alten Namen für die CLR. Denkst du vielleicht an .NET Core?

              Gruß, Klaus

              Kommentar


                #8
                Ja meine ich, mittlerweile sind da ein paar Synonyme im Umlauf.

                Kommentar


                  #9
                  Das wäre natürlich sehr cool... Aktuell läuft mein Backend noch auf einem INTEL NUC mit Win10.
                  Dann könnte man auf ein schlankes Linuxsystem (im ESX Cluster) oder sogar ein Raspberry nutzen...

                  Kommentar


                    #10
                    publicfloat GetFloatValueFrom2Bytes(byte [] TelegramByteArray)
                    {
                    Int32 v = ((TelegramByteArray[0] & 0x80) << 24) | ((TelegramByteArray[0] & 0x7) << 28) | (TelegramByteArray[1] << 20);
                    v >>= 20;
                    Int32 exp = (telegramByteValue[0] & 0x78) >> 3;
                    return (float)((1 << exp) * v * 0.01);
                    }

                    Kommentar

                    Lädt...
                    X