Ankündigung

Einklappen
Keine Ankündigung bisher.

von VB.net mit Falcon über Weinzierl 332 zum KNX-Bus

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

  • AlexSchei
    antwortet
    Danke, schaue ich mir bei Gelegenheit an! :-)

    Einen Kommentar schreiben:


  • thewhobox
    antwortet
    AlexSchei FranzBeranek
    So ich habe mal meine Lib veröffentlicht.
    Zu finden ist sie hier auf nuget oder github.

    Sie ist allerdings bei weitem noch nicht fertig, da die Funktionen die für mich wichtig sind als erstes implementiert wurden.

    Einen Kommentar schreiben:


  • FranzBeranek
    antwortet
    leer
    Zuletzt geändert von FranzBeranek; 09.03.2020, 12:51. Grund: gelöscht, weil doppelt

    Einen Kommentar schreiben:


  • FranzBeranek
    antwortet
    Danke Klaus, ja da hast Du natürlich recht, aber ich wollte das auch im Detail verstehen bzw debuggen, weil ich ja in der echten Anwendung den Wert auch anderweitig verarbeiten will...

    Einen Kommentar schreiben:


  • Klaus Gütter
    antwortet
    Warum konvertierst du so viel hin und her? Ein
    Code:
    bus.WriteValue("9/3/3", ReceivedValue.Value)
    sollte eigentlich reichen, um den empfangenen Wert auf eine andere GA zu senden.

    Einen Kommentar schreiben:


  • FranzBeranek
    antwortet
    Hallo Mike, ja das geht schon - auch Falcon 5.0 ist eine NuGet-Paket in c# - die Funktionen kann ich dann trotzdem in VB.net verwenden, Gruss, Franz

    Einen Kommentar schreiben:


  • thewhobox
    antwortet
    Zitat von FranzBeranek Beitrag anzeigen
    von c# nach VB.net ist es ja nicht sooo weit.
    Vom Syntax her ja. Aber inwieweit du NugetPakete in VB.Net Projekte einbinden kannst weiß ich nicht.

    Einen Kommentar schreiben:


  • FranzBeranek
    antwortet
    und hier der Code (es wird hier der Spot1 in meinem Büro auf Spot3 gespiegelt):


    Private Sub BusOnGroupValueReceived(ReceivedValue As GroupValueEventArgs)
    '
    ' ein KNX-Telegramm wurde empfangen - es steht in ReceivedValue in der Struktur GroupValueEventArgs
    ' -------------------------------------------------------------------------------------------------

    ' Gruppenadresse auf String GA umwandeln
    Dim GA As String
    GA = ReceivedValue.Address.ToString

    ' die Daten im Object Daten spiechrn - das ist ein Array von Bytes
    Dim daten
    daten = ReceivedValue.Value.Value

    ' die Daten (Byte Array) in eine Hexzahl umwandeln - in HexText
    Dim HexText As String = ""
    Dim i As Integer
    Dim ht As String
    For i = LBound(daten) To UBound(daten)
    ht = "00" & Hex(daten(i))
    ht = ht.Substring(Len(ht) - 2, 2) 'führende 0 sicherstellen
    HexText = HexText & ht
    Next i

    ' Spot 1 auf Spot 3 spiegeln
    ' ..........................

    Dim DezWert As Integer
    If GA = "9/5/1" Then ' 9/5/1 ist die Wert-Rückmeldung von Spot1
    DezWert = Convert.ToInt32(HexText, 16)
    'MsgBox(DezWert)
    bus.WriteValue("9/3/3", New GroupValues.GroupValue(CByte(DezWert))) '9/3/3 ist der Dim-Wert von Spot 3
    End If

    End Sub

    Einen Kommentar schreiben:


  • FranzBeranek
    antwortet
    Heureka, das wars! VIELEN DANK an Klaus und Mike!

    Das "New GroupValue(CByte(3))" war der Durchbruch - bin ich mir zumindest fast sicher - nur fast, weil ich blöderweise vorher von Falcon 5.7.322 auf 5.7.426 hochgerüstet habe, sollte einem alten Hasen (siehe unten) nicht passieren - aber eigentlich ist mir das wurscht, Hauptsache es geht - Danke nochmals - Beispielcode folgt unten

    zum Thema Alter Hase - ich habe da jetzt einige Wochen immer wieder dran getüftelt - und vor einer Woche hab ich mir gesagt, diese Woche muss es klappen - und es hat geklappt - Dank an Euch - und das freut mich deswegen so, weil ich morgen 65 werde - und ich so mein Fest noch mehr geniessen kann - Prost!

    Liebe Grüsse
    Franz

    Einen Kommentar schreiben:


  • AlexSchei
    antwortet
    Moin.
    Zitat von proggerKA Beitrag anzeigen
    hab ich meine eigene geschrieben. Allerdings in C#.
    Da hätte ich auch Interesse dran, da mir C# mehr liegt als VB.

    Einen Kommentar schreiben:


  • Klaus Gütter
    antwortet
    Hallo Franz,

    ich habe oben in meiner Antwort jetzt noch ein CByte ergänzt, vielleicht hilft das dem VB.net-Compiler auf die Sprünge

    Gruß, Klaus

    Einen Kommentar schreiben:


  • FranzBeranek
    antwortet
    Hallo Mike,

    leider auch nicht besser - diverse Syntax-Fehler - ich habe aber das Gefühl, dass dies der richtige Weg ist, mit "Byte" - nur wie die genaue Syntax ist, kreig ich aus Deinen Vorschlägen und zahlreichen Versuchen meinerseits, nicht raus - vielleicht hast Du (oder jemand) ein simples Beispiel in C#?

    Deine eigene Lib würde mich natürlich auch interessieren, von c# nach VB.net ist es ja nicht sooo weit.

    Danke, freundliche Grüsse
    Franz

    Einen Kommentar schreiben:


  • thewhobox
    antwortet
    Was macht es wenn du folgendes mit gibst?

    bus.WriteValue("1/1/2", New GroupValue((byte)3))
    oder
    bus.WriteValue("1/1/2", New GroupValue(0x03))
    Aus dem Grund weil ich die Falcon-Lib seltsam finde hab ich meine eigene geschrieben. Allerdings in C#. Weiß nicht ob man die in WinForm Anwendungen einbinden kann.

    Einen Kommentar schreiben:


  • FranzBeranek
    antwortet
    Danke Klaus, gleich probiert:

    Bringt leider einen Sytntaxfehler
    "BC30521 Fehler bei der Überladungsauflösung, da keine zugreifbare "New" für diese Argumente am spezifischsten ist:
    "Public Overloads Sub New(value As TwoBit)": Nicht spezifisch genug.
    "Public Overloads Sub New(value As FourBit)": Nicht spezifisch genug.
    "Public Overloads Sub New(value As SixBit)": Nicht spezifisch genug."

    Einen Kommentar schreiben:


  • Klaus Gütter
    antwortet
    Code:
    bus.WriteValue("1/1/2", New GroupValue(3))
    Oder vielleicht (bin nicht so fit in VB...)
    Code:
    bus.WriteValue("1/1/2", New GroupValue(CByte(3)))
    Zuletzt geändert von Klaus Gütter; 07.03.2020, 06:51. Grund: CByte ergänzt

    Einen Kommentar schreiben:

Lädt...
X