Beamertool /Lasersim für Raspberry Pi- Entwicker Thread

  • Hallo,

    Ich bin zur Zeit dabei, für das Beamertool auf dem Pi um einen externen Shutter welcher über einen Servo angesteuert wird, zu programmieren.

    Ich würde gerne ein Automatikmodus implementieren, dazu bräuchte ich aus dem Code die Info das auf dem Bildschirm nichts angezeigt wird.

    Kann mir einer der Entwickler einen Hinweis geben wo ich diese Info suchen kann bzw. finde?:glaskugel:

    Schon mal vielen Dank und Grüße aus dem Nahetal

    JoEn

  • Was verstehst du denn unter "nichts angezeigt"?

    Schwarzer Bildschirm oder kein Input über DMX/ArtNet?

    Den Bildschirm direkt zu prüfen ist gar nicht so einfach, bzw, wäre möglich aber ist extrem teuer was die performance angeht. Es kann halt ggf. vorkommen, dass nichts angezeigt wird weil z.B. bewusst über ArtNet die Größe eines Bildes auf 0 gesetzt, etc. Kein Input wäre ggf einfacher abzufragen, aber müsste man einbauen. Eine Stelle wo man das direkt schon abfragen könnte gibt es vermutlich noch nicht.

    Viele Grüße

    Moritz

  • Ok, schwarzer Bildschirm wird schwer, weil ich an keiner Stelle wirklich abfragen kann was man sieht, das fertige Bild zu prüfen geht wie wie gesagt aus Performance-Gründen nicht praktikabel. Da müsste man das Bild von der GPU in den RAM kopieren und jedes Pixel prüfen.

    Und ob gerade Inhalt gezeichnet wird oder nicht hängt ja generell sehr von der Art des Inhalts ab, z.B. könnte ja eine Textur zur Hälfte schwarz sein, und dann gleichzeitig wird die Position so verschoben, dass der eigentliche Inhalt nicht zu sehen ist. Beim zeichnen kann ich dann nie wirklich wissen ob gerade der Bildschirm schwarz ist oder doch nicht.

    Auch im ArtNet Receiver wird auf 0 Prüfen nicht unbedingt helfen, gerade die Position hat ja einen default von "127". Wenn dann müsste man vermutlich mit einem Timer arbeiten und schauen ob denn überhaupt Pakete in den letzten X Sekunden gekommen sind und sonst annehmen, dass keine Verbindung besteht.

  • Hi!

    Klingt gut. Aber nur so als totale Spaßbremse:

    Man könnte potentiell ein tiefer liegendes Layer durch ein Höherliegendes mit einer schwarzen Grafik teilweise überdecken. Blendet man dann die schwarze Grafik nicht aus dann hast Du ein "nicht sichtbares" Event, dass den Shutter trotz Schwarzbild nicht schließen würde.... :D

    Ja, ich weiß, wer macht denn sowas. ;) Aber ich kenn das aus dem Grafikbereich, da wird mit solchen Mitteln gerne mal gepfuscht und dann wundert man sich wenn man irgendwo einen weißen Hintergrund entfernen will und weiße Balken auftauchen die "nur was verdecken".

    Anwender können ja so unglaublich kreativ sein, das glaubste nicht. 8)

    Hoc

    Mein Equipment:
    1x Hirn | 2x Augen (leicht defekt) |2x Ohren | 1x Mund |32x Zahn (zum Teil V1.5) | 1x Handundfuß-Interface
    *SCNR*

  • Hallo,

    Ich bin auf der Suche nach einer Timer Funktion in C++ bei der ich den Start definieren kann und "eine Rückmeldung" bekomme wenn er fertig ist.

    Ich bin noch nicht so C++ sicher wie ich es gerne wäre.

    Ich möchte für eine Funktion ein Automatik Modus implementieren.

    Liebe Grüße JoEn

  • Kannst du mal etwas genauer beschreiben was du gerne tun möchtest? Das klingt eventuell nach einer sehr komplizierteren Aufgabe, je nachdem was du tun willst. Ein einfaches Asyncrones setTimeout() wie z.B. in JavaScript gibt es in C++ nicht. Vorschläge sind z.B. hier: https://stackoverflow.com/questions/2485…ettimeout-for-c

    Aber ich glaube fast ohne richtiges Multithreading wirst du hier nicht wirklich weiterkommen. Selbst mit einem zusammengebastelten setTimrout Ersatz musst du je nachdem was genau du tun willst aufpassen was in wechem Thread passiert, gerade im zusammenspiel mit OpenGL kann da potentiel viel schiefgehen.

    Ich denke wenn du mal etwas abstrakter beschreibst was du tun möchtest oder passieren soll gibt es eventuell eine Lösung die besser zu C++ passt.

  • Newly created posts will remain inaccessible for others until approved by a moderator. The last reply was more than 365 days ago, this thread is most likely obsolete. It is recommended to create a new thread instead.