Archiv verlassen und diese Seite im Standarddesign anzeigen : OT: vb.net hier diskutieren?
Hallo
Nachdem ich die Winswitch Demo endlich beiseite legen will, möchte ich gerne in vb.net mein Visu erstellen.
Da dies aber ein EIB Forum ist, bin ich mir nicht sicher, ob dies hier gern gesehen wird :confused:
Ich würde gerne über das Vorgehen, implentieren, Code-Beispiele, ... hier diskutieren und empfehlungen suchen, sofern manche hier sich mit dieser Thematik auskennen.
Also wenn die Administratoren hier nichts dagegen haben, würde ich gerne dies weiterführen.
Ansonsten aktzeptiere ich natürlich die Meinungen und "bleibe" in einem vb Forum.
Schönen 4. Advent
Hannes
Hallo Hannes,
denke, wenn es bei den reinen EIB-Sachen bleibt und nicht in allg. VB abwandert, werden wir wohl alle interessiert mitlesen.
mfg
GLT
Danke, werde veruschen nicht zu sehr die EIB Seite zu vernachläßigen ...
Mein Anfang ist schon mal schwer. Ich weiß noch nicht, genau, wie ich die einkommenden Telegramme am besten und effizientesten speichere.
Als Beispiel habe ich diesen Code bekommen:
<code>Public Interface IGeraet
ReadOnly Property TypName() As String
ReadOnly Property Name() As String
ReadOnly Property Status() As String
Sub Action(ByVal Command As String)
End Interface
Public Class Heizung
Implements IGeraet
Private AktuelleIstTemperatur As Double
Protected meinName As String
Public Sub New(ByVal _name As String)
meinName = _name
End Sub
Public Sub Action(ByVal Command As String) Implements IGeraet.Action
AktuelleIstTemperatur = CDbl(Command)
End Sub
Public ReadOnly Property TypName() As String Implements IGeraet.TypName
Get
Return "Heizung"
End Get
End Property
Public ReadOnly Property Name() As String Implements IGeraet.Name
Get
Return meinName
End Get
End Property
Public ReadOnly Property Status() As String Implements IGeraet.Status
Get
Return AktuelleIstTemperatur.ToString()
End Get
End Property
End Class</code>
Ich müßte aber in einem Stack (denk ich mal) die ganze Sache speichern, der eben nur 2 Werte behält.
Außerdem gleich die Uhrzeit/Datum.
Dann kann man schon einmal Flanken auswerten (up/down).
Ich muss so aber wohl für jede Möglichkeit eine Klasse erstellen:
Frostschutz
Komfort
Standby
Nacht
Stellgröße
Ventilstellung
SollTemperatur
...
Die dann für jeden Raum zuweisen. Das Zuweisen würde so funkt.:
meinRaum.Geraete.Add("Küche", New Heizung("Standby"))
Ob das schon mal ein guter Anfang wäre, um darauf eine Visu aufzubauen?
Eure Meinungen und Vorschläge wäre gefragt.
Folgende Funktionen des EIB sollen ja möglich sein:
Flanke auf/ab
(Überprüfen des Stack auf den vorigen Wert)
Treppenhaus
(Setzen eines Aus Befehles in einer DB der Sekündlich abgearbeitet wird)
Schalten
(Wohl das einfachere)
Dimmen
(Da ich nicht selber Dimmer habe, muss ich zur Bedienung sicher später noch nachfragen)
Rollladen
(Ist wohl mit Schaltbefehlen gleichzusetzen)
Standby,Komfort,Nacht
(Hier gibts Unterschiede (Bei meinem Berker IQ und Merten zum Beispiel))
div Werte
(Diese werden eben noch ergänzt)
Hannes
Hallo
Speichern würde ich alles bei VB.Net in einen DataSet-DataView.
Gruss NetFritz
Hallo NetFritz
Man müßte aber dann ja auch den Timestamp miteintragen, bzw für Flanken den vorigen Wert, oder wie würdest du das ganze erstellen?
Gruß
Hannes
Hallo Unique24
Zeitstempel, Gruppenadresse und Wert muß eigentlich reichen.
Warum für den vorherrigen Wert die Flanke eintragen ???.
Wenn Du Zeitstempel, Gruppenadresse und Wert nur bei Änderung in das
DataSet einträgts dann hast Du ja immer den Aktuellen Wert.
Z.B. bei Binär
24.12.2005 18:00:00 1/3/22 1
dann war der Wert vor 18:00 0
Gruss NetFritz
Hallo,
als EIB neuling habe ich da eine Frage: Gibt es .NET/C++/Linux, it is ..... EIB Software Development Forums ?
Danke
ferna1p
PS: Entschuldigt mein schlechtes deutch, ich schreibe aus Protugal :)
Hallo NetFritz
Hmmm ... ja das ist klar. Ich hatte zwar vor, jeglichen Busverkehr in der Klasse zu speichern, aber wenn ich den Busverkehr in eine SQL Datenbank speichere und die aktuellen Zustände in ein Dataset wäre das Sinngemäß.
Werde mir die Dataset Funktionen einmal genauer ansehen. Vor allem in wie weit man die einzelnen GA´s wieder abrufen kann.
Wie machst du das bei einer Treppenhaus Funktion?
Eine Sekunden Schleife die eine DB abgfragt ob etwas geschaltet werden soll?
Frohe Weihnachten
Hannes
PS: Heute meinte meine Frau ob wir nicht in den "sauren" Apfel beißen sollen, und uns eine komfortable Visu kaufen :-) Sie Winswitch Demo beendet ja immer nach 1 Stunde.
Und so langsam wird auch meine Frau vom EIB "verwöhnt" ;-)
Hallo Unique24
Werde mir die Dataset Funktionen einmal genauer ansehen. Vor allem in wie weit man die einzelnen GA´s wieder abrufen kann
Das geht am besten mit einem DataView.
Das DataWiew kann man dursuchen und sortieren.
Wie machst du das bei einer Treppenhaus Funktion?
Eine Sekunden Schleife die eine DB abgfragt ob etwas geschaltet werden soll?
Mit einer Timer Sub die jede Sekunde aufgerufen wird.
Mit einem EIB-Gerät mit Treppenhaus Funktion arbeitet man am sichersten.
Frohe Weihnachten allen
Gruss NetFritz
Hallo Netfritz
Inzwischen habe ich mich einmal mit Dataset beschäftigt, aber im Moment bleibe ich noch bei meiner EIB.Klasse
Das senden und anschließende aktualisieren der Controls auf jeder Form funktioniert soweit.
Probleme machen mir noch die Logik:
Dim logik As New Logik
Select Case Gruppenadresse
Case "3/3/3"
If KO("3/3/3").Wert = "1" And KO("3/3/3").FlankeUp = True And KO("1/1/1").Wert = "0" Then GaSet("1/1/1", "1", Date.Now)
Case "5/7/0"
'Bei Dämmerung unter 100 lux Jalousie runterfahren/rauffahren
If CDbl(KO("5/7/0").Wert) < 100 Then
logik.NurBeiVeränderung("3/2/19", "1")
Else
logik.NurBeiVeränderung("3/2/19", "0")
End If
Case Else
End Select
Kommt auf 5/7/0 ein Wert unter 100,dann Jalousie runter bzw über 100 rauf. Das ganze eben nur, falls die Adresse 3/2/19 sich inzwischen geändert hat(Klasse Logik hat die SUB NurBeiVeränderung). Sonst kommen zyklische telegramme auf den Bus
Wenn nun aber die Jalousie auf einer anderen GA hochgefahren wird ist der Status 3/2/19 nicht up-to-date.
Also müßte ich 3/2/19 beim Hochfahren auf den wert der GA die Hochfährt anpassen. Ist aber dann schnell unübersichtlich und eine Menge zu programmieren.
Bei den Controls habe ich es mir "einfach" gemacht.
Bei einem klick:
Private Sub Slider1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Slider1.MouseUp
GaSet(sender.tag, sender.value, Date.Now)
End Sub
Im TAG jedes Control´s sind wie in der ETS die Gruppenadressen eingetragen. Auf die erste wird gesendet, auf die restlichen gehört.
So brauche ich mir keine Sorgen mehr um die aktualisierung zu machen. Jedes Control wird (Projektgrößen unabhängig) beim eintreffen einer GA aktualisiert.
Aber die Logik:
Hat schon jemand eine Logik Klasse entworfen, um dort beim Ausgang ebenso mehrere Gruppenadressen eintragen zu können?
Dachte daran, das man dann ein Arraylist damit füllt.
Für die Verschiedenen Logiken AND,OR,XOR, ...?
Für UND habe ich einmal eine Function getippt, jedoch kann ich eben keine festen Gruppenadressen an den Ausgang legen:
Public Function UND(ByVal sender As String, ByVal Ausgang As String, ByVal Gruppenadressen As ArrayList, Optional ByVal Überschreibbar As Boolean = False, Optional ByVal NurBeiVeränderung As Boolean = True)
If sender = Ausgang And Überschreibbar = False Then Exit Function
Dim result As Boolean
For Each g As eib In Gruppenadressen
If g.Wert = 0 Then result = False : Exit For
Next
If result = False Then
If NurBeiVeränderung = True Then
If KO(Ausgang).Wert <> result Then GaSet(Ausgang, "0", Now)
Else
GaSet(Ausgang, "0", Now)
End If
End If
If result = True Then
If NurBeiVeränderung = True Then
If KO(Ausgang).Wert <> result Then GaSet(Ausgang, "1", Now)
Else
GaSet(Ausgang, "1", Now)
End If
End If
End Function
Ideen?
Hannes
Powered by vBulletin® Version 4.2.4 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.