Smile pilote par script un module d'entrées/sorties numériques USB de marque Delcom (Delcom USB/Digital I/O board). Par script, vous pouvez écrire et lire des données sous la forme de signaux numériques (TTL). Aucun logiciel supplémentaire n'est requis : Smile inclus un driver USB pour ce matériel de Delcom. Le module d'entrées/sorties numériques USB de marque Delcom est capable de gérer 2 x 8 lignes numériques. Vous pouvez brancher plusieurs appareils pour avoir plus d'entrées/sorties.
Chacun des deux ports (8 lignes chacunes) peut marcher en entrée ou en sortie : typiquement, vous connectez les lignes d'entrée à des opto-coupleurs et les lignes de sortie vers des relais électriques.
Voici des instructions détaillées :
-
Branchez le connecteur USB du Delcom sur votre machine et lancez Smile.
-
Créez un nouvel objet de classe Delcom USB Board.
set the_board to make new Delcom USB Board
-
Pour écrire en sortie, définissez la propriété contained data du port voulu (vous définissez les 8 bits en une seule commande) ou bien la propriété contained data d'un bit en particulier.
set contained data of digital port 2 of the_board to 128
set contained data of bit 8 of digital port 2 of the_board to 1
-
Pour lire les entrées, utilisez la propriété contained data du port voulu (vous lisez les 8 bits en une seule commande) ou la propriété contained data du bit voulu :
get contained data of digital port 2 of the_board
-- 128
get contained data of bit 8 of digital port 2 of the_board
-- 1
-
Si vous réglez la propriété want idle du Delcom USB Board à true, alors le Delcom USB Board vérifiera périodiquement les entrées, à un intervalle de temps régulier défini en secondes par la propriété idle delay (1.0 par défaut, pour une meilleure réactivité, réglez-là par exemple à 0.01).
-
Lorsque l'état des entrées change, Smile enverra automatiquement l'événement suivant au Delcom USB Board :
notify the_object from the_sender with data the_record
the_object est l'objet qui est notifié, par défaut l'objet Smile de classe Delcom USB Board lui-même
the_sender est l'objet responsable de la notification, ici le Delcom USB Board
the_record est un record AppleScript qui décrit les changements détectés. the_record contient deux champs : «class BIT0» et «class BIT1». Chacun est une liste, éventuellement nulle, d'entiers : «class BIT0» est la liste des bits dont la valeur est passée de 1 à 0, et «class BIT1» est la liste des bits dont la valeur est passée de 0 à 1.
-
Pour gérer l'événement notify, définissez dans le script de l'objet Delcom USB Board une fonction notify (utilisez EditObjectScript(the_object) pour editer le script d'un object), ou définissez une fonction notify dans le contexte global (par exemple, dans un fichier texte enregistré dans Class scripts/Context additions/).
-
Si vous voulez n'être notifié que du changement de certains bits en particulier, utilisez la propriété «class Mask» de l'objet Delcom USB Board. La notification n'aura lieu que pour les bits qui sont mis à 1 dans la propriété «class Mask».
set «class Mask» of the_board to 4 -- ne contrôle que le bit 3
-
Vous pouvez rediriger l'événement notify en définissant la propriété target object de l'objet Delcom USB Board à une référence à un autre objet de Smile, tel q'une fenêtre ou un dialogue (mais pas à un script, cependant). Par défaut, ou lorsque la propriété target object n'est pas définie ou contient une référence invalide, l'événement notify est envoyé à l'objet Delcom USB Board lui-même.
-
Si vous travaillez avec plusieurs Delcom USB Board, utilisez la propriété slot des objets Delcom USB Board pour affecter un objet vers un appareil donné, et utilisez la propriété «class FiIn» des Delcom USB Board pour les identifier (FiIn correspond à "Firmware Information", il s'agit du numéro de série).
-
A moins que vous n'ayez des besoins très spécifiques, vous pouvez sans doute utiliser DelcomLib, une bibliothèque AppleScript qui gère plusieurs Delcom USB Board simultanément.
Pour plus d'informations concernant DelcomLib et pour télécharger cette bibliothèque, consultez la page suivante :
|