Wir erstellen eine Anwendung, die einen Servermodus und einen GUI-Modus unterstützt. Jetzt sollten der XServer und die Anwendung gestartet werden. Wenn ein HDMI-Kabel angeschlossen ist, sollte sonst nur der Server ausgeführt werden.
Was ist der beste Weg, um HDMI zu erkennen? Lesen Sie die Auflösung und wenn es nicht die Standard-HDMI-Auflösung ist, ist es angeschlossen? Aber das wäre nicht möglich, wenn der PI bereits gebootet hätte, nicht wahr?
systemctl status ______
wahrscheinlich die einfachste und entscheidendste Sache, die hier analysiert werden kann. Wahrscheinlich gibt es eine Python-API: P Und um den X-Server nach Anzeigen und Auflösung abzufragen (siehe auchman xargs
).Antworten:
tvservice
In Raspbian ist ein Befehlszeilenprogramm integriert, das den Status des HDMI anzeigt.Um den vollständigen Status zu ermitteln, können Sie den folgenden Befehl verwenden :
tvservice -s
. Auf meinem RPi wird derzeit Folgendes ausgegeben:Die Zustände (die ich gesammelt habe) sind wie folgt:
0x40001
Nicht initialisiert und das HDMI-Kabel ist nicht angeschlossen0x40002
Nicht initialisiert, aber HDMI-Kabel angeschlossen0x120002
Standby Modus0x120005
HDMI getrennt0x120016
AktivWenn Sie weniger an den zusätzlichen Details interessiert sind, ist das
tvservice -n
Parsen möglicherweise etwas einfacher. Es gibt den aktuellen Namen des angeschlossenen Geräts an. Beispiel:Wenn die Konnektivität berührungslos ist, ist das
-M
Flag möglicherweise hilfreich. Es überwacht Ereignisse, die den HDMI-Anschluss betreffen.Quellen :
Bearbeiten:
Wie Ghanima in den Kommentaren betonte, ist tvservice auch in Arch unter verfügbar
/opt/vc/bin/tvservice
.quelle
/opt/vc/bin/tvservice
und kommt als Teil des raspberrypi-firmware-tools- Pakets, das standardmäßig installiert ist.Der Befehl tvservice erkennt nicht konsistent, wenn HDMI getrennt wird. Angenommen, Sie starten den Pi mit HDMI und ziehen dann das HDMI-Kabel manuell ab. Der Befehl tvservice meldet weiterhin, dass ein HDMI-Gerät angeschlossen ist. In den Befehlen -n, -s usw. wird weiterhin der zuletzt angeschlossene Monitor über HDMI gemeldet.
quelle