Hallo liebe VB-ler,
ich würde gerne wissen, wie ich die Screenshots, die auf dem Client Computer gemacht werden, am besten mit einem bestimmten Protokoll sende (z. B. UDP oder TCP?).
Nun muss ich aber erst noch erklären, bevor ich die zweite Frage stellen kann:
Ich habe einen Raspberry Pi(Minicomputer, der programmierbare Aus-/Eingänge hat und meiner Meinung nach blöderweise zum ordnungsgemäßen Programmieren einen Bildschirm braucht). Diesen Raspberry möchte ich nun über ein eigens programmiertes Programm fernsteuern. Dazu gehört auch die Bildschirmübertragung. Deshalb hab ich es mir zur Aufgabe geamacht, dies sehr ausgefeilt und effizient zu programmieren, als zusätzliche Übung sozusagen. Ich bin also hergegeangen und habe den Bildschirm in eine frei definierbare Anzahl an gleichgroßen Teilen geteilt und überprüfe dann mittels Durchschnitt der ganzen Farbenwerte in jedem der Rechtecke, ob sich auf dem Bildschirm etwas ändert.
Ich führe die Abfrage in mehreren Threads aus, je nachdem, wie viele Bildschirmteile vorher als Wert übergeben wurden.
Nun zur zweiten Frage: Wie könnte man es am besten lösen, mit gegeben Werten, wie IP-Adresse des Servercomputers..., die Einzelbilder zu versenden?
Konkreter:
-Sollte ich mehrere Ports definieren, um eine bessere Leistung zu erziehlen, weil man schneller empfangen kann?
-Wie kann ich die empfangenen Teilbilder schnell (ohne SetPixel(GetPixel()) also) in die gegebene Fäche in ein Gesamtbild am Servercomputer einsetzen?
-Gibt es sonst noch weitere Methoden, die z.B. das Bild komprimieren, aber noch genug Schnelligkeit garantieren?
-noch Sachen, die ich beachten sollte?
Vielen Dank im vorraus schonmal für hilfreiche Antworten
Mit freundlichen Grüßen
Mario Geier
ich würde gerne wissen, wie ich die Screenshots, die auf dem Client Computer gemacht werden, am besten mit einem bestimmten Protokoll sende (z. B. UDP oder TCP?).
Nun muss ich aber erst noch erklären, bevor ich die zweite Frage stellen kann:
Ich habe einen Raspberry Pi(Minicomputer, der programmierbare Aus-/Eingänge hat und meiner Meinung nach blöderweise zum ordnungsgemäßen Programmieren einen Bildschirm braucht). Diesen Raspberry möchte ich nun über ein eigens programmiertes Programm fernsteuern. Dazu gehört auch die Bildschirmübertragung. Deshalb hab ich es mir zur Aufgabe geamacht, dies sehr ausgefeilt und effizient zu programmieren, als zusätzliche Übung sozusagen. Ich bin also hergegeangen und habe den Bildschirm in eine frei definierbare Anzahl an gleichgroßen Teilen geteilt und überprüfe dann mittels Durchschnitt der ganzen Farbenwerte in jedem der Rechtecke, ob sich auf dem Bildschirm etwas ändert.
VB.NET-Quellcode
- ' Bildschirm aufnehmen:
- Dim TileScreenShot = FromScreen(ScreenTileRect)
- ' Durchschnitt ausrechnen:
- Dim ScreenTileAverageImage = New Bitmap(TileScreenShot.Bitmap, New Size(1, 1))
- If Not ScreenTileAverageImage.GetPixel(0, 0) = LastScreenTileAverageImage.GetPixel(0, 0) Then
- LastScreenTileAverageImage = ScreenTileAverageImage
- ' Senden:
- ' . . . . . . . . ?
- End If
Ich führe die Abfrage in mehreren Threads aus, je nachdem, wie viele Bildschirmteile vorher als Wert übergeben wurden.
Nun zur zweiten Frage: Wie könnte man es am besten lösen, mit gegeben Werten, wie IP-Adresse des Servercomputers..., die Einzelbilder zu versenden?
Konkreter:
-Sollte ich mehrere Ports definieren, um eine bessere Leistung zu erziehlen, weil man schneller empfangen kann?
-Wie kann ich die empfangenen Teilbilder schnell (ohne SetPixel(GetPixel()) also) in die gegebene Fäche in ein Gesamtbild am Servercomputer einsetzen?
-Gibt es sonst noch weitere Methoden, die z.B. das Bild komprimieren, aber noch genug Schnelligkeit garantieren?
-noch Sachen, die ich beachten sollte?
Vielen Dank im vorraus schonmal für hilfreiche Antworten
Mit freundlichen Grüßen
Mario Geier
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „MarioGeier00“ ()