vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Ein- und Umsteiger
Re: Variablendeklaration in Class.New mit unterschiedlichen Typen 
Autor: Peter S.
Datum: 20.02.15 14:46

OK, tut mir leid, wenn ich zu wenig Informationen geliefert habe.

Von einem Rechner sollen motorisierte Achsen angetrieben werden. Konkret 3 Stück.
Dabei gibt es unterschiedliche Typen von Achsen, die mit prinzipiell gleichlautenden Befehlen unterschiedliche Routinen zur Ansteuerung brauchen.
Z.B. der Befehl "Move(10)" soll jede Achse zur Position 10 fahren, dahinter stecken aber die typspezifischen Routinen MoveA(), MoveB(), usw.

Während der Laufzeit soll erst festgelegt werden, welche Achsen von welchem Typ angeschossen sind.

Im Hauptprogramm möchte ich die 3 Achsen mit typunabhängigen Befehlen wie folgt ansprechen:
   X.Home()
   Y.Move(20)
   Z.Speed = 100
   ...
Bisher habe ich es so gelöst, dass bei jedem Befehl (Home, ...) mit einer Select Case den Typ der Achse abfrage und dann die entsprechende typspezifische Subroutine (HomeA, HomeB, ...) aufrufe.

Das funktioniert, ist aber bestimmt nicht die eleganteste Methode.


Daher hier mein Ansatz, wie im 1. Posting beschrieben:

Jede Achse ist eine Instanz der Hauptklasse "Axis". Bei der Erstellung der Instanz wird der Motortyp mit übergeben.
		Dim X As New Axis(Axis.Type.A, Port1) 'z.B. vom Typ A
		Dim Y As New Axis(Axis.Type.A, Port2) 'z.B. vom Typ A
		Dim Z As New Axis(Axis.Type.B, Port3) 'z.B. vom Typ B
Das ist das Ziel!

Damit soll erreicht werden, dass ich beim Aufrufen von Prozeduren (z.B. X.Home) die richtige Routine (z.B. HomeA) aufgerufen wird. Dabei möchte ich aber nicht wie bisher bei jedem möglichen Befehl eine Select-Case-Abfrage haben, sondern nur eine in der New() Prozedur.

Public Class Axis
 
    Sub New(Typ as .., ByVal Port As SerialPort, ByVal ...)
 
        'Hier wird je nach Typ (A, B ,,,, ) die Variable Achse definiert
        Select Case Typ
            Case Type.A
		 Dim Achse As New A(Port, ,...)
            Case Type.B
		 Dim Achse As New B(Port, ...)
            '....
            '.... ca. 6-7 mögliche Achsen-Typen 
 
        End Select
 
    End Sub
 
 
    Sub Home()
          'Je nach Typ von "Achse" wird hier die Routine A.Home() oder B.Home() 
          ' ...  aufgerufen
	  Achse.Home()
    End Sub
 
    Sub Move()
          Achse.Move()
    End Sub
 
    '....
    '....  ca. 10-15 mögliche Befehle
 
 
End Class
Nur leider funktioniert das Caseabhänige deklarieren von "Achse" als Instanz unterschiedlicher Klassen nicht.


Ich hoffe, diesmal ist alles etwas nachvollziehbarer ausgedrückt.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Variablendeklaration in Class.New mit unterschiedlichen Type...1.601Peter S.20.02.15 10:19
Re: Variablendeklaration in Class.New mit unterschiedlichen ...956Manfred X20.02.15 11:47
Re: Variablendeklaration in Class.New mit unterschiedlichen ...903Peter S.20.02.15 13:10
Re: Variablendeklaration in Class.New mit unterschiedlichen ...918Manfred X20.02.15 13:45
Re: Variablendeklaration in Class.New mit unterschiedlichen ...919Peter S.20.02.15 14:46
Re: Variablendeklaration in Class.New mit unterschiedlichen ...1.046Manfred X20.02.15 15:13
Re: Variablendeklaration in Class.New mit unterschiedlichen ...1.026Peter S.20.02.15 21:26
Re: Variablendeklaration in Class.New mit unterschiedlichen ...913Manfred X21.02.15 00:28
Re: Variablendeklaration in Class.New mit unterschiedlichen ...873Manfred X21.02.15 06:19
Re: Variablendeklaration in Class.New mit unterschiedlichen ...889sv0001020.02.15 23:06
Re: Variablendeklaration in Class.New mit unterschiedlichen ...931cookstdu21.02.15 10:27
Re: Variablendeklaration in Class.New mit unterschiedlichen ...867Peter S.22.02.15 22:08
Re: Variablendeklaration in Class.New mit unterschiedlichen ...872Manfred X23.02.15 06:07
Re: Variablendeklaration in Class.New mit unterschiedlichen ...892Peter S.23.02.15 10:02

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-2025 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