Webcam mit Picturebox aktualisieren

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von VincentTB.

    Webcam mit Picturebox aktualisieren

    Hallo wollte mal fragen ob es ne andere Möglichkeit gibt als nen Timer ?

    Mache mir gerade ne Testanwendung um eine Webcam in einer Picturebox anzeigen zu lassen, und natürlich automatisch zu aktualisieren ;)

    Hier mal der Code:

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Private Sub PictureBox1_Load(sender As Object, e As EventArgs) Handles PictureBox1.Click
    4. PictureBox1.ImageLocation = "http://nue-webcam.s3.amazonaws.com/webcam-west.jpg"
    5. End Sub
    6. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    7. PictureBox1.ImageLocation = "http://nue-webcam.s3.amazonaws.com/webcam-west.jpg"
    8. End Sub
    9. Private Sub PictureBox2_Load(sender As Object, e As EventArgs) Handles PictureBox2.Click
    10. PictureBox2.ImageLocation = "http://nue-webcam.s3.amazonaws.com/webcam-north.jpg"
    11. End Sub
    12. Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
    13. PictureBox2.ImageLocation = "http://nue-webcam.s3.amazonaws.com/webcam-north.jpg"
    14. End Sub
    15. Private Sub PictureBox3_Click(sender As Object, e As EventArgs) Handles PictureBox3.Click
    16. PictureBox3.ImageLocation = "http://nue-webcam.s3.amazonaws.com/webcam-east.jpg"
    17. End Sub
    18. Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick
    19. PictureBox3.ImageLocation = "http://nue-webcam.s3.amazonaws.com/webcam-east.jpg"
    20. End Sub
    21. End Class



    Und Hier das Problem: das beim Starten die Aktualisierung nicht immer passt // bzw beim laufen des Programmes??

    Danke für Tipps und Anregungen :D
    Bilder
    • Unbenannt.PNG

      536,76 kB, 1.422×513, 176 mal angesehen
    • Unbenannt.PNG

      12,79 kB, 336×506, 137 mal angesehen
    :D Ein Programm sollte nicht nur Hand und Fuß, sondern auch Herz und Hirn haben. (Michael Anton) :D

    MFG Jörg ;)

    Muss jeder vermeintliche Programmierer ne Signatur haben ??
    Verstehe ich das richtig?
    Du willst alle 100ms jeweils 3 Bilder aus dem Internet herunter laden und darstellen?

    Hast Du Dir mal überlegt, was passiert, wenn der Download eines Bildes (warum auch immer) länger als 100ms dauert?
    Dann ist die TimerX_Tick Sub noch nicht beendet, aber es wird bereits die nächste TimerX_Tick Sub aufgerufen.

    Ich an Deiner Stelle würde nicht so häufig aktualisieren.
    Und mindestens - wie man das bei Mikrokontroller und Interrupts macht - während der TimerX_Tick Sub jeweils diesen Timer stoppen und nach Beendigung der Sub erst wieder starten! (Bzw. innerhalb der Sub, aber als letzten Befehl)

    Zudem kann es sein, dass das Bild von dem Web kurzzeitig nicht erreichbar ist (wenn es vom Webserver aktualisiert wird).
    Dann solltest Du das Control nicht updaten. Dann bleibt halt ein paar Sekunden das alte Bild noch stehen, bis es aktualisiert wird.

    Grüsse Veronesi
    Wenn Du Dir mal den Zeitstempel auf den Bildern anschaust, wirst Du feststellen, dass Du ohnehin nur alle 3-4 Sekunden ein neues Bild geliefert bekommst. Einen "Livestream", wie Du es Dir vielleicht vorstellen magst, bekommst Du nicht auf diese Art.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Jupp danke @Veronesi und @SpaceyX :D

    Welchen Wert würdet Ihr für den Timer nehmen ??

    Ich gehe davon aus das sich die Aktualisierung der Webcam und des Timers überschneiden ?

    Wie gesagt das ist eine Test-Anwendung ;) Soll mir nur das Wetter zeigen , da ich zu faul bin ausm Fenster zu schauen :D
    :D Ein Programm sollte nicht nur Hand und Fuß, sondern auch Herz und Hirn haben. (Michael Anton) :D

    MFG Jörg ;)

    Muss jeder vermeintliche Programmierer ne Signatur haben ??
    Also wenn nur das Wetter angezeigt werden soll, würde ich das nur ca alle 60 Sekunden updaten.
    Ich denke, dass sich das Wetter selten schneller verändert :)

    Damit "verbrauchst" Du dann auch nicht zu viel Bandbreite.

    Aber wie oft Du aktualisierst, bleibt Dir überlassen. Auf jeden Fall würde ich nicht unter 5 oder sogar 10 Sekunden gehen!

    Veronesi
    Wenn du so oft wie möglich aktualisieren willst, kannst du eine While-Schleife verwenden.
    Also dann sowas:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. EnableRefresh()
    3. End Sub
    4. Private Async Sub EnableRefresh()
    5. Using wc As New WebClient() With {.Proxy = Nothing}
    6. While True
    7. Using ms As New MemoryStream(Await wc.DownloadDataTaskAsync(New Uri("http://nue-webcam.s3.amazonaws.com/webcam-east.jpg")))
    8. PictureBox1.Image = Image.FromStream(ms)
    9. End Using
    10. End While
    11. End Using
    12. End Sub
    Mfg
    Vincent

    Ok das stimmt schon.

    Ist ja eh nur ne Spielerei :D

    Eigentlich reicht es aus das Teil alle 10 Minuten zu aktualisieren @ErfinderDesRades

    Aber ich habe jetzt schon mal viel gelernt was Timer betrifft, das war eig. der Sinn der Sache
    :D Ein Programm sollte nicht nur Hand und Fuß, sondern auch Herz und Hirn haben. (Michael Anton) :D

    MFG Jörg ;)

    Muss jeder vermeintliche Programmierer ne Signatur haben ??
    probier auch mal diesen:

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    2. PictureBox1.ImageLocation = "http://nue-webcam.s3.amazonaws.com/webcam-west.jpg"
    3. PictureBox2.ImageLocation = "http://nue-webcam.s3.amazonaws.com/webcam-north.jpg"
    4. PictureBox3.ImageLocation = "http://nue-webcam.s3.amazonaws.com/webcam-east.jpg"
    5. End Sub
    Die Frage des Themas lautet (zumindest des Startpostes nach), wie man es hin bekommt, dass das Bild sich so aktualisiert, dass es eine Art "Livestream" gibt. Mir ist durchaus bewusst, dass die Antwort dem TE in dem Fall nicht weiterhilft, aber es werden mit Sicherheit Leute über die Suchfunktion, auf die du @ErfinderDesRades auch immer verweißt, dieses Thema finden und vielleicht eine Antwort suchen, die auf die Problemstellung direkt bezogen ist. War eher zur Vervollständigung des ganzen.
    Mfg
    Vincent