WIDGETS GAMBAS
LOGICIELS GAMBAS 3
TUTORIELS
VISITES

   visiteurs

   visiteurs en ligne

Où ça, qui ça?
Interfacer Gambas - Aquisition des entrées
ACQUISITION DES ENTREES DE LA K8055

k8055in.png



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.


wink

Date de création : 08/05/2011 @ 17:38
Dernière modification : 08/05/2011 @ 17:38
Catégorie : Interfacer Gambas
Page lue 2534 fois


Imprimer l'article Imprimer l'article


react.gifRéactions à cet article

Personne n'a encore laissé de commentaire.
Soyez donc le premier !


ACCES RAPIDE
RECHERCHE




LOGICIELS GAMBAS 2
LES INSTRUCTIONS
LES COMPOSANTS
Divers

^ Haut ^