Ankündigung
Einklappen
Keine Ankündigung bisher.
von VB.net mit Falcon über Weinzierl 332 zum KNX-Bus
Einklappen
X
-
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:
-
leer
Einen Kommentar schreiben:
-
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:
-
Warum konvertierst du so viel hin und her? Ein
sollte eigentlich reichen, um den empfangenen Wert auf eine andere GA zu senden.Code:bus.WriteValue("9/3/3", ReceivedValue.Value)
Einen Kommentar schreiben:
-
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:
-
Vom Syntax her ja. Aber inwieweit du NugetPakete in VB.Net Projekte einbinden kannst weiß ich nicht.Zitat von FranzBeranek Beitrag anzeigenvon c# nach VB.net ist es ja nicht sooo weit.
Einen Kommentar schreiben:
-
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:
-
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:
-
Moin.
Da hätte ich auch Interesse dran, da mir C# mehr liegt als VB.Zitat von proggerKA Beitrag anzeigenhab ich meine eigene geschrieben. Allerdings in C#.
Einen Kommentar schreiben:
-
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:
-
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:
-
Was macht es wenn du folgendes mit gibst?
oderbus.WriteValue("1/1/2", New GroupValue((byte)3))
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.bus.WriteValue("1/1/2", New GroupValue(0x03))
Einen Kommentar schreiben:
-
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:
-
Oder vielleicht (bin nicht so fit in VB...)Code:bus.WriteValue("1/1/2", New GroupValue(3))
Code:bus.WriteValue("1/1/2", New GroupValue(CByte(3)))
Einen Kommentar schreiben:


Einen Kommentar schreiben: