[RESOLU] Projet mini automate de contrôle
Modérateur : Francois
- dbrion0606
- Raspinaute
- Messages : 164
- Enregistré le : ven. 30 janv. 2015 15:51
Re: Projet mini automate de contrôle
Avez vous réellement besoin de faire deux tâches (surtout si la première a por objet d'attendre qu'un interrupteur de validation/demarrage soit activé, ce qui peut être traité par une boucle classique?)
Re: Projet mini automate de contrôle
Ce que je ne souhaite pas c'est qu'au démarrage le script se lance directement sans action de l'utilisateur.
C'est bien le commutateur qui donnera l'autorisation de lancer le script.
J'ai réussi à faire exécuter mon second script si je lance le premier sous Python 2.7 mais il faut que je soit déjà dans un shell sinon je ne vois rien à l'écran. En contre partie si mon second script s'exécute sous 2.7 il y a des erreurs comme je l'ai fait sous 3.2 (notamment le os.system("clear") ne fonctionne plus)
Lorsque j'ai testé sous 2.7 j'ai utilisé : tout simplement. Sous 3.2 rien ne fonctionne (exec(), execl() )
Edit : Dernière petite chose avant d'aller manger
Si je lance manuellement LXTerminal et que je tape "python tachedefond.py" celle ci s'execute bien. Je passe le commut à 1 et j'ai bien mon second script qui fonctionne parfaitement.
C'est bien le commutateur qui donnera l'autorisation de lancer le script.
J'ai réussi à faire exécuter mon second script si je lance le premier sous Python 2.7 mais il faut que je soit déjà dans un shell sinon je ne vois rien à l'écran. En contre partie si mon second script s'exécute sous 2.7 il y a des erreurs comme je l'ai fait sous 3.2 (notamment le os.system("clear") ne fonctionne plus)
Lorsque j'ai testé sous 2.7 j'ai utilisé :
Code : Tout sélectionner
execfile("smarteole.py")
Edit : Dernière petite chose avant d'aller manger
Si je lance manuellement LXTerminal et que je tape "python tachedefond.py" celle ci s'execute bien. Je passe le commut à 1 et j'ai bien mon second script qui fonctionne parfaitement.
Re: Projet mini automate de contrôle
ça avance un peu, j'ai inclus mon second script dans un .desktop
Quand je double clic sur ce .desktop il m'ouvre un terminal vierge avec mon script qui s'execute comme je le souhaite.
Il me reste à executer ce .desktop depuis ma tache de fond car il me renvoi une erreur de syntaxe, la tache de fond ouvre le .desktop comme un script python et donc dès la première ligne trouve des erreurs sur le [Desktop Entry]
Quand je double clic sur ce .desktop il m'ouvre un terminal vierge avec mon script qui s'execute comme je le souhaite.
Il me reste à executer ce .desktop depuis ma tache de fond car il me renvoi une erreur de syntaxe, la tache de fond ouvre le .desktop comme un script python et donc dès la première ligne trouve des erreurs sur le [Desktop Entry]
- dbrion0606
- Raspinaute
- Messages : 164
- Enregistré le : ven. 30 janv. 2015 15:51
Re: Projet mini automate de contrôle
Mais que se passerait-il si votre second script attendait que le bouton de la carte soit allumé
(tâche dévolue au premier script, si j'ai bien compris :
cela équivaut à rajouter 2 ou 3 lignes de python en tête (après chargement des libraries, quand même) du second script; je suppose que cela impliquerait que le bureau soit démarré et qu'on active un terminal dédié avant d'appuyer sur le bouton, mais tous vos problèmes de lancement de tâches deviendraient caducs)?
(tâche dévolue au premier script, si j'ai bien compris :
cela équivaut à rajouter 2 ou 3 lignes de python en tête (après chargement des libraries, quand même) du second script; je suppose que cela impliquerait que le bureau soit démarré et qu'on active un terminal dédié avant d'appuyer sur le bouton, mais tous vos problèmes de lancement de tâches deviendraient caducs)?
Re: Projet mini automate de contrôle
Le souci c'est que l'utilisateur n'aura que le commutateur à disposition, sinon si il faut une souris etc on perd le principe d'automate autonome qu'on cherche à faire pour aller sur le terraindbrion0606 a écrit :Mais que se passerait-il si votre second script attendait que le bouton de la carte soit allumé
(tâche dévolue au premier script, si j'ai bien compris :
cela équivaut à rajouter 2 ou 3 lignes de python en tête (après chargement des libraries, quand même) du second script; je suppose que cela impliquerait que le bureau soit démarré et qu'on active un terminal dédié avant d'appuyer sur le bouton, mais tous vos problèmes de lancement de tâches deviendraient caducs)?
- dbrion0606
- Raspinaute
- Messages : 164
- Enregistré le : ven. 30 janv. 2015 15:51
Re: Projet mini automate de contrôle
Si j'ai bien compris, vous avez un script interactif qui scrute à l'infini les entrées, éventuellement pilote des sorties, et affiche dans un terminal LXDE le résultat (en fait, sur la sortie standard) . Il est activé par un clic de souris.
Si vous n'avez pas de mulot, vous souhaitez un script non interactif qui scrute à l'infini les entrées, éventuellement pilote des sorties, et affiche quelque part les données (ceci peut être .. nulle part, par redirection). Il s'active par appui sur un bouton....
Si vous n'avez pas de mulot, vous souhaitez un script non interactif qui scrute à l'infini les entrées, éventuellement pilote des sorties, et affiche quelque part les données (ceci peut être .. nulle part, par redirection). Il s'active par appui sur un bouton....
Re: Projet mini automate de contrôle
ça se présente comme sur cette image
L'utilisateur voit l'écran mais ne peut interagir qu'avec le commutateur ON/OFF (non présent sur la photo)
Il branche la prise, le RPi se lance et arrive sur le bureau. Là si l'utilisateur met le commutateur sur ON le script de fond doit lancer mon .desktop (le .desktop fonctionne en double clic et lance mon second script dans un terminal afin d'afficher les infos à l'écran)
La détection par le script de fond fonctionne, le second script fonctionne également. Il ne me manque que la liaison entre les 2. Que le script de fond exécute le .desktop comme si on double cliqué dessus
Mais jusqu'à maintenant il va le chercher mais l'ouvre comme un .py et essaye de le déchiffrer ce qui occasionne des erreurs puisque .desktop demande juste à être exécuter et non lu
L'utilisateur voit l'écran mais ne peut interagir qu'avec le commutateur ON/OFF (non présent sur la photo)
Il branche la prise, le RPi se lance et arrive sur le bureau. Là si l'utilisateur met le commutateur sur ON le script de fond doit lancer mon .desktop (le .desktop fonctionne en double clic et lance mon second script dans un terminal afin d'afficher les infos à l'écran)
La détection par le script de fond fonctionne, le second script fonctionne également. Il ne me manque que la liaison entre les 2. Que le script de fond exécute le .desktop comme si on double cliqué dessus
Mais jusqu'à maintenant il va le chercher mais l'ouvre comme un .py et essaye de le déchiffrer ce qui occasionne des erreurs puisque .desktop demande juste à être exécuter et non lu
- dbrion0606
- Raspinaute
- Messages : 164
- Enregistré le : ven. 30 janv. 2015 15:51
Re: Projet mini automate de contrôle
J'ai l'impression que LXDE a un autostart (on peut lancer une -liste d' - application/s au démarrage du bureau=) cf http://pclosmag.com/html/issues/201009/page10.html. Si votre script de fond lance le bureau, et si cet autostart fonctionne, vous pouvez avoir la tâche d'affichage qui s'éxécutera au lancement du bureau.....
Re: Projet mini automate de contrôle
On peut executer des appli ou script au démarrage. Mon script qui tourne en tache de fond fonctionne ainsi.
Je ne souhaite pas que l'affichage du second script démarre tout seul, il doit bien attendre l'action de l'utilisateurSi votre script de fond lance le bureau, et si cet autostart fonctionne, vous pouvez avoir la tâche d'affichage qui s'éxécutera au lancement du bureau.....
- dbrion0606
- Raspinaute
- Messages : 164
- Enregistré le : ven. 30 janv. 2015 15:51
Re: Projet mini automate de contrôle
Avez vous reellement besoin de deux scripts -qui peuvent accèder aux mêmes périphériques, ce qui est parfois mal vu) :
si la tâche d'affichage attend que vous appuyez sur un bouton pour ... afficher (par une scrutation écrite en deux lignes : "tant que le bouton n'est pas appuyé, dormir une fraction de seconde") , elle sera la seule à faire ce que vous voulez....
Autre "solution" -à mon sens, mais peut être que je ne comprends pas- : si la scrutation du bouton a pour seul et unique but de lancer le bureau, et de donner la main à la tâche d'affichage (après lancement du bureau, la tâche de fond se tue et "on" s'arrange pour que la période de concurrence soit la plus courte possible), à la fin, vous serez dans la configuration que vous voulez
si la tâche d'affichage attend que vous appuyez sur un bouton pour ... afficher (par une scrutation écrite en deux lignes : "tant que le bouton n'est pas appuyé, dormir une fraction de seconde") , elle sera la seule à faire ce que vous voulez....
Autre "solution" -à mon sens, mais peut être que je ne comprends pas- : si la scrutation du bouton a pour seul et unique but de lancer le bureau, et de donner la main à la tâche d'affichage (après lancement du bureau, la tâche de fond se tue et "on" s'arrange pour que la période de concurrence soit la plus courte possible), à la fin, vous serez dans la configuration que vous voulez