vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: In Klasse Stucture und Enum verwenden 
Autor: Bibobernie
Datum: 31.08.12 15:14

Najas, habs geschachtelt genannt weils im Klassendiagramm unter geschachtelte Typen geführt wird;). Wie man es nun auch bezeichnet, wirklich weiter bin ich noch nicht damit gekommen. Hier erstmal der Code. Im Grunde der gleiche wie oben nur die beiden Fetten worte haben sich geändert:

Public Class MessGerät
    Public Enum Führungsgröße
        Aus
        Zellspannung
        Elektrolysestrom
        Sauerstoffkonzentration
    End Enum
 
    Private _Uart As SerialPort
    Private _Fuehrung As Integer
 
    ''' <summary>
    ''' Gibt die Com-Schnittstelle der Messzelle über die kommuniziert wird 
    ' zurück
    ''' </summary>
    ''' <value></value>
    ''' <returns>Schnittstelle als Seriellen Port</returns>
    ''' <remarks></remarks>
    Public Property MYPort As SerialPort
        Get
            Return _Uart
        End Get
        Set(ByVal value As SerialPort)
            _Uart = value
        End Set
    End Property
 
    Public Sub New(ByVal Schnittstelle As SerialPort)
        _Uart = Schnittstelle
 
    End Sub
 
 Public Class Messwerterfassung
 
        Public shared Function SetzeFührung(ByVal Führung as _
          Führungsgröße) As integer
            With MYPort
                Try
                    .Write("Befehl1" & vbCr)
                    Dim Antwort As String = .ReadTo(ChrW(13))
                    If Antwort.Contains("!") Then
                        Antwort = Antwort.Remove(0, 3)
                        _Führung = Cint(Antwort)
                        Return cint(Antwort)
                    Else
                        Return -9999
                    End If
                Catch ex As TimeoutException
                    Throw New ApplicationException(ex.Message, _
                      ex.InnerException)
                Catch ex As Exception
                    Throw New ApplicationException(ex.Message, _
                      ex.InnerException)
                End Try
            End With
        End Function
 
'Funktion 2, 3 usw
 
        End structure
 
Public Structure Parameter
'Funktion 1, 2 usw
End Structure
 
End Class
Damit kann ich zumindest schonmal einen aufruf ala MessGerät.Messwerterfassung.SetzeFührung durchführen. Allerdings würde ich in der Methode SetzeFührung noch den Seriellen Port benötigen damit die Befehle dann an das Gerät geschickt werden können. Eventuell den ich aber auch zu kompliziert und ein anderer Ansatz wäre einfacher...?

Ahnungsloser ahnungsloser...

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

In Klasse Stucture und Enum verwenden 
Autor: Bibobernie
Datum: 31.08.12 08:55

Nach längerer Pause kann ich mich nun endlich wieder ein wenig der Programmierung widmen und stoße sogleich auf zwei kleinere problemchen. Zum einen würde ich sehr gern Strukturen für zusammengehörende Befehle in meiner Klasse verwenden. Zum anderen würde ich gern zulässige Eingaben bei Funktionen mittels Enum vorgeben. Hier mal ein Beispiel:

Public Class MessGerät
    Public Enum Führungsgröße
        Aus
        Zellspannung
        Elektrolysestrom
        Sauerstoffkonzentration
    End Enum
 
    Private _Uart As SerialPort
    Private _Fuehrung As Integer
 
    ''' <summary>
    ''' Gibt die Com-Schnittstelle der Messzelle über die kommuniziert wird 
    ' zurück
    ''' </summary>
    ''' <value></value>
    ''' <returns>Schnittstelle als Seriellen Port</returns>
    ''' <remarks></remarks>
    Public Property MYPort As SerialPort
        Get
            Return _Uart
        End Get
        Set(ByVal value As SerialPort)
            _Uart = value
        End Set
    End Property
 
    Public Sub New(ByVal Schnittstelle As SerialPort)
        _Uart = Schnittstelle
 
    End Sub
 
 Public Structure Messwerterfassung
 
        Public Function SetzeFührung(ByVal Führung as Führungsgröße) As integer
            With MYPort
                Try
                    .Write("Befehl1" & vbCr)
                    Dim Antwort As String = .ReadTo(ChrW(13))
                    If Antwort.Contains("!") Then
                        Antwort = Antwort.Remove(0, 3)
                        _Führung = Cint(Antwort)
                        Return cint(Antwort)
                    Else
                        Return -9999
                    End If
                Catch ex As TimeoutException
                    Throw New ApplicationException(ex.Message, _
                      ex.InnerException)
                Catch ex As Exception
                    Throw New ApplicationException(ex.Message, _
                      ex.InnerException)
                End Try
            End With
        End Function
 
'Funktion 2, 3 usw
 
        End structure
 
Public Structure Parameter
'Funktion 1, 2 usw
End Structure
 
End Class
Das Problem ist jetzt das ich von der Struktur aus nicht auf MYPort zugreifen kann. Dieser wird blau unterringelt ("Der Verweis auf einen nicht freigegebenen Member erfordert einen Objektverweis"). Was kann man da machen? Wollte das ganze dann später so haben das ich beim Einsatz der Klasse z.B. MessGerät.Messwerterfassung.Führungsgröße(ENUM) eingeben kann.

Das zweite problemchen bezieht sich auf den Enum. Dieser soll später zulässige Werte anzeigen. Wenn ich diesen jedoch als Public deklariere kann man selbigen immer lesen und nicht erst an der Stelle wo er eingesetzt werden soll (Also schon bei Messgerät.ENUM statt erst bei MessGerät.Messwerterfassung.Führungsgröße(ENUM)). Gibt es eine Möglichkeit das der Enum nicht sofort angezeigt wird und trotzdem als Vorgabe verwendet werden kann?

Ahnungsloser ahnungsloser...

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: In Klasse Stucture und Enum verwenden 
Autor: ModeratorFZelle (Moderator)
Datum: 31.08.12 09:50

1. Warum meinst du Struct einsetzen zu wollen? An den stellen ist es komplett falsch.
2. Du solltest dringend mal etwas zu Klassen und Sichtbarkeiten lesen.

http://openbook.galileocomputing.de/visual_basic/Kapitel_04-001.htm
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: In Klasse Stucture und Enum verwenden 
Autor: Bibobernie
Datum: 31.08.12 10:48

Nun ja, weil es damit möglich zu sein scheint die Befehle entsprechend in Kategorien zu sortieren. Hoffte damit etwas in diese Richtung zu erreichen:

Klasse Test
 Struktur Befehle
  Befehl 1
  Befehl 2
 Struktur Kommandos
  Kommando 1
  Kommando 2
Um bei der späteren Verwendung dieser Klasse das ganze übersichtlicher zu haben:

Test.Befehle.Befehl2
Test.Kommandos.Kommando1
usw.

Ich hab schonmal das Buch überflogen. Bis jetzt hab ich zu diesem Fall leider noch nichts finden können. Aber danke für den Link. Werd gleich noch ein wenig schmökern.

Wenn aber ne Struktur der völlig Falsche ansatz sein sollte wäre noch ein Hinweis super wie man dieses Verhalten besser erzeugen kann.

Ahnungsloser ahnungsloser...

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: In Klasse Stucture und Enum verwenden 
Autor: ModeratorFZelle (Moderator)
Datum: 31.08.12 11:21

Structs sind für DATEN.
Was du willst sind Klassen oder Namensräume.

Und vom Bücher überfliegen lernt man selten etwas. Richtiges durcharbeiten ist da schon nötig.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: In Klasse Stucture und Enum verwenden 
Autor: Bibobernie
Datum: 31.08.12 14:10

Danke für die Antwort. Na dann weiß ich ja wonach ich schauen muss. Dann versuch ich mal herauszufinden wie ich das ganze mit Klassen bzw. Namespaces gelöst bekommen kann.

Ahnungsloser ahnungsloser...

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: In Klasse Stucture und Enum verwenden 
Autor: Bibobernie
Datum: 31.08.12 14:32

So, bin ein kleines Stück weiter gekommen. Nun nutz ich statt einer Struktur eine Klasse. Das funktioniert allerdings nur wenn die Funktionen in selbiger als Shared deklariert sind. Allerdings habe ich damit noch immer das Problem das ich auf meinen seriellen Port nicht zugreifen kann. Der ist nach wie vor blau unterringelt. Wie erreiche ich am besten das ich den Prot auch in "geschachtelten" Klassen nutzen kann?

Ahnungsloser ahnungsloser...

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: In Klasse Stucture und Enum verwenden 
Autor: Micke
Datum: 31.08.12 15:02

geschachtelte ... ?
aber ja, man erahnt natürlich was du meinst.

poste deinen neuen CodeStand ruhig nochmal

Micke

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: In Klasse Stucture und Enum verwenden 
Autor: Bibobernie
Datum: 06.09.12 16:19

So ich bin jetzt ein kleines Stück weiter (komme z.Z. leider nur unregelmäßig dazu was am Projekt zu machen). Und zwar dachte ich mir das man die Problemstellung mittels einer ausgelagerten Klasse lösen kann. Diese instanziiert man mit der Instanz der Basisklasse und bindet Sie über eine Property ein. Meine das in etwa so:

Class Basis
 
    Public Funktionen As Fkt
    Private _Uart As Serialport
 
    Sub New(ByVal Port As Serialport)
        _Uart = Port
        Funktionen = New Fkt(Port)
    End Sub
 
    'weitere Subs
 
End Class
 
Class Fkt
 
    Private FktPort As SerialPort
 
    Sub New(ByVal Port As SerialPort)
        FktPort = Port
    End Sub
 
    Public Function Test() As String
        Return "Test"
    End Function
 
    'weitere Funktionen
 
End Class
Damit kann ich über intellisens zumindest schonmal das erreichen was ich wollte. Allerdings wird die FKT-Klasse dann wie eine Variable angezeigt (blaues Quadrat im Intellisense). Sonst scheint zwar alles zu funktionieren aber eventuell ist das ja bei weitem nicht optimal...

Hat eventuell jemand noch nen etwas konkreteren Tip für mich? Würde nämlich gern wissen wie ich es hinbekommen kann das die Klasse dann auch im Intellisense wie eine Klasse angezeigt wird (allerdings erst wenn Basis instanziiert ist). Wurmt mich grad weil ich irgendwie nicht weiter komme mit meinen ansätzen...

Ahnungsloser ahnungsloser...

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: In Klasse Stucture und Enum verwenden 
Autor: ModeratorFZelle (Moderator)
Datum: 07.09.12 10:49

Du hast irgendwie überhaupt nicht verstanden was Klassen und was Objekte sind.
Du irrst so durch die Gegend und machst so ziemlich alles falsch, weil dir die absoluten Grundlagen fehlen.

Tue dir selber einen gefallen und lies wenigstens die Grundlagen zu Klassen und Objekten in einem Buch nochmal genau durch., z.b. http://openbook.galileocomputing.de/visual_basic/Kapitel_04-001.htm und ff.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: In Klasse Stucture und Enum verwenden 
Autor: Bibobernie
Datum: 10.09.12 09:12

So da meld ich mich zurück vom Wochenende.

Hm, das find ich nun aber doch ein wenig Unfair. Ich wende meine vermutlich nicht ausreichend vorhandenen Kenntnisse vielleicht etwas ineffektiv an, aber das ich überhaupt nicht verstanden habe was ne Klasse ist oder selbig macht möcht ich doch zurück weisen. Ich habe mir bereits einige Bücher besorgt und auch die jeweiligen Kapitel über Klassen durchgearbeitet und auch schon eine eigene Klasse erfolgreich in Aktion genommen.

Hier war ich an einem Punkt an dem mir kein Buch wirklich weiterhelfen konnte. Naja, vielleicht hast du ja recht und ich befinde mich wirklich auf dem Holzweg...

Werd dann erstmal nicht mehr nerven...

Ahnungsloser ahnungsloser...

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel