Timer starten, der pro Sekunde bestimmten Wert anzeigt

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Artentus.

    Timer starten, der pro Sekunde bestimmten Wert anzeigt

    Guten Abend liebe Community.

    Im Rahmen eines Vortrages für mein Studium benötige ich Eure Hilfe. Ich möchte einen Timer in VB programmieren, der bei Klick auf einen Button eine Uhr startet, die die Sekunden, Minuten und Stunden anzeigt und pro Sekunde zusätzlich einen bestimmten Wert anzeigt.
    Der Hintergrund:
    Die Präsentation wird über einen Hersteller von Spirituosen sein. Durch Recherche im Internet ist mir eine faszinierende Statistik aufgefallen:
    Im Jahre 2011 wurden von nur einem Produkt des Herstellers in 24 Stunden 6 Millionen Drinks auf der ganzen Welt geordert.
    Da das ganze "nur zur Veranschaulichung" dienen soll, habe ich zur Vereinfachung folgende Überlegung/Rechnung aufgestellt:
    Ich gehe davon aus, dass die Getränke im konstanten Intervall geordert wurden, sprich 6 Millionen in 24 Stunden (1440 Min).
    Das wären aufgerundet 4176 Getränke pro Minute und aufgerundet 70 Drinks in der Sekunde.

    Der Timer sollte bei Klick auf den Button "Start" also die Uhrzeit anzeigen und in einer weiteren Anzeige pro Sekunde immer 70 "Getränke" mehr. Da ich in VB leider noch ein ziemlicher Anfänger bin, würde ich mich sehr über einige Tipps oder Codes freuen, es würde mir sehr weiterhelfen. :)

    Edge
    Es gibt bereits einen fertigen Timer, du findest ihn im Werkzeugkasten und kannst ihn einfach auf deine Form ziehen. Wenn du das Interval auf 1000 stellst tickt er einmal pro Sekunde. Dann brauchst du nur noch auf eine Variable 70 draufzählen und auf eine TimeSpan-Instanz 1 Sekunde.

    @Edge87
    Das ist der Werkzeugkasten:


    Und bitte:

    Signatur schrieb:

    Bitte stellt keine Hilfeanfragen über PN, dafür ist das Forum da.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Artentus“ ()

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim stpWatch As Stopwatch = New Stopwatch
    4. Dim zeit As String
    5. 'Form1 Start
    6. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    7. ComboBox1.Text = "00:00:05"
    8. End Sub
    9. 'Start
    10. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    11. Timer1.Enabled = True
    12. stpWatch.Start()
    13. End Sub
    14. 'Stop
    15. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    16. stpWatch.Stop()
    17. stpWatch.Reset()
    18. End Sub
    19. 'Timer
    20. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    21. If TextBox1.Text = ComboBox1.Text Then ' Wann es passieren soll mit IF abfragen
    22. stpWatch.Stop()
    23. Timer1.Enabled = False
    24. MsgBox("BOOM", MsgBoxStyle.Information, "Deine Funktion !") 'Was geschehen soll hier !
    25. End If
    26. 'Zeit splitten wenn nötig - (( Beispiel )) !
    27. zeit = stpWatch.Elapsed.ToString
    28. TextBox1.Text = zeit.Split(CChar("."))(0)
    29. Label1.Text = zeit.Split(CChar(":"))(0)
    30. Label2.Text = zeit.Split(CChar(":"))(1)
    31. Label3.Text = zeit.Split(CChar(":"))(2).Split(CChar("."))(0)
    32. End Sub
    33. End Class


    Testmappe in vb 2012 :

    www69.zippyshare.com/v/41156645/file.html

    Timer mit Funktion !

    LG Andre............................................................... ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TVX“ ()

    Ich habe nun folgendes versucht und wenn ich in beide Felder eine 0 eingebe, startet er bei den Sekunden. Leider geht er über die 60 hinaus und startet nicht wieder bei 0 für die nächste Minute. Wie kann ich das ändern?


    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Timer1.Start() Timer2.Start() If TextBox1.Text >= 11 Then TextBox1.Text = 10 End If If TextBox2.Text >= 61 Then TextBox2.Text = 60 End If End Sub
    3. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    4. End Sub
    5. Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
    6. End Sub
    7. Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick TextBox2.Text = TextBox2.Text + 1 If TextBox2.Text = 0 Then Timer2.Stop() End If
    8. End Sub
    9. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick TextBox1.Text = TextBox1.Text + 1 If TextBox1.Text = 0 Then Timer1.Stop()
    10. End If End SubEnd Class



    Edge
    Was ist das ist mein Beisbiel nix für dich ?

    EDIT WARTE'

    Du Brauchst einen Timer

    2x Button 1-2

    Eine Textbox

    UND DAS IN DIE FORM :

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim stpWatch As Stopwatch = New Stopwatch
    3. Dim zeit As String
    4. 'start
    5. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    6. Timer1.Enabled = True
    7. stpWatch.Start()
    8. End Sub
    9. 'stop
    10. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    11. stpWatch.Stop()
    12. stpWatch.Reset()
    13. Timer1.Enabled = False
    14. TextBox1.Text = "00:00:00"
    15. End Sub
    16. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    17. zeit = stpWatch.Elapsed.ToString
    18. TextBox1.Text = zeit.Split(CChar("."))(0)
    19. End Sub
    20. End Class

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „TVX“ ()

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private _drinksPerSecond As Integer = 70
    3. Private _totalDrinks As Integer = 0
    4. Private WithEvents _t As New Timer With {.Interval = 1000}
    5. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    6. _t.Enabled = Not _t.Enabled
    7. End Sub
    8. Private Sub _t_Tick(sender As Object, e As EventArgs) Handles _t.Tick
    9. _totalDrinks += _drinksPerSecond
    10. Label1.Text = Now.ToLongTimeString()
    11. Label2.Text = _totalDrinks.ToString("N0") & " drinks serviert"
    12. End Sub
    13. End Class


    Probier mal so. Das ist wesentlich einfacher.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    @kai996:, @TVX: Hier bedarf es keiner Zeitmessung, sondern das ganze ist eine Veranschaulichung, sozusagen eine Skizze, nicht aber eine Maßzeichnung.
    @Edge87: Ein schnöder WinForm-Timer und eine gerundete Zahl zur Anzeige reichen völlig aus, Dein Problem zu lösen.
    Stecke da keinen Aufwand rein, nimm es als Lockerungsübung.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Moyn Rod... Also nu Uhr Und en Timer mit counter ......


    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim counter As Integer
    4. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    5. Timer1.Enabled = True
    6. End Sub
    7. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    8. Label1.Text = CStr(TimeOfDay)
    9. counter = counter + 70
    10. Label2.Text = CStr(counter)
    11. End Sub
    12. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TVX“ ()

    @TVX: Wenn Du jetzt noch

    VB.NET-Quellcode

    1. Timer1.Enabled = Not Timer1.Enabled
    2. counter = 0
    in die Button-Click-Routine reinschreibst und ToString verwendest, kann das der Anfang eines hübschen Programms werden. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    So Muss los ^^

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim counter As Integer
    4. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    5. Timer1.Interval = CInt("1000")
    6. Timer1.Enabled = Not Timer1.Enabled
    7. counter = 0
    8. End Sub
    9. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    10. Label1.Text = CStr(TimeOfDay)
    11. counter = counter + 70 ' 70 pro sec.
    12. Label2.Text = CStr(counter)
    13. End Sub
    14. End Class


    Edit :Timer auf 1000 stellen .

    :thumbsup:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „TVX“ ()