Page loading

Share your opinion
What do you think about gambaslinux.fr?
 
Interesting
It miss some informations
Excellent website
Results
WIDGETS GAMBAS
GAMBAS 3 SOFTWARES
TUTORIALS
Library
Interface Gambas - Acquire inputs
French only sorry...

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

Creation date : 08/05/2011 @ 17:38
Last update : 08/05/2011 @ 17:38
Category : Interface Gambas
Page read 4780 times


Print the article Print the article


react.gifReactions to this article

Nobody gave a comment yet.
Be the first one to do it!


QUICK MENU
SEARCH




LANGUAGE
COMPONENTS
Other
LANGUAGE
Where, who?
VISITS

   visitors

   visitors online

ARCHIVES GAMBAS 1/2
^ Top ^