Question:
Détecter HDMI et démarrer l'interface graphique
Sören
2016-04-21 02:52:44 UTC
view on stackexchange narkive permalink

Nous construisons une application qui prend en charge un mode serveur et un mode GUI. Maintenant, le XServer et l'application devraient démarrer, si un câble HDMI est connecté, sinon il ne devrait exécuter que le serveur.

Alors, quelle est la meilleure façon de détecter HDMI? Lisez la résolution et si ce n'est pas la résolution HDMI par défaut, il est connecté? Mais cela ne serait pas possible si le PI avait déjà démarré, n'est-ce pas?

Il peut être plus simple de tester le niveau d'exécution à l'aide de la commande runlevel. si l'exécution au niveau d'exécution 5 impliquerait une configuration prise en charge par l'interface graphique. Ensuite, vous pouvez lancer l'interface graphique dans le cadre du démarrage de l'interface graphique.
@SteveRobillard La vérification du niveau d'exécution serait A) Déprécié, B) Pas nécessairement indiquant si X est en cours d'exécution. Je n'ai pas vérifié, mais je parierais que ce qui se passe avec un système GUI sans écran attaché est X démarre, ne trouve pas d'affichage et sort. Cependant, le niveau d'exécution (ou l'équivalent non amorti) resterait toujours le même, donc si vous vouliez un système qui pourrait être configuré pour utiliser une interface graphique lorsqu'elle est disponible, ce n'est pas un test utile ...
... Vous pouvez certainement obtenir des informations détaillées à partir de la sortie du serveur X - cependant, en fait, la sortie de `systemctl status ______` serait probablement la chose la plus simple et la plus décisive à analyser ici. Il y a probablement une API python: P Et pour interroger le serveur X pour les affichages et la résolution (voir aussi `man xargs`).
Deux réponses:
Jacobm001
2016-04-21 03:46:30 UTC
view on stackexchange narkive permalink

Il existe un utilitaire de ligne de commande, tvservice intégré à Raspbian qui vous indiquera l'état du HDMI.

Pour détecter l'état complet, vous pouvez utiliser la commande: tvservice -s . Sur mon RPi, ceci affiche actuellement:

  état 0x40001 [NTSC 4: 3], 720x480 @ 60.00Hz, entrelacé  

Les états (que j'ai rassemblés) sont les suivants:

  • 0x40001 Non initialisé et le câble HDMI est déconnecté
  • 0x40002 Non initialisé mais HDMI le câble est connecté
  • 0x120002 Mode veille
  • 0x120005 HDMI déconnecté
  • 0x120016 Actif

Si vous êtes moins intéressé par les détails supplémentaires, tvservice -n peut être un peu plus simple à analyser. Il donne le nom actuel de l'appareil connecté. Exemple:

  [E] Aucun appareil présent  

De plus, si la connectivité est tactile et continue, vous pouvez trouver le code -M > drapeau utile. Il surveille les événements liés au port HDMI.

Sources :

Modifier:

Comme Ghanima l'a souligné dans les commentaires, tvservice est également disponible dans Arch sous / opt / vc / bin / tvservice .

Sur une note latérale, ce n'est pas seulement disponible un Raspbian. Arch l'a fait, il se trouve dans `/ opt / vc / bin / tvservice` et fait partie du package * raspberrypi-firmware-tools * qui est installé par défaut.
Schorschi
2019-06-02 04:05:52 UTC
view on stackexchange narkive permalink

La commande tvservice ne détecte pas systématiquement le moment où HDMI est déconnecté. Disons que vous démarrez le Pi avec HDMI, puis déconnectez manuellement le câble HDMI. La commande tvservice signalera toujours que le périphérique HDMI est connecté, en ce sens que les commandes -n, -s, etc. signalent toujours le dernier moniteur précédemment connecté via HDMI.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...