So arbeite ich mit einer Kamera, die über ein Ethernet-Kabel mit dem Computer verbunden ist und anscheinend als tcp/ip stream-Socket zugegriffen werden muss.Wie kann sichergestellt werden, dass die neuesten Daten von einem TCP/IP-Socket abgerufen werden?
Grundsätzlich möchte ich so etwas wie eine Aufnahme alle 1 Sekunde machen. Ich bemerkte jedoch, dass die Eingabedaten von der Kamera immer wieder hereinkamen, während ich nur die neuesten Daten von der Kamera holen wollte und nichts anderes, d. H. Nur das aktuellste Bild zu dieser Zeit.
Was ich bisher gelesen habe, ist, dass ich die Eingabedaten mehrmals lesen muss, bis ich die 'aktuellsten Daten' erreiche. Ist das wirklich der einzige Weg dies zu tun? Ich mag es wirklich nicht, dass ein Prozess die ganze Zeit beschäftigt ist, nur um die eingehenden Daten aus dem Stream-Socket zu "werfen".
Kann ich theoretisch nicht die Eingangspuffergröße für die Eingabe vom Socket verringern, so dass ich nur ein Bild mit Daten empfangen kann? Und dann wären alle weiteren eingehenden Daten einfach verschwendet. Wenn der Eingabepuffer einmal geleert wird, wird er mit den neuesten Daten oder etwas ähnlichem gefüllt. (Ich meine, es muss eine Grenze geben, wie viele Eingangsdaten aus dem Stream sich anhäufen können, wenn sie darauf warten, verarbeitet/gelesen zu werden, richtig? Was passiert, wenn dieses Limit erreicht wird? Werden die weiteren Daten weggeworfen oder ist das? 'Puffer' mit den neuen Daten überschrieben?)
Ist das überhaupt möglich? Ich bin ein absoluter Anfänger, also theoretisiere ich nur. Wenn so etwas möglich ist, kann irgendjemand die Umrisse zeigen, wie man das programmiert? (Ich muss die Boost Asio-Bibliothek auf Ubuntu für dieses Zeug verwenden) Das wäre sehr hilfreich!
Hm, ok. Ist es dann möglich, dieses UDP-Protokoll für eine Ethernet-Verbindung zu verwenden? So etwas wie UDP/IP? (Ich weiß nur, dass das Kamera-Gerät eine feste IP hat und damit verbunden werden muss) – kushy
Sie müssen das technische Referenzhandbuch der Kamera konsultieren. Wenn die Kamera einen UDP-Stream unterstützt, brauchst du meine Erlaubnis nicht, sie zu benutzen. –
Ich habe es im Handbuch nachgeschlagen und es listet nur 'tcp/ip stream' in der Liste der möglichen Protokolle auf :-(Ich denke, dann muss ich einen zusätzlichen Thread einrichten, um die eingehenden Daten einzufangen und wegzuwerfen Ich kann mir nicht helfen, denke ich. Wie auch immer, danke für Ihre Hilfe! – kushy