IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XCode Discussion :

Reprendre un applescript dans Xcode4


Sujet :

XCode

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2011
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Reprendre un applescript dans Xcode4
    Bonjour
    •*MON PROJET description :
    J'ai un applescript qui fonctionne bien. Ce script lit au travers d'un port USB du mac des données de sondes de températures extérieures au travers d'une carte ARDUINO.
    Le script capture ses données et les enregistre dans un fichier texte à destination d'une application domotique.
    Ceci fonctionne.

    Mon problème est que mon script n'a aucune interface. Il se lance automatiquement à l'allumage du mac, mais je dois faire "FORCER A QUITTER" pour qu'il s'interrompe.
    Je souhaite donc créer une interface (impossible avec applescript) pour :
    1 - créer un menu Quitter
    2 - récupérer les variables de mon script pour les afficher dans une fenêtre de visualisation . du type température de la chambre : (variable T_Chambre), température du bureau : (variable T_bureau) etc...)

    Questions :
    1 - Votre avis, est ce faisable
    2 - j'ai vu que depuis la version 3.2.6 xcode, le bouton applescript à disparu, et je n'arrive pas à l'installer sur Lion (malgré quelques tutos qui propose une bidouille que je n'arrive pas à mettre en place). Donc est ce possible de réaliser mon projet sous xcode4.



    J'ai pu voir que mon script fonctionne dans le contexte ci-dessous
    (Thermo SCRIPT V1.10 étant le nom de mon script)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
    {
    [NSApp activateIgnoringOtherApps:YES];
        
    NSString *path3 = [[NSBundle mainBundle] pathForResource:@"Thermo SCRIPT V1.10" ofType:@"scpt"];
    NSAppleScript *script3 = [[NSAppleScript alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path3] error:nil];
                [script3 executeAndReturnError:nil];
    }
    mais dans ce cas le script semble "encapsulé" et je n'arrive pas à extraire les valeurs des variables.

    Bref avant de poursuivre, j'ai besoin d'information d'ordre générale que je n'arrive pas à trouver sur le net (applescript et xcode4 c'est pauvre)

    Bon voilà, j'espère avoir été clair, dans le cas contraire dite le moi je formulerai autrement.


    Merci

  2. #2
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 602
    Points : 1 239
    Points
    1 239
    Par défaut Reprendre un applescript dans Xcode4
    Bonjour Macbidule,
    je suggère 2 pistes possibles pour résoudre ton problème :

    1) Pour xCode 4, il faudrait essayer dans le terminal la commande suivante pour activer l'utilisation de la programmation en script :

    defaults write com.apple.InterfaceBuilder3 IBEnableAppleScriptStudioSupport -bool YES

    Cette commande fonctionne sans problème depuis la version 3 de xCode et sur Leopard et Snow Leopard. Je n'ai pas essayer personnellement sur Lion / xcode 4, mais je me souviens avoir vu un site qui confirmait que cela fonctionnait encore. Il se peut que tu doives changer ... InterfaceBuileder3 en interfaceBuilder4. il suffit de vérifier quel fichier existe dans ta version.


    2) Il est peut être aussi possible d'éviter de passer par xCode. Je suis surpris que ton script ne se finisse pas correctement. En général, un script a un début et une fin, et peut donc se terminer (par exemple une fois les valeurs de température lues). Tu peux même le faire exécuter en tâche de fond à intervalles réguliers avec le CRON (voir application gratuite Cronnix).
    Par exemple, dans cette application une tâche crée avec les valeurs (minutes = "0-59/3", heures "07-23" , commande "osascript /users/Bibule/monscript.scpt > /dev/null" te permet de lancer toutes les heures, entre 7h et 23h, toutes les 3 minutes, le script monscript.scpt enregistré à la racine de l'utilisateur Bibule.

    Cordialement

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2011
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par PBELL Voir le message
    defaults write com.apple.InterfaceBuilder4 IBEnableAppleScriptStudioSupport -bool YES

    J'ai déjà vu ce bout d'instruction. je l'avais déjà essayé sans succès
    malgré tout, je viens de le réessayer à nouveau avec les deux cas que tu suggères com.apple.InterfaceBuilder3 et com.apple.InterfaceBuilder4.
    D'apparence rien n'a changer. En tous cas je n'ai pas vu dans 'Utilities' apparaitre un menu applescript.
    Peux tu me préciser que ce code devait faire cela. Tu as exécuté cette instruction avec quelle version xcode ?
    (Pour info je suis sous xcode 4.3.2)



    Citation Envoyé par PBELL Voir le message
    2) Il est peut être aussi possible d'éviter de passer par xCode. Je suis surpris que ton script ne se finisse pas correctement. En général, un script a un début et une fin, et peut donc se terminer (par exemple une fois les valeurs de température lues).
    En fait, je suis dans une boucle sans sortie avec "repeat while" / end repeat. (while étant inopérant, puisque je souhaite par défaut une exécution 24/24h). Je lis les températures toutes les minutes, d'un côté je trace des courbes, de l'autre une application domotique commande les radiateurs.

    A ce stade, mon script fonctionne comme je veux dans l' "EDITEUR APPLESCRIPT". Dans l'éditeur Applescript, j'ai un menu Quitter donc interrompre le script ne pose pas de problème, (ou encore voir les Log afficher les résultats me permet de contrôler si les sondes ne bug pas).
    Par contre, si je transforme mon script en application autonome, je n'ai plus de menu pour quitter, je ne peux pas contrôler si tout ce déroule normalement (j'ai pas d'affichage des T° ou d'affichage des erreurs).
    De même si souhaite redémarrer mon mac, la commande sera interrompue car elle ne pourra pas non plus quitter l'application .


    J'avais bien essayé de d'interrompre la boucle par l'appui d'une touche, mais l'appui devait attendre 60 secondes pour fonctionner (Ce n'est pas très élégant). J'ai essayé avec dialog display, dans ce cas je pouvais afficher les températures, mais je devais valider pour poursuivre. Bref en Applescript j'y arrive pas, ou j'ai pas trouvé.


    Citation Envoyé par PBELL Voir le message
    Tu peux même le faire exécuter en tâche de fond à intervalles réguliers avec le CRON (voir application gratuite Cronnix).
    Par exemple, dans cette application une tâche crée avec les valeurs (minutes = "0-59/3", heures "07-23" , commande "osascript /users/Bibule/monscript.scpt > /dev/null" te permet de lancer toutes les heures, entre 7h et 23h, toutes les 3 minutes, le script monscript.scpt enregistré à la racine de l'utilisateur Bibule.
    Je connais par Cronnix, je vais regarder. Mais dans ce cas, si je comprends bien, l'instruction lancera mon script toutes les trois minutes, comment je pourrais "quitter" l'exécution ou encore afficher dans une fenêtre mes résultats ?


    macbidule

  4. #4
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    J'ai un ancienne version qui a nécessité cette modification. Il s'agit de la 3.2.6.
    En fait, cela n'ajoute pas de menu script, mais cela ajoute les fonctions nécessaires dans InterfaceBuilder, pour lier les objets graphiques a des scripts.

    J'ai ainsi copié et utilisé des routines Applescript en leur ajoutant une interface utilisateur digne de ce nom.

    A+

Discussions similaires

  1. [AS][LOGICIEL] AppleScript dans FileMaker Pro 7
    Par kOrt3x dans le forum AppleScript
    Réponses: 2
    Dernier message: 09/04/2009, 03h11
  2. [A-00] Reprendre la date dans un nouvel enregistrement
    Par dstimide dans le forum VBA Access
    Réponses: 18
    Dernier message: 04/11/2008, 15h06
  3. [1.x] problème pour reprendre des données dans une DB
    Par phoelis1 dans le forum Symfony
    Réponses: 4
    Dernier message: 02/04/2008, 11h54
  4. Reprendre une date dans la barre d'adresse.
    Par kmayoyota dans le forum ASP
    Réponses: 32
    Dernier message: 03/09/2004, 08h46
  5. Reprendre une procedure dans une autre ?
    Par Poisson Rouge dans le forum Langage
    Réponses: 3
    Dernier message: 17/07/2002, 22h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo