dispositif de commandes des lectrovannes, pour moteur piston liquide





partir de cette carte


commande sur ce site

je vous propose un tutoriel dcrivant l'installation et l'utilisation de la dite carte
pour cela en premier, on vrifie que le systme dtecte bien la carte




remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621$ lsusb
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 06c2:0040 Phidgets Inc. (formerly GLAB) PhidgetInterface Kit 0-0-4




ensuite, on tlcharge le driver propos par le site, puis on dcompresse l'archive



remy@remy:~/Bureau$ tar -xvf libphidget_2.1.7.20100621.tar.gz
libphidget-2.1.7.20100621/
libphidget-2.1.7.20100621/cphidgetlist.c
libphidget-2.1.7.20100621/ltmain.sh
libphidget-2.1.7.20100621/clog.h
libphidget-2.1.7.20100621/cphidgetspatial.h
libphidget-2.1.7.20100621/cphidgetsbc.c
libphidget-2.1.7.20100621/config.sub
libphidget-2.1.7.20100621/cusb.h
...




toujours dans le mme terminal



remy@remy-laptop:~$ cd ./..../libphidget-2.1.7.20100621/
remy@remy-laptop:~/....$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
....
checking for ldconfig... /sbin/ldconfig
checking for library containing dlopen... -ldl
checking for library containing sqrt... -lm
checking for library containing pthread_join... -lpthread
checking for library containing usb_find_busses... no
configure: error: Missing libusb!




cette erreur "configure: error: Missing libusb!" m'indique qu'il me manque
la librairie libusb-dev aprs l'installation de la bonne librairie
voir le gestionnaire de paquets de votre linuxette




remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for style of include used by make... GNU
checking for gcc... gcc
....
checking for ldconfig... /sbin/ldconfig
checking for library containing dlopen... -ldl
checking for library containing sqrt... -lm
checking for library containing pthread_join... -lpthread
checking for library containing usb_find_busses... -lusb
configure: creating ./config.status
config.status: creating Makefile
config.status: creating examples/Makefile
config.status: executing depfiles commands
config.status: executing libtool commands
remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621$




maintenant qui ne manque plus rien et qu'il n'y a pas d'erreur
une compilation




remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621$ make
CC cphidget.lo
CC cphidgetaccelerometer.lo
CC cphidgetadvancedservo.lo
CC cphidgetencoder.lo
...
CC com_phidgets_Manager.lo
CC com_phidgets_Dictionary.lo
CC com_phidgets_DictionaryKeyListener.lo
CC com_phidgets_WeightSensorPhidget.lo
CC phidget_jni.lo
CCLD libphidget21.la
remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621$




et pour finir, l'installation



remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621$ sudo make install
[sudo] password for remy:
make[1]: entrant dans le rpertoire /home/remy/Bureau/libphidget-2.1.7.20100621
....
make[1]: quittant le rpertoire /home/remy/Bureau/libphidget-2.1.7.20100621
remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621$




pour vrifier, un petit tour dans le rpertoire des exemples
pour faire un test avec une compilation et une excution



remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621$ cd ./examples/
remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621/examples$ make
CC ifkit.o
CCLD ifkit
CC manager.o
CCLD manager
CC phidgetsbclist.o
CCLD phidgetsbclist
remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621/examples$
remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621/examples$ sudo ./ifkit
Attach handler ran!
Output 0 is 0
Output 1 is 0
Output 2 is 0
Output 3 is 0
PhidgetInterfaceKit
Version: 707 SerialNumber: 109547
Sensors:0 Inputs:0 Outputs:4
Output 0 is 1
^C
remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621/examples$




tout fonctionne
maintenant, on va donner les droits d'criture tout le monde
pour cela, aller dans le rpertoire udev et faire la copie du fichier qui va bien




remy@remy-laptop:~$ cd /home/remy/Bureau/libphidget-2.1.7.20100621/udev/
remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621/udev$ sudo cp 99-phidgets.rules /etc/udev/rules.d/
[sudo] password for remy:
remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621/udev$




puis pour les fainants un petit reboot, je ne me souviens jamais de la commande qui va bien donc aprs reboot



remy@remy-laptop:~$ cd ./Bureau/libphidget-2.1.7.20100621/examples/
remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621/examples$ ./ifkit
Attach handler ran!
Output 0 is 0
Output 1 is 0
Output 2 is 0
Output 3 is 0
PhidgetInterfaceKit
Version: 707 SerialNumber: 109547
Sensors:0 Inputs:0 Outputs:4
Output 0 is 1
^C
remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621/examples$




voila maintenant plus besoin de sudo,donc
un peu de c pour ecrire notre propre appli un fichier exemple.c



#include
#include

int cmd_kit(int v0,int v1,int v2)
{

int err;
CPhidgetInterfaceKitHandle IFK = 0;
CPhidgetInterfaceKit_create(&IFK);
CPhidget_open((CPhidgetHandle)IFK, -1);

if((err = CPhidget_waitForAttachment((CPhidgetHandle)IFK, 1000)) != EPHIDGET_OK )
{
const char *errStr;
CPhidget_getErrorDescription(err, &errStr);
printf(" \n");
printf("branche la carte du con \n");
printf(" \n");
goto exit;
}
while (1)
{
CPhidgetInterfaceKit_setOutputState(IFK, 0, 0);
CPhidgetInterfaceKit_setOutputState(IFK, 1, 0);
printf(" electrovanne 1 2 : fermes \n");
usleep(v0);
CPhidgetInterfaceKit_setOutputState(IFK, 0, 1);
printf(" electrovanne 1 : ouverte \n");
usleep(v1);
CPhidgetInterfaceKit_setOutputState(IFK, 1, 1);
printf(" electrovanne 2 : ouverte \n");
usleep(v2);

}

exit:
CPhidget_close((CPhidgetHandle)IFK);
CPhidget_delete((CPhidgetHandle)IFK);
return 0;
}

int main(int argc, char* argv[])
{
if(argc <4)
{
printf(" \n");
printf(" %s val0 val1 val2 \n",argv[0]);
printf(" ------------------------------------------------------------------\n");
printf(" val0 est le temps de fermeture des 2 electrovannes\n");
printf(" va11 est le temps d'ouverture de la premiere electrovanne\n");
printf(" va12 est le temps d'ouverture de la deuxieme electrovanne\n");
printf(" tous les temps sont en millisecondes 1 s= 1000\n");
printf(" ------------------------------------------------------------------\n");
printf(" \n");
return 0;
}
printf("vos Argument %s %s %s \n",argv[1],argv[2],argv[3]);

int val0=atoi (argv[1])*1000;
int val1=atoi (argv[2])*1000;
int val2=atoi (argv[3])*1000;
cmd_kit(val0,val1,val2);
return 0;
}





une compilation


remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621/examples$gcc example.c -o example -lphidget21
remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621/examples$ ./example

./example val0 val1 val2
------------------------------------------------------------------
val0 est le temps de fermeture des 2 electrovannes
va11 est le temps d'ouverture de la premiere electrovanne
va12 est le temps d'ouverture de la deuxieme electrovanne
tous les temps sont en millisecondes 1 s= 1000
------------------------------------------------------------------
@remy-laptop:~/Bureau/libphidget-2.1.7.20100621/examples$ ./example 3000 1000 1000
vos Argument 3000 1000 1000
electrovanne 1 2 : fermes
electrovanne 1 : ouverte
electrovanne 2 : ouverte
electrovanne 1 2 : fermes
electrovanne 1 : ouverte
electrovanne 2 : ouverte
electrovanne 1 2 : fermes
^C
remy@remy-laptop:~/Bureau/libphidget-2.1.7.20100621/examples$



voila l'on peut maintenant commander les electrovannes du futur moteur
piston liquide