Share your opinion
WIDGETS GAMBAS
GAMBAS 3 SOFTWARES
TUTORIALS
Library
|
Interface Gambas - Acquire inputs
French only sorry...
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. Creation date : 08/05/2011 @ 17:38 Reactions to this article
| QUICK MENU
SEARCH
LANGUAGE
COMPONENTS
Other
LANGUAGE
Where, who?
VISITS
visitors visitor online ARCHIVES GAMBAS 1/2
|