Nachdem ich nun wieder einige gelernt habe, bin ich an eine neue Aufgabe gegangen.
Beschreibung:
Ein kleines privates Parkhaus mit einer Einfahrt und Ausfahrt verfügt über X Stellplätze. An der Einfahrt und Ausfahrt sind Schranken montiert. Ein und ausfahrende Autos werden gezählt. Zusätzlich befindet sich an der Einfahrt eine Ampel. Die grüne Leuchte signalisiert freie Einfahrt, die rote Leuchte ein volles Parkhaus. Zudem zeigt eine Anzeige den Autofahrern wie viele Plätze frei sind.Sofern freie Plätze vorhanden sind, soll ein Freigabe-Signal ( per Butten simulierter Magnetstreifen ) an die selbst gesteuerte Einfahrtschranke ausgegeben werden.Für die Überwachung der freien Plätze wird ein Zähler angewendet. Jedes einfahrende Auto verursacht somit eine Verringerung der Anzahl der freien Plätze. Jedes herausfahrende Auto die Erhöhung der Anzahl der freien Plätze im Parkhaus. Mit überqueren des Magnetstreifen soll die Schranke ( Ein und Ausfahrt ) nach einer vorgegebenen Zeit öffnen und wieder schließen.
Was ich bemerkte ist, das wenn man zu schnell auf die Buttons klickt der Timer manchmal hängt...
Hier der Code den ich nun erstellt habe: " Option Explicit / Opton Strict /Option Infer " alle auf ON
Spoiler anzeigen
Beschreibung:
Ein kleines privates Parkhaus mit einer Einfahrt und Ausfahrt verfügt über X Stellplätze. An der Einfahrt und Ausfahrt sind Schranken montiert. Ein und ausfahrende Autos werden gezählt. Zusätzlich befindet sich an der Einfahrt eine Ampel. Die grüne Leuchte signalisiert freie Einfahrt, die rote Leuchte ein volles Parkhaus. Zudem zeigt eine Anzeige den Autofahrern wie viele Plätze frei sind.Sofern freie Plätze vorhanden sind, soll ein Freigabe-Signal ( per Butten simulierter Magnetstreifen ) an die selbst gesteuerte Einfahrtschranke ausgegeben werden.Für die Überwachung der freien Plätze wird ein Zähler angewendet. Jedes einfahrende Auto verursacht somit eine Verringerung der Anzahl der freien Plätze. Jedes herausfahrende Auto die Erhöhung der Anzahl der freien Plätze im Parkhaus. Mit überqueren des Magnetstreifen soll die Schranke ( Ein und Ausfahrt ) nach einer vorgegebenen Zeit öffnen und wieder schließen.
Was ich bemerkte ist, das wenn man zu schnell auf die Buttons klickt der Timer manchmal hängt...
Hier der Code den ich nun erstellt habe: " Option Explicit / Opton Strict /Option Infer " alle auf ON

VB.NET-Quellcode
-
- Public Class frm_main
- Dim Parkhaus As New Gebäude
- Public btn_E_1EinfahrtAlreadyClicked As Boolean
- Public btn_A_1AusfahrtAlreadyClicked As Boolean
- Private Sub frn_main_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
- Einstellungen()
- End Sub
- Private Sub Einstellungen()
- Timer1.Stop()
- btn_A_1Ausfahrt.Enabled = False
- Parkhaus._Stellplätze = 5
- lb_freiStellplatz.Text = "Freie Stellplätze: " & Parkhaus._Stellplätze
- lb_Gesamtautos.Text = "Anzahl gesammt: " & Parkhaus._Zählerausfahrt
- 'Anzahl der Stellplätze ( Erweiterung )
- 'cmb_stellplätze.DataSource = "2 5 10 15 20".Split
- End Sub
- Friend Sub Schrankenzeiten()
- Select Case True
- Case btn_E_1EinfahrtAlreadyClicked = True
- Dim _Ort As String = CStr(Gebäude.Standort.Einfahrt)
- Parkhaus._Zeit = (Parkhaus._Zeit + 1) Mod 2
- Parkhaus._neuStatus = CType(Parkhaus._Zeit, Gebäude.Schrankenstatus)
- Timer1.Interval = Parkhaus._Schrankenphasen(Parkhaus._Zeit)
- Parkhaus.Schrankensteuerung(CType(_Ort, Gebäude.Standort), Parkhaus._neuStatus)
- Case btn_A_1AusfahrtAlreadyClicked = True
- Dim _Ort As String = CStr(Gebäude.Standort.Ausfahrt)
- Parkhaus._Zeit = (Parkhaus._Zeit + 1) Mod 2
- Parkhaus._neuStatus = CType(Parkhaus._Zeit, Gebäude.Schrankenstatus)
- Timer1.Interval = Parkhaus._Schrankenphasen(Parkhaus._Zeit)
- Parkhaus.Schrankensteuerung(CType(_Ort, Gebäude.Standort), Parkhaus._neuStatus)
- End Select
- End Sub
- Friend Sub Steurungsignalgeber()
- If Parkhaus._Stellplätze = 0 Then : btn_E_1Einfahrt.Enabled = False : Else : btn_E_1Einfahrt.Enabled = True : End If
- If Parkhaus._Stellplätze = 5 Then : btn_A_1Ausfahrt.Enabled = False : ElseIf Parkhaus._Stellplätze < 4 Then
- : btn_A_1Ausfahrt.Enabled = True : Else : btn_A_1Ausfahrt.Enabled = True : End If
- End Sub
- Friend Sub Anzeigen(ByVal AnzeigeAmpel As Gebäude.Ampelsignal)
- Select Case AnzeigeAmpel
- Case Gebäude.Ampelsignal.Grün
- 'Anzeige ein Bild oder ....
- Case Gebäude.Ampelsignal.Rot
- 'Anzeige ein Bild oder ....
- End Select
- End Sub
- Friend Sub AnzeigeZähler()
- lb_freiStellplatz.Text = "Freie Stellplätze: " & Parkhaus._Stellplätze
- lb_Gesamtautos.Text = " Anzahl gesammt: " & Parkhaus._Zählerausfahrt
- End Sub
- Private Sub btn_E_1Einfahrt_Click(sender As Object, e As EventArgs) Handles btn_E_1Einfahrt.Click
- btn_A_1AusfahrtAlreadyClicked = False
- btn_E_1EinfahrtAlreadyClicked = True
- Timer1.Start()
- Parkhaus._anzahl = "E_1"
- Parkhaus.Stellplatzzähler(Parkhaus._anzahl)
- End Sub
- Private Sub btn_A_1Ausfahrt_Click(sender As Object, e As EventArgs) Handles btn_A_1Ausfahrt.Click
- btn_A_1AusfahrtAlreadyClicked = True
- btn_E_1EinfahrtAlreadyClicked = False
- Timer1.Start()
- Parkhaus._anzahl = "A_1"
- Parkhaus.Stellplatzzähler(Parkhaus._anzahl)
- End Sub
- Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
- Schrankenzeiten()
- End Sub
- End Class
- Public Class Gebäude
- Public Enum Ampelsignal : Rot : Grün : End Enum
- Public Enum Standort : Einfahrt : Ausfahrt : End Enum
- Public Enum Schrankenstatus : geschlossen : offen : End Enum
- Public _neuOrt As Standort = Standort.Einfahrt
- Public _neuStatus As Schrankenstatus = Schrankenstatus.offen
- Public _Ort As String
- Public _Zeit As Integer = 0
- Public _Schrankenphasen() As Integer = {3000, 2000}
- Public _Zählerausfahrt As Integer = 0
- Public _Stellplätze As Integer
- 'Public varStellPlatz As Integer
- 'Public varStellPlatz2 As Integer
- Public _anzahl As String
- Public Sub Gesamtanzahl()
- _Zählerausfahrt = _Zählerausfahrt + 1
- End Sub
- Public Sub Stellplatzzähler(ByVal _anzahl As String)
- Select Case _anzahl
- Case "E_1"
- _Stellplätze = _Stellplätze - 1
- frm_main.AnzeigeZähler()
- If _Stellplätze = 0 Then : frm_main.Anzeigen(Ampelsignal.Rot) : Else : frm_main.Anzeigen(Ampelsignal.Grün) : End If
- Case "A_1"
- _Stellplätze = _Stellplätze + 1
- Gesamtanzahl()
- frm_main.AnzeigeZähler()
- End Select
- frm_main.Steurungsignalgeber()
- End Sub
- Public Sub Schrankensteuerung(ByVal ort As Standort, status As Schrankenstatus)
- Select Case ort
- Case Standort.Einfahrt
- Select Case status
- Case Schrankenstatus.offen
- 'tue etwas
- Case Schrankenstatus.geschlossen
- 'tue etwas
- End Select
- Case Standort.Ausfahrt
- Select Case status
- Case Schrankenstatus.offen
- 'tue etwas
- Case Schrankenstatus.geschlossen
- 'tue etwas
- End Select
- Case Else
- 'Für Ausnahmezustände
- End Select
- End Sub
- End Class
Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. 
