SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N G G R O U P W W W. S T E M M E R - I M A G I N G - G R O U P. C O M G E R M A N Y U N I T E D K I N G D O M F R A N C E S W I T Z E R L A N D STEMMER IMAGING GmbH FIRSTSIGHT VISION Ltd. IMASYS S.A.S. STEMMER IMAGING Schweiz AG Phone: +49 89 80902-0 Phone: +44 1252 780000 Phone: +33 1 45069560 Phone: +41 55 4159090 www.stemmer-imaging.de www.firstsightvision.co.uk www.imasys.fr www.stemmer-imaging.ch
Sommaire 1. Intégrer un script... 3 2. Contenu d'un script... 4 2.1. Les objets de base.... 4 2.2. Calculs.... 4 2.3. Les chaines de caractères..... 4 2.4. Accès fichiers.... 4 2.5. Une classe un objet (utilisateur)... 4 2.6. Les exceptions (try catch)... 4 2.7. Les tableaux (Array)... 4 3. Contact et commentaires... 8 Important : ce document ne remplace pas la documentation très complète sur Javascript, fournie à l'installation de Sherlock P SIG_ApplicationNote_JavaScript_010409_FR.doc Page 2 of 8
1. Intégrer un script Il suffit de cliquer simplement sur l'icône feuille présent dans la toolbar Program. Bouton script Double click sur l'item script pour ouvrir la feuille l'éditeur Java script d'ipd. Grille contenant vos variables utilisables dans votre script. Sélectionner la variable et la glisser dans la feuille : MaVarA par exemple. Grille contenant les objets disponible. En sélectionner un et le glisser dans la feuille. En tapant un point '.', l'éditeur vous propose les méthodes ou propriétés attaché à cet objet (Intellisense) Ex : Sherlock.Reporter("Mon message"); Check syntax : donne la ou les lignes ayant une erreur de syntaxe. A corriger. Run : exécute en local votre script (Votre investigation n'est pas exécutée). Attention l'investigation est stoppée, les variables modifiées par votre script ne sont pas mises à jour en temps réel. Il n'y a aucun message qui indique que votre script est en cours d'exécution, hormis vos messages vers le reporter ou le monitor (ex dans le cas d'une boucle). Stop : arrête l'exécution de votre script. N'a aucune action si votre script est "planté", le seul moyen de le stopper est le gestionnaire de taches en détruisant le processus IpeStudio. Evidemment vous perdez tout ce qui n'a pas été sauvegardé. P SIG_ApplicationNote_JavaScript_010409_FR.doc Page 3 of 8
2. Contenu d'un script Quelques exemples d'utilisation d'un script Java dans une investigation Sherlock. Il s'agit de principe couramment mise en œuvre dans un script Java. Ce qu'il faut savoir : - Les variables sont dynamiques sous Javascript. Pas de typage et de déclaration à réaliser. En Javascript 1 et 0 sont des nombres, TRUE et FALSE sont des booléens. - Un script ne peut accéder qu'aux variables (pas aux readings). - Un script ne peut pas interagir directement avec votre investigation, par exemple appeler une sous routine. La seule méthode pour interagir est de modifier les variables. - Un fichier ouvert directement dans votre investigation n'est alors pas utilisable par votre script via les objets System (et vice versa). Particularité de Sherlock, dans certains cas les erreurs corrigées restent mémorisées par Sherlock même après correction. Dans ce cas sauvegarder votre investigation, quitter et redémarrer Sherlock. 2.1. Les objets de base (statiques). Appelés aussi Predefined items, ils apparaissent dans la grille en bas à droite. Le principe d'utilisation est le même pour tous, glisser un item et taper un point '.'. Une liste apparaît dans laquelle vous pouvez choisir la méthode ou propriété. Valider votre choix par Entrée. Sherlock : méthodes permettant seulement d'envoyer des messages vers le reporter, le monitor et le log debug. Vars : accède à vos variables. Toutes vos variables sont la fenêtre intellisense. DigIn et DignOut : accède aux fonctionnalités pilotant les entrées sorties disponibles. Les fonctionnalités sont identiques à celles offertes par les instructions IO:Digital Input Output. System : méthodes pour les accès fichiers, gestion répertoire et la méthode Sleep(ms). Numbers : fourni des constantes numériques, pratique pour les initialisations de recherche de grandeurs. Math : opérateurs mathématiques : trigonométrie, logarithme, arrondi, carré, etc. If do while : opérateurs d'exécution de votre script. Réalisation de test conditionnel, de boucle, etc. Try catch finally : gestion des exceptions. Function avec ou sans arguments : vous permet de créer vos méthodes accessibles en divers de votre script. Object : création d'objet à l'aide d'un constructeur (classe). Sherlock fournie une aide complète sur l'utilisation de Javascript. P SIG_ApplicationNote_JavaScript_010409_FR.doc Page 4 of 8
2.2. Calculs Pour réaliser des calculs vous devez utiliser l'objet Math. L'exemple montre simplement comment utiliser ces opérateurs. Attention à la syntaxe. Chapitre : Working with objects dans le fichier d'aide de Javascript. 2.3. Chaines de caractères. Très utilisées pour mettre en forme des textes, afficher des messages, etc. Javascript offre toute une panoplie de fonctionnalités sur les strings ainsi que des fonctions de conversion sur les nombres. Sherlock ne connaît que les nombres décimaux (aucune notion de Int, Double, Long, Float, etc). Concaténation de deux chaines : ChaineResultante = str1 + str2; Il existe plusieurs fonctions utiles pour transformer un nombre en chaine de caractères (string). nombre.tofixed(n) : renvoie un string de nombre avec n décimales. nombre.tostring() : renvoie un string de nombre mais avec le format décimal de Sherlock. Aucun formatage. RegExp (Regular Expression) ou Expression rationnelle. Regroupe un ensemble de méthodes permettant des traitements sur les chaines de caractères, ex : recherche d'une chaine à l'intérieur d'une autre, d'une occurrence, etc. Chapitre 4 dans l'aide JavaScript. Split génère un tableau de string à partir d'une chaine de caractères incluant un séparateur de sous chaine. re contient la Regular Expression permettant de retrouver les données correspondantes dans la chaine str. P SIG_ApplicationNote_JavaScript_010409_FR.doc Page 5 of 8
2.4. Accès fichier. Les accès fichiers sont réalisés à l'aide de l'objet System. L'ensemble de ces méthodes ne retourne aucune erreur. Ce script ouvre le fichier MonNomDeFichier.txt en mode lecture. Le contenu est lu à l'aide de System.FileReadLine() et le string retourné est stocké dans le tableau content. N'oubliez pas de fermer le fichier en quittant votre script, dans le cas contraire une erreur est générée lors de la réouverture du fichier par votre script. 2.5. Une classe un objet (utilisateur). La syntaxe est très simple et déroutante à la fois pour ceux qui manipulent déjà des classes. Voici un comparatif Javascript et Java. Utilisation sous Javascript : moimeme = new Employé(); moimeme.name = "Philippe"; Définition de la méthode déclarée dans notre classe. Définition de notre classe. Elle dispose de variables et d'une méthode. Instance d'un objet et affectations. On applique un offset sur les coordonnées courantes de notre objet. P SIG_ApplicationNote_JavaScript_010409_FR.doc Page 6 of 8
Les classes et méthodes ne sont pas accessibles à partir des autres scripts de votre investigation. Si vous devez passer des informations, utiliser des variables (Sherlock). Vous ne pouvez pas passer des objets. 2.5. Les exceptions (try catch). Mise en œuvre des instructions try catch et de throw. Définition d'une fonction permettant de générer une exception. Fonction de notre classe 3DPoints qui divise les coordonnées par un coefficient. Dans ce cas nous générons une exception (throw) lorsque k est à 0. Le bloc try catch tente l'exécution de la méthode Divise. Si k est à 0 alors l'exception provoque l'exécution des instructions contenues dans le bloc catch. Sous IPD - Javascript vous devez gérer votre propre exception. L'instruction Sherlock.DbgLog(string) vous permet de tracer l'exécution de votre script en écrivant des messages directement dans le fichier log de Sherlock : <Sherlock>\bin\IpeStudioLog.txt. Seulement le niveau de log dans <Sherlock>\bin\IpeLog.config est fixé à DEBUG. log4j.logger.ipestudio.logger=debug, RolFile Si ce niveau est fixé à ERROR, WARNING ou INFO alors Sherlock.DbgLog est ignorée. P SIG_ApplicationNote_JavaScript_010409_FR.doc Page 7 of 8
2.7. Les tableaux (Array) Le mot clé pour déclarer un tableau sous Javascript : Array. Déclaration de tableaux, ils n'ont pas de type définis (nombre ou string par exemple). Aucune taille n'est nécessaire. Le type du tableau est défini lors de l'affectation d'une valeur. Il n'est pas recommandé de fixer la taille du tableau sous Sherlock sous peine d'une erreur d'overflow. 3. Contact et commentaires Nous espérons que cette note technique vous sera utile et attendons avec intérêt vos commentaires. N'hésitez pas à contacter notre service technique pour toutes questions. Consultez aussi notre site qui regroupe de nombreuses informations, les questions les plus courantes ainsi qu'un grand nombre de données techniques sur le traitement d'images. France: Téléphone : +33 1 45069560 E-Mail: Eq.technique@stemmer-imaging.fr Web: www.stemmer-imaging.fr P SIG_ApplicationNote_JavaScript_010409_FR.doc Page 8 of 8