Donnez votre avis..
INTERFACE GAMBAS
LOGICIELS GAMBAS 3
TUTORIELS
=Bibliothèque
|
Interfacer Gambas - Aquisition des entrées
ACQUISITION DES ENTREES DE LA K8055
Bonjour, aujourd'hui nous allons realiser un travaux pratique qui va nous permettre de récuperer les valeurs numériques et analogiques aux entrées de la fameuse carte K8055 (VM110) de Velleman. Pour se faire, nous partons sur l'hypothèse que vous avez une carte montée reliée à l'USB de votre ordinateur, et que vous avez les pilotes compilés et installé et enfin que vous avez les droits root pour piloter l'usb. Un petit test de notre carte doit nous allumer les 8 leds de sortie par la commande Gambas : EXEC[ "k8055", "-d:255"] L'acquisition des entrées de cette carte est sous la forme d'une chaine de caractère comme ceci : 499;16;128;230;9;8 * 499 : mesure 499ms après lancement de la commande * 16 : Entree digitale i5 = 1 tous les autre à 0 * 128 : entree analogique 1 a la valeur 128 * 230 : entree analogique 2 a la valeur 230 * 9 : valeur du compteur 1 est 9 * 8 : valeur du compteur 2 est 8 Je veux pouvoir utiliser ces données pour afficher la valeur de l'entrée analogique 1 (128) et la stocker dans une textbox1 par exemple. Voici l'astuce que j'ai trouvé : A) extraction de la chaine après lancement de la commande EXEC tout d'abord, je crée une textarea1 qui me permetra de récuperer la chaine de caractere de ma commande. Ainsi, je pourrai ecrire le code suivant : nb: J'ai mis ce code dans un timer comme ca, je récupère la valeur analogique toutes les secondes EXEC ["k8055", "-p:0", "-num:"] TO textarea1.Text ensuite j'utilise une astuce qui consiste à séparer les nombres à l'aide de la détection du point virgule et à l'insérer dans une columnview1 comme ceci : DIM sLine AS String DIM Car AS String DIM bal AS Integer DIM Pos AS Integer DIM a AS Integer DIM mavaleur AS Integer DIM myvalue AS Float bal = 1 Car = ";" 'caractere separateur INC key sLine = TextArea1.Text INC key Pos = InStr(sLine, Car, bal) 'add first column ColumnView1.Add(key, Left$(sLine, Pos - 1)) 'a est le numero de colonne a = 0 DO WHILE (Pos <> 0 AND sLine <> "") a = a + 1 'permet d'enlever à chaque fois la partie que lon a ecrit sLine = Mid(sLine, Pos + 1, Len(sLine)) Pos = InStr(sLine, Car, bal) ColumnView1[Key][a] = Left$(sLine, Pos - 1) LOOP Maintenant, nous voulons récupérer la valeur en 4eme position. Il nous suffit simplement d'interroger notre columnview1 comme ceci : myvalue = CInt(ColumnView1[key][3]) Allez ! juste pour le luxe, on arrondi à 1 chiffre après la virgule le résultat myvalue = Round(myvalue, -1) et voilà! nous avons fait l'acquisition de notre valeur analogique. A bientot. Date de création : 08/05/2011 @ 17:38 Réactions à cet article
| ACCES RAPIDE
RECHERCHE
LES INSTRUCTIONS
LES COMPOSANTS
Divers
INSTRUCTIONS
Où ça, qui ça?
VISITES
visiteurs visiteurs en ligne ARCHIVES GAMBAS 1/2
|