[C++] fonctions calcule odometrie
Résolu/Fermé
hades06
Messages postés
16
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
10 novembre 2009
-
14 févr. 2007 à 09:45
Dante - 5 avril 2007 à 17:31
Dante - 5 avril 2007 à 17:31
A voir également:
- [C++] fonctions calcule odometrie
- Ces codes secrets vous donnent accès aux fonctions cachées de votre smartphone Android - Accueil - Android
- Codes secrets Android : accéder aux fonctions cachées - Guide
- Comment on calcule une moyenne - Guide
- Calcule alimentation pc - Guide
- Calcule grossesse - Télécharger - Vie quotidienne
26 réponses
mamiemando
Messages postés
33475
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 janvier 2025
7 815
14 févr. 2007 à 16:04
14 févr. 2007 à 16:04
A la fin du fichier wbodo.h, rajoute une ligne blanche
Peux-tu nous dire ce qu'il y a ligne 21 de ce même fichier ?
Bonne chance
Peux-tu nous dire ce qu'il y a ligne 21 de ce même fichier ?
Bonne chance
hades06
Messages postés
16
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
10 novembre 2009
14 févr. 2007 à 16:36
14 févr. 2007 à 16:36
La ligne 21 du fichier wbodo.h c'est "class wbodo {"
et merci pour m'avoir dis de rajouter une ligne blanche a la fin ;)
et merci pour m'avoir dis de rajouter une ligne blanche a la fin ;)
mamiemando
Messages postés
33475
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 janvier 2025
7 815
14 févr. 2007 à 20:08
14 févr. 2007 à 20:08
Donne moi le contenu du fichier en question
hades06
Messages postés
16
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
10 novembre 2009
28 févr. 2007 à 12:34
28 févr. 2007 à 12:34
#include "wbodo.h"
#include <stdio.h>
#include <float.h>
#define DEFIPADDRESS "192.168.120.14"
// changer l'IP
#define DEFPORT 15000
#define CTE1 0.67
#define CTE2 0.0025
#define CTE3 0.005
// Definition des constantes
//
// r = 64 mm (rayon de la roue)
// l = 134 mm ((distance entre les roues)/2)
// M = 300 secteurs (par roue)
// CTE1=(r*PI)/M = 0.67 mm/tics
// CTE2=(r*PI)/(2*l*M) = 0.0025 rads/tics
// CTE3=(r*PI)/(l*M) = 0.005 rads/tics
pthread_t th_id,th_v;
pthread_attr_t attr,attrv;
extern wbodo* cube4G;
int gthread=0;
int gthread1=0;
//NOTE: Toutes les variables qui commencent pas 'g_' sont globales
//Variable globale qui rassemble les 7 valeurs du buffer du 4G
char g_recv_datos[7];
int sock;
struct sockaddr_in g_server;
struct hostent *hp;
char g_buffer[TCPBUF_SIZE];
float g_vel_l=0,g_vel_r=0; // a la base c'etait int et pas float
float g_x=0,g_y=0; // Position du robot pour l'odometrie
float g_a=0; // Angle de depart
float g_tl=0,g_tr=0; // Tics de la roue gauche et droite
float g_stl=0,g_str=0; // Tics mesurés avec le capteur
// wbodo constructeur
wbodo::wbodo()
{
// Nous configurons la connexion avec des valeurs par défaut
g_server.sin_family = AF_INET;
g_server.sin_port = htons(DEFPORT);
hp = gethostbyname(DEFIPADDRESS);
memcpy((char *)&g_server.sin_addr, (char *)hp->h_addr, hp->h_length);
}
int wbodo::setaddress(char *servername, int serverport)
// Cette fonction place l'adresse IP et le numero de port
//
// servername:indicateur de l'IP ou le chemin du nom du serveur du serveur de SC12 wifibot
// serport: le port d'écoute du serveur SC12 wifibot(5001)
//
// returns: -1 quand il y a une erreur else 0
{
g_server.sin_family = AF_INET;
g_server.sin_port = htons(serverport);
hp = gethostbyname(servername);
if (hp==0){
perror("serveur inconnu");
return(-1);
}
memcpy((char *)&g_server.sin_addr, (char *)hp->h_addr, hp->h_length);
return(0);
}
int wbodo::connexion()
// Cette fonction lance la connexion
//
// returns: -1 quand il y a une erreur else 0
{
// Creation de la socket
sock = socket(PF_INET,SOCK_STREAM,0);
if (sock<0){
perror("la socket n'a pas pu etre crée\r\n");
return(-1);
}
// Connect
if (connect(sock,(struct sockaddr *)&g_server,sizeof g_server) < 0 ){
perror ("connexion refusée");
return(-1);
}
else
return(0);
}
int wbodo::setv(int v, int w)
// Cette fonction place la vitesse linéaire et angulaire du robot
// v: vitesse linéaire en mm/s
// w: vitesse linéaire en rad/s
//
// returns: -1 quand il y'a erreur de communication else 0
{
int cr;
float vl,vr;
float speed_left=0; // a la base c'etait int et pas float
float speed_right=0; // a la base c'etait int et pas float
float tl=0,tr=0;
vl = v+(w*268)/200;
vr = v-(w*268)/200;
g_tl = -(vl*30)/1000;
g_tr = -(vr*30)/1000;
tl=g_tl;
tr=g_tr;
if(tl<0){
tl=-tl;
speed_left=speed_left+64;
}
if(tl>63) tl=63;
speed_left=speed_left+tl;
if(tr<0){
tr=-tr;
speed_right=speed_right+64;
}
if(tr>63) tr=63;
speed_right=speed_right+tr;
// Bit de controle toujours a 1 (control on)
speed_left=speed_left+128;
speed_right=speed_right+128;
g_vel_l=speed_left;
g_vel_r=speed_right;
if(v==0 && w==0)
{
g_vel_l=0;
g_vel_r=0;
return(0);
}
else{
if(!gthread)
{
pthread_attr_init(&attrv);
if(pthread_create(&th_v,&attrv,ThreadVelocidad,(void*)this)!=0) return(-1);
// else return(0);
gthread=1;
}
return(0);
}
}
int wbodo::getv(float *v, float *w) // int wbodo::getv(int *v, int *w) a la base
// Cette fonction renvoie la vitesse linéaire et angulaire du robot
//
// v: indicateur de la vitesse linéaire retournée mm/s
// w: indicateur de la vitesse linéaire retournée rad/s
//
// returns: -1 quand il y'a erreur de communication else 0
{
float v1,v2;
v1=(g_stl*1000)/30;
v2=(g_str*1000)/30;
*v=(v1+v2)/2;
*w=((v1-v2)*100)/268;
return(0);
}
int wbodo::reset()
// Cette méthode remet les valeurs de l'odométrie à 0
//
// returns: -1 quand il y'a erreur de communication else 0
{
//updatetics();
g_x=0;
g_y=0;
g_a=0;
return(0);
}
int wbodo::setpos(int xm, int ym, int am)
// Cette methode met les valeurs de l'odométrie en mm et en rad
//
// x: x valeur en millimetres, deplacement droit
// y: y valeur en millimetres, deplacement latéral
// a: indicateur de l'angle en rad (dans le sens des aiguilles d'une montre)
//
// returns: -1 quand il y'a erreur de communication else 0
{
g_x=xm;
g_y=ym;
g_a=am;
return(0);
}
int wbodo::getpos(float *xm, float *ym, float *am) // int wbodo::getpos(int *xm, int *ym, int *am) a la base
// Cette methode renvoie les valeurs d'odométrie en mm et en rad
//
// x: indicateur de la valeur de x en mm, deplacement droit
// y: indicateur de la valeur de y en mm, deplacement literal
// a: indicateur de l'angle en radian (dans le sens des aiguilles d'une montre)
//
// returns: -1 quand il y'a erreur de communication else 0
{
*xm=g_x;
*ym=g_y;
*am=g_a;
return(0);
}
int wbodo::startodo()
// Cette fonction active l'odometrie dans le robot. Arrêté par défaut
//
// returns: -1 quand il y'a erreur de communication else 0
{
//updatetics();
//pthread_attr_init(&attr);
if(!gthread1) // S'il n'est pas lancé precedemment, il le lance
{
pthread_attr_init(&attr);
// Crée le fil periodique
if(pthread_create(&th_id,&attr,ThreadPeriodico,NULL)!=0)
{
return(-1); //erreur de création du fil
}
else
{
gthread1=1;
return(0);
}
}
else return(2);
}
int wbodo::stopodo()
// Cette fonction arrête l'odometrie dans le robot. Arrêté par défaut
// returns: -1 quand il y'a erreur de communication else 0
{
if(gthread1) // Ss'il s'est deja lancé, il s'arrete
{
// Fil arreter
if(pthread_cancel(th_id)!=0)
{
return(-1);
}
else
{
gthread1=0; // Il l'a arrété, il recommence.
return(0);
}
}
else return(2);
}
int wbodo::getenc(int *enc1, int *enc2, int *enc3, int *enc4)
// Cette fonction renvoie les valeurs des encodeurs sur une période de 40 ms
//
// enc1: indicateur de la valeur de l'encodeur avant gauche
// enc2: indicateur de la valeur de l'encodeur arriere gauche
// enc3: indicateur de la valeur de l'encodeur arriere droit
// enc4: indicateur de la valeur de l'encodeur avant droit
//
// returns: -1 quand il y'a erreur de communication else 0
{
*enc1=g_recv_datos[1];
*enc2=g_recv_datos[2];
*enc3=g_recv_datos[3];
*enc4=g_recv_datos[4];
return(0);
}
int wbodo::getbat(int *bat)
// Cette fonction renvoie le niveau de batterie sur une échelle de: 0-255
//
// bat: indicateur de niveau de batterie
//
// return: -1 quand il y'a erreur de communication else 0
{
//updatetics();
*bat=g_recv_datos[0];
return(0);
}
/*
int wbodo::getirn(int *ir1,int *ir2)
// Cette fonction renvoie les valeurs des capteurs infrarouges en centimetres
//
// ir1: indicateur de la distance mesurée avec le capteur infra rouge gauche
// ir2: indicateur de la distance mesurée avec le capteur infra rouge droit
//
// returns: -1 when communication error else 0
{
// updatetics();
*ir1=g_recv_datos[5];
*ir2=g_recv_datos[6];
return(0);
}
*/
void * ThreadPeriodico(void *arg)
{
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,NULL);
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);
while(1)
{
pthread_testcancel(); // Point d'annulation
// Pas besoin de xq usleep il y a deja le point d'annulation
updatePos();
usleep(40000); // 40ms == 40000 µs
}
}
void updatePos(void)
{
float xl=0,yl=0,al=0;
float ltl, ltr;
xl=g_x;
yl=g_y;
al=g_a;
ltl=g_stl;
ltr=g_str;
xl=xl+CTE1*(ltl+ltr)*cos(CTE2*(ltl-ltr)+(al/100));
yl=yl+CTE1*(ltl+ltr)*sin(CTE2*(ltl-ltr)+(al/100));
al=100*CTE3*(ltl-ltr)+al;
// Multiplié CTE3 par 100 pour paser de rads a crads
g_x=xl;
g_y=yl;
g_a=al;
}
void *ThreadVelocidad(void *arg)
{
int cr=0;
int enc1=0,enc2=0,enc3=0,enc4=0;
int encl=0,encr=0;
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,NULL);
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);
while(1) // Envoie toute les 40 ms les valeurs de vitesse
{
g_buffer[0]=(unsigned char) g_vel_l; // Il écrit des vitesses
g_buffer[1]=(unsigned char) g_vel_r;
write(sock,g_buffer,TBUF_SEND);
cr=read(sock,g_buffer,TBUF_RECV); // Il reçoit des données
if(cr>0)
{
g_recv_datos[0]=g_buffer[0];
g_recv_datos[1]=g_buffer[1];
g_recv_datos[2]=g_buffer[2];
g_recv_datos[3]=g_buffer[3];
g_recv_datos[4]=g_buffer[4];
g_recv_datos[5]=g_buffer[5];
g_recv_datos[6]=g_buffer[6];
enc1=g_recv_datos[1];
enc2=g_recv_datos[2];
enc3=g_recv_datos[3];
enc4=g_recv_datos[4];
if(enc1>=enc2) encl=enc1;
else encl=enc2;
if(enc3>=enc4) encr=enc3;
else encr=enc4;
if((encl>=0) && (encr>=0))
{
if(g_tl>0) g_stl=-encl;
else g_stl=encl;
if(g_tr>0) g_str=-encr;
else g_str=encr;
}
}
usleep(40000);
}
}
#include <stdio.h>
#include <float.h>
#define DEFIPADDRESS "192.168.120.14"
// changer l'IP
#define DEFPORT 15000
#define CTE1 0.67
#define CTE2 0.0025
#define CTE3 0.005
// Definition des constantes
//
// r = 64 mm (rayon de la roue)
// l = 134 mm ((distance entre les roues)/2)
// M = 300 secteurs (par roue)
// CTE1=(r*PI)/M = 0.67 mm/tics
// CTE2=(r*PI)/(2*l*M) = 0.0025 rads/tics
// CTE3=(r*PI)/(l*M) = 0.005 rads/tics
pthread_t th_id,th_v;
pthread_attr_t attr,attrv;
extern wbodo* cube4G;
int gthread=0;
int gthread1=0;
//NOTE: Toutes les variables qui commencent pas 'g_' sont globales
//Variable globale qui rassemble les 7 valeurs du buffer du 4G
char g_recv_datos[7];
int sock;
struct sockaddr_in g_server;
struct hostent *hp;
char g_buffer[TCPBUF_SIZE];
float g_vel_l=0,g_vel_r=0; // a la base c'etait int et pas float
float g_x=0,g_y=0; // Position du robot pour l'odometrie
float g_a=0; // Angle de depart
float g_tl=0,g_tr=0; // Tics de la roue gauche et droite
float g_stl=0,g_str=0; // Tics mesurés avec le capteur
// wbodo constructeur
wbodo::wbodo()
{
// Nous configurons la connexion avec des valeurs par défaut
g_server.sin_family = AF_INET;
g_server.sin_port = htons(DEFPORT);
hp = gethostbyname(DEFIPADDRESS);
memcpy((char *)&g_server.sin_addr, (char *)hp->h_addr, hp->h_length);
}
int wbodo::setaddress(char *servername, int serverport)
// Cette fonction place l'adresse IP et le numero de port
//
// servername:indicateur de l'IP ou le chemin du nom du serveur du serveur de SC12 wifibot
// serport: le port d'écoute du serveur SC12 wifibot(5001)
//
// returns: -1 quand il y a une erreur else 0
{
g_server.sin_family = AF_INET;
g_server.sin_port = htons(serverport);
hp = gethostbyname(servername);
if (hp==0){
perror("serveur inconnu");
return(-1);
}
memcpy((char *)&g_server.sin_addr, (char *)hp->h_addr, hp->h_length);
return(0);
}
int wbodo::connexion()
// Cette fonction lance la connexion
//
// returns: -1 quand il y a une erreur else 0
{
// Creation de la socket
sock = socket(PF_INET,SOCK_STREAM,0);
if (sock<0){
perror("la socket n'a pas pu etre crée\r\n");
return(-1);
}
// Connect
if (connect(sock,(struct sockaddr *)&g_server,sizeof g_server) < 0 ){
perror ("connexion refusée");
return(-1);
}
else
return(0);
}
int wbodo::setv(int v, int w)
// Cette fonction place la vitesse linéaire et angulaire du robot
// v: vitesse linéaire en mm/s
// w: vitesse linéaire en rad/s
//
// returns: -1 quand il y'a erreur de communication else 0
{
int cr;
float vl,vr;
float speed_left=0; // a la base c'etait int et pas float
float speed_right=0; // a la base c'etait int et pas float
float tl=0,tr=0;
vl = v+(w*268)/200;
vr = v-(w*268)/200;
g_tl = -(vl*30)/1000;
g_tr = -(vr*30)/1000;
tl=g_tl;
tr=g_tr;
if(tl<0){
tl=-tl;
speed_left=speed_left+64;
}
if(tl>63) tl=63;
speed_left=speed_left+tl;
if(tr<0){
tr=-tr;
speed_right=speed_right+64;
}
if(tr>63) tr=63;
speed_right=speed_right+tr;
// Bit de controle toujours a 1 (control on)
speed_left=speed_left+128;
speed_right=speed_right+128;
g_vel_l=speed_left;
g_vel_r=speed_right;
if(v==0 && w==0)
{
g_vel_l=0;
g_vel_r=0;
return(0);
}
else{
if(!gthread)
{
pthread_attr_init(&attrv);
if(pthread_create(&th_v,&attrv,ThreadVelocidad,(void*)this)!=0) return(-1);
// else return(0);
gthread=1;
}
return(0);
}
}
int wbodo::getv(float *v, float *w) // int wbodo::getv(int *v, int *w) a la base
// Cette fonction renvoie la vitesse linéaire et angulaire du robot
//
// v: indicateur de la vitesse linéaire retournée mm/s
// w: indicateur de la vitesse linéaire retournée rad/s
//
// returns: -1 quand il y'a erreur de communication else 0
{
float v1,v2;
v1=(g_stl*1000)/30;
v2=(g_str*1000)/30;
*v=(v1+v2)/2;
*w=((v1-v2)*100)/268;
return(0);
}
int wbodo::reset()
// Cette méthode remet les valeurs de l'odométrie à 0
//
// returns: -1 quand il y'a erreur de communication else 0
{
//updatetics();
g_x=0;
g_y=0;
g_a=0;
return(0);
}
int wbodo::setpos(int xm, int ym, int am)
// Cette methode met les valeurs de l'odométrie en mm et en rad
//
// x: x valeur en millimetres, deplacement droit
// y: y valeur en millimetres, deplacement latéral
// a: indicateur de l'angle en rad (dans le sens des aiguilles d'une montre)
//
// returns: -1 quand il y'a erreur de communication else 0
{
g_x=xm;
g_y=ym;
g_a=am;
return(0);
}
int wbodo::getpos(float *xm, float *ym, float *am) // int wbodo::getpos(int *xm, int *ym, int *am) a la base
// Cette methode renvoie les valeurs d'odométrie en mm et en rad
//
// x: indicateur de la valeur de x en mm, deplacement droit
// y: indicateur de la valeur de y en mm, deplacement literal
// a: indicateur de l'angle en radian (dans le sens des aiguilles d'une montre)
//
// returns: -1 quand il y'a erreur de communication else 0
{
*xm=g_x;
*ym=g_y;
*am=g_a;
return(0);
}
int wbodo::startodo()
// Cette fonction active l'odometrie dans le robot. Arrêté par défaut
//
// returns: -1 quand il y'a erreur de communication else 0
{
//updatetics();
//pthread_attr_init(&attr);
if(!gthread1) // S'il n'est pas lancé precedemment, il le lance
{
pthread_attr_init(&attr);
// Crée le fil periodique
if(pthread_create(&th_id,&attr,ThreadPeriodico,NULL)!=0)
{
return(-1); //erreur de création du fil
}
else
{
gthread1=1;
return(0);
}
}
else return(2);
}
int wbodo::stopodo()
// Cette fonction arrête l'odometrie dans le robot. Arrêté par défaut
// returns: -1 quand il y'a erreur de communication else 0
{
if(gthread1) // Ss'il s'est deja lancé, il s'arrete
{
// Fil arreter
if(pthread_cancel(th_id)!=0)
{
return(-1);
}
else
{
gthread1=0; // Il l'a arrété, il recommence.
return(0);
}
}
else return(2);
}
int wbodo::getenc(int *enc1, int *enc2, int *enc3, int *enc4)
// Cette fonction renvoie les valeurs des encodeurs sur une période de 40 ms
//
// enc1: indicateur de la valeur de l'encodeur avant gauche
// enc2: indicateur de la valeur de l'encodeur arriere gauche
// enc3: indicateur de la valeur de l'encodeur arriere droit
// enc4: indicateur de la valeur de l'encodeur avant droit
//
// returns: -1 quand il y'a erreur de communication else 0
{
*enc1=g_recv_datos[1];
*enc2=g_recv_datos[2];
*enc3=g_recv_datos[3];
*enc4=g_recv_datos[4];
return(0);
}
int wbodo::getbat(int *bat)
// Cette fonction renvoie le niveau de batterie sur une échelle de: 0-255
//
// bat: indicateur de niveau de batterie
//
// return: -1 quand il y'a erreur de communication else 0
{
//updatetics();
*bat=g_recv_datos[0];
return(0);
}
/*
int wbodo::getirn(int *ir1,int *ir2)
// Cette fonction renvoie les valeurs des capteurs infrarouges en centimetres
//
// ir1: indicateur de la distance mesurée avec le capteur infra rouge gauche
// ir2: indicateur de la distance mesurée avec le capteur infra rouge droit
//
// returns: -1 when communication error else 0
{
// updatetics();
*ir1=g_recv_datos[5];
*ir2=g_recv_datos[6];
return(0);
}
*/
void * ThreadPeriodico(void *arg)
{
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,NULL);
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);
while(1)
{
pthread_testcancel(); // Point d'annulation
// Pas besoin de xq usleep il y a deja le point d'annulation
updatePos();
usleep(40000); // 40ms == 40000 µs
}
}
void updatePos(void)
{
float xl=0,yl=0,al=0;
float ltl, ltr;
xl=g_x;
yl=g_y;
al=g_a;
ltl=g_stl;
ltr=g_str;
xl=xl+CTE1*(ltl+ltr)*cos(CTE2*(ltl-ltr)+(al/100));
yl=yl+CTE1*(ltl+ltr)*sin(CTE2*(ltl-ltr)+(al/100));
al=100*CTE3*(ltl-ltr)+al;
// Multiplié CTE3 par 100 pour paser de rads a crads
g_x=xl;
g_y=yl;
g_a=al;
}
void *ThreadVelocidad(void *arg)
{
int cr=0;
int enc1=0,enc2=0,enc3=0,enc4=0;
int encl=0,encr=0;
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,NULL);
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);
while(1) // Envoie toute les 40 ms les valeurs de vitesse
{
g_buffer[0]=(unsigned char) g_vel_l; // Il écrit des vitesses
g_buffer[1]=(unsigned char) g_vel_r;
write(sock,g_buffer,TBUF_SEND);
cr=read(sock,g_buffer,TBUF_RECV); // Il reçoit des données
if(cr>0)
{
g_recv_datos[0]=g_buffer[0];
g_recv_datos[1]=g_buffer[1];
g_recv_datos[2]=g_buffer[2];
g_recv_datos[3]=g_buffer[3];
g_recv_datos[4]=g_buffer[4];
g_recv_datos[5]=g_buffer[5];
g_recv_datos[6]=g_buffer[6];
enc1=g_recv_datos[1];
enc2=g_recv_datos[2];
enc3=g_recv_datos[3];
enc4=g_recv_datos[4];
if(enc1>=enc2) encl=enc1;
else encl=enc2;
if(enc3>=enc4) encr=enc3;
else encr=enc4;
if((encl>=0) && (encr>=0))
{
if(g_tl>0) g_stl=-encl;
else g_stl=encl;
if(g_tr>0) g_str=-encr;
else g_str=encr;
}
}
usleep(40000);
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mamiemando
Messages postés
33475
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 janvier 2025
7 815
1 mars 2007 à 02:23
1 mars 2007 à 02:23
Attends mais moi je veux juste le fichier wbodo.h et encore, juste les 30 premières lignes pour voir ce qu'il y a ligne 21.
hades06
Messages postés
16
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
10 novembre 2009
1 mars 2007 à 03:05
1 mars 2007 à 03:05
Ah ok et bien le fichier wbodo.h c'est ce que j'ai mis avec mon tout premier message la ou je demandais conseil, le tout tout premier tout en haut.
mamiemando
Messages postés
33475
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 janvier 2025
7 815
1 mars 2007 à 10:49
1 mars 2007 à 10:49
Si c'est bien :
... chez moi ca compile. Peux-tu me redonner le contenu de ce fichier ?
#include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <unistd.h> #include <string.h> #include <math.h> #include <string.h> #include <pthread.h> #include <time.h> #define TCPBUF_SIZE 128 #define TBUF_RECV 7 #define TBUF_SEND 2 class wbodo { public: wbodo(); // Attributs de la classe /***************** Fonction pour se connecter avec le serveur "sc12" *******************/ // Cette fonction place l'adresse IP et le numero de port int setaddress(char *servername, int serverport); // Cette fonction active la connection int connexion(); // Cette fonction coupe la connection void stop(); /* ***************** Methode pour controler le robot *************************** */ // VITESSE // Cette fonction donne la vitesse linéaire et angulaire du robot en mm/s and crad/s int setv(int v, int w); // Cette fonction retourne la vitesse linéaire et angulaire du robot en mm/s and crad/s int getv(float *v, float *w); // int getv(int *v, int *w) a la base // ODOMETRIE // Cette fonction reinitialise les valeur de l'odometrie a 0 int reset(); // Cette fonction donne les valeurs de l'odometrie en mm and crad int setpos(int xm, int ym, int am); // Cette fonction retourne les valeurs de l'odometrie en mm and crad int getpos(float *xm, float *ym, float *am); //int getpos(int *xm, int *ym, int *am) a la base // int getpos(float *xm, float *ym, float *am); // Cette fonction active l'odometrie dans le robot. "Arrete par defaut" int startodo(); // Cette fonction arrete l'odometrie dans le robot. "Arrete par defaut" int stopodo(); // SONDES // Cette fonction renvoie les valeurs des encodeurs a chaque periode de 40 ms // 1:LEFT-FRONT 2:LEFT-BACK 3:RIGHT-BACK 4:RIGHT-FRONT int getenc(int *enc1, int *enc2, int *enc3, int *enc4); // Cette fonction rertourne le niveau de la batterie sur une echelle de 0-255 int getbat(int *bat); /* Cette fonction retourne la valeur des sondes infra-rouge int getirn(int *ir1,int *ir2); int updatetics(void); */ private: /* int sock; struct sockaddr_in server; struct hostent *hp; char buffer[TCPBUF_SIZE]; // Fonctions auxiliaire double lin(int ir); char * itoa(int n, char *buff, int radix); void processLine(char *line, char separator, char **arg, int len); */ }; // void updatePos(long int *x,long int *y,int *a,int tl,int tr); void updatePos(void); void * ThreadPeriodico(void *arg); void * ThreadVelocidad(void *arg);
... chez moi ca compile. Peux-tu me redonner le contenu de ce fichier ?
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
1 mars 2007 à 11:27
1 mars 2007 à 11:27
salut.
Tu utilise quel commande pour compiler ?
Une fois, j'ai eu un problème un peu similaire (je ne me rappel plus exactement l'erreur du compilo par contre). Il y avait sur la ligne un caractère invisible qui n'était pas une espace. j'ai effacer la ligne et ce qu'il y avait avant et après, je l'ai réécri, et ça a fonctionner.
Tu utilise quel commande pour compiler ?
Une fois, j'ai eu un problème un peu similaire (je ne me rappel plus exactement l'erreur du compilo par contre). Il y avait sur la ligne un caractère invisible qui n'était pas une espace. j'ai effacer la ligne et ce qu'il y avait avant et après, je l'ai réécri, et ça a fonctionner.
mamiemando
Messages postés
33475
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 janvier 2025
7 815
1 mars 2007 à 19:22
1 mars 2007 à 19:22
Si tu es sous linux utilises la commandes dos2unix.
dos2unix *cpp dos2unix *hpp
hades06
Messages postés
16
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
10 novembre 2009
7 mars 2007 à 09:27
7 mars 2007 à 09:27
Pour repondre a mamiemando, le contenu de la librairie et du prog principale sont afficher sur le topic, jai mis les deux. Le librairie est dans mon premier post du topic.
J'ai essayer la commande dos2unix, mais il me dit bash: dos2unix: commande est introuvable
Pour repondre a char sniper je compile en fesant gcc wbodo.cpp wbodo.h
J'ai regarder si y avait pas des espaces cacher et apparement non j'ai pas l'impression qu'il y ai une erreur de syntaxe
J'ai essayer la commande dos2unix, mais il me dit bash: dos2unix: commande est introuvable
Pour repondre a char sniper je compile en fesant gcc wbodo.cpp wbodo.h
J'ai regarder si y avait pas des espaces cacher et apparement non j'ai pas l'impression qu'il y ai une erreur de syntaxe
mamiemando
Messages postés
33475
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 janvier 2025
7 815
7 mars 2007 à 10:29
7 mars 2007 à 10:29
Installe le paquet dosfstools.
dosfstools - Utilities to create and check MS-DOS FAT filesystems
hades06
Messages postés
16
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
10 novembre 2009
7 mars 2007 à 11:42
7 mars 2007 à 11:42
Je l'ai reinstaller et ca ne marche tjrs pas, j'ai toujours la meme erreur "wbodo.h:21: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘wbodo’" meme en testant sous un autre pc, sur fedora.
mamiemando
Messages postés
33475
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 janvier 2025
7 815
7 mars 2007 à 14:21
7 mars 2007 à 14:21
Tu as bien fait le dos2unix ? Peux-tu nous redonner le contenu de ce fichier parce que au dernières nouvelle il était syntaxiquement correcte. Tu peux aussi essayer de faire un copier coller de ce fichier (sauve le par exemple dans ton home) et essayer de le compiler pour voir si c'est le filesystem ou le code lui-même qui posent problème.
hades06
Messages postés
16
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
10 novembre 2009
7 mars 2007 à 14:29
7 mars 2007 à 14:29
Oui j'ai bien fait dos2unix
Par contenu du fichier tu parles bien du programme en lui meme le.cpp et le .h ?? si oui le .h est en commentaire 0 et le prog en commentaire 4 si c pas le cas je voie pas de quel contenu de fichier tu parles :s
J'ai essayer de copier coller le f ichier et de compiler, ca me donne exactement la meme errreure, j'ai aussi essayer en creant un nouvo fichier et de coller la librairie dedans et pareil, franchement c trop bizarre
Par contenu du fichier tu parles bien du programme en lui meme le.cpp et le .h ?? si oui le .h est en commentaire 0 et le prog en commentaire 4 si c pas le cas je voie pas de quel contenu de fichier tu parles :s
J'ai essayer de copier coller le f ichier et de compiler, ca me donne exactement la meme errreure, j'ai aussi essayer en creant un nouvo fichier et de coller la librairie dedans et pareil, franchement c trop bizarre
mamiemando
Messages postés
33475
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 janvier 2025
7 815
7 mars 2007 à 14:50
7 mars 2007 à 14:50
Je parle du fichier qui renvoie une erreur de compilation. Peux tu me le donner je vais essayer de voir si ca compile chez moi.
hades06
Messages postés
16
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
10 novembre 2009
7 mars 2007 à 15:00
7 mars 2007 à 15:00
Et beh le fichier qui renvoi l'erreur c'est celui du debut
"
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <math.h>
#include <string.h>
#include <pthread.h>
#include <time.h>
#define TCPBUF_SIZE 128
#define TBUF_RECV 7
#define TBUF_SEND 2
class wbodo {
public:
wbodo();
// Attributs de la classe
/***************** Fonction pour se connecter avec le serveur "sc12" *******************/
// Cette fonction place l'adresse IP et le numero de port
int setaddress(char *servername, int serverport);
// Cette fonction active la connection
int connexion();
// Cette fonction coupe la connection
void stop();
/* ***************** Methode pour controler le robot *************************** */
// VITESSE
// Cette fonction donne la vitesse linéaire et angulaire du robot en mm/s and crad/s
int setv(int v, int w);
// Cette fonction retourne la vitesse linéaire et angulaire du robot en mm/s and crad/s
int getv(float *v, float *w); // int getv(int *v, int *w) a la base
// ODOMETRIE
// Cette fonction reinitialise les valeur de l'odometrie a 0
int reset();
// Cette fonction donne les valeurs de l'odometrie en mm and crad
int setpos(int xm, int ym, int am);
// Cette fonction retourne les valeurs de l'odometrie en mm and crad
int getpos(float *xm, float *ym, float *am); //int getpos(int *xm, int *ym, int *am) a la base
// int getpos(float *xm, float *ym, float *am);
// Cette fonction active l'odometrie dans le robot. "Arrete par defaut"
int startodo();
// Cette fonction arrete l'odometrie dans le robot. "Arrete par defaut"
int stopodo();
// SONDES
// Cette fonction renvoie les valeurs des encodeurs a chaque periode de 40 ms
// 1:LEFT-FRONT 2:LEFT-BACK 3:RIGHT-BACK 4:RIGHT-FRONT
int getenc(int *enc1, int *enc2, int *enc3, int *enc4);
// Cette fonction rertourne le niveau de la batterie sur une echelle de 0-255
int getbat(int *bat);
/* Cette fonction retourne la valeur des sondes infra-rouge
int getirn(int *ir1,int *ir2);
int updatetics(void); */
private:
/*
int sock;
struct sockaddr_in server;
struct hostent *hp;
char buffer[TCPBUF_SIZE];
// Fonctions auxiliaire
double lin(int ir);
char * itoa(int n, char *buff, int radix);
void processLine(char *line, char separator, char **arg, int len);
*/
};
// void updatePos(long int *x,long int *y,int *a,int tl,int tr);
void updatePos(void);
void * ThreadPeriodico(void *arg);
void * ThreadVelocidad(void *arg);
#end#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <math.h>
#include <string.h>
#include <pthread.h>
#include <time.h>
#define TCPBUF_SIZE 128
#define TBUF_RECV 7
#define TBUF_SEND 2
class wbodo {
public:
wbodo();
// Attributs de la classe
/***************** Fonction pour se connecter avec le serveur "sc12" *******************/
// Cette fonction place l'adresse IP et le numero de port
int setaddress(char *servername, int serverport);
// Cette fonction active la connection
int connexion();
// Cette fonction coupe la connection
void stop();
/* ***************** Methode pour controler le robot *************************** */
// VITESSE
// Cette fonction donne la vitesse linéaire et angulaire du robot en mm/s and crad/s
int setv(int v, int w);
// Cette fonction retourne la vitesse linéaire et angulaire du robot en mm/s and crad/s
int getv(float *v, float *w); // int getv(int *v, int *w) a la base
// ODOMETRIE
// Cette fonction reinitialise les valeur de l'odometrie a 0
int reset();
// Cette fonction donne les valeurs de l'odometrie en mm and crad
int setpos(int xm, int ym, int am);
// Cette fonction retourne les valeurs de l'odometrie en mm and crad
int getpos(float *xm, float *ym, float *am); //int getpos(int *xm, int *ym, int *am) a la base
// int getpos(float *xm, float *ym, float *am);
// Cette fonction active l'odometrie dans le robot. "Arrete par defaut"
int startodo();
// Cette fonction arrete l'odometrie dans le robot. "Arrete par defaut"
int stopodo();
// SONDES
// Cette fonction renvoie les valeurs des encodeurs a chaque periode de 40 ms
// 1:LEFT-FRONT 2:LEFT-BACK 3:RIGHT-BACK 4:RIGHT-FRONT
int getenc(int *enc1, int *enc2, int *enc3, int *enc4);
// Cette fonction rertourne le niveau de la batterie sur une echelle de 0-255
int getbat(int *bat);
/* Cette fonction retourne la valeur des sondes infra-rouge
int getirn(int *ir1,int *ir2);
int updatetics(void); */
private:
/*
int sock;
struct sockaddr_in server;
struct hostent *hp;
char buffer[TCPBUF_SIZE];
// Fonctions auxiliaire
double lin(int ir);
char * itoa(int n, char *buff, int radix);
void processLine(char *line, char separator, char **arg, int len);
*/
};
// void updatePos(long int *x,long int *y,int *a,int tl,int tr);
void updatePos(void);
void * ThreadPeriodico(void *arg);
void * ThreadVelocidad(void *arg);
#end#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <math.h>
#include <string.h>
#include <pthread.h>
#include <time.h>
#define TCPBUF_SIZE 128
#define TBUF_RECV 7
#define TBUF_SEND 2
class wbodo {
public:
wbodo();
// Attributs de la classe
/***************** Fonction pour se connecter avec le serveur "sc12" *******************/
// Cette fonction place l'adresse IP et le numero de port
int setaddress(char *servername, int serverport);
// Cette fonction active la connection
int connexion();
// Cette fonction coupe la connection
void stop();
/* ***************** Methode pour controler le robot *************************** */
// VITESSE
// Cette fonction donne la vitesse linéaire et angulaire du robot en mm/s and crad/s
int setv(int v, int w);
// Cette fonction retourne la vitesse linéaire et angulaire du robot en mm/s and crad/s
int getv(float *v, float *w); // int getv(int *v, int *w) a la base
// ODOMETRIE
// Cette fonction reinitialise les valeur de l'odometrie a 0
int reset();
// Cette fonction donne les valeurs de l'odometrie en mm and crad
int setpos(int xm, int ym, int am);
// Cette fonction retourne les valeurs de l'odometrie en mm and crad
int getpos(float *xm, float *ym, float *am); //int getpos(int *xm, int *ym, int *am) a la base
// int getpos(float *xm, float *ym, float *am);
// Cette fonction active l'odometrie dans le robot. "Arrete par defaut"
int startodo();
// Cette fonction arrete l'odometrie dans le robot. "Arrete par defaut"
int stopodo();
// SONDES
// Cette fonction renvoie les valeurs des encodeurs a chaque periode de 40 ms
// 1:LEFT-FRONT 2:LEFT-BACK 3:RIGHT-BACK 4:RIGHT-FRONT
int getenc(int *enc1, int *enc2, int *enc3, int *enc4);
// Cette fonction rertourne le niveau de la batterie sur une echelle de 0-255
int getbat(int *bat);
/* Cette fonction retourne la valeur des sondes infra-rouge
int getirn(int *ir1,int *ir2);
int updatetics(void); */
private:
/*
int sock;
struct sockaddr_in server;
struct hostent *hp;
char buffer[TCPBUF_SIZE];
// Fonctions auxiliaire
double lin(int ir);
char * itoa(int n, char *buff, int radix);
void processLine(char *line, char separator, char **arg, int len);
*/
};
// void updatePos(long int *x,long int *y,int *a,int tl,int tr);
void updatePos(void);
void * ThreadPeriodico(void *arg);
void * ThreadVelocidad(void *arg);
#end#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <math.h>
#include <string.h>
#include <pthread.h>
#include <time.h>
#define TCPBUF_SIZE 128
#define TBUF_RECV 7
#define TBUF_SEND 2
class wbodo {
public:
wbodo();
// Attributs de la classe
/***************** Fonction pour se connecter avec le serveur "sc12" *******************/
// Cette fonction place l'adresse IP et le numero de port
int setaddress(char *servername, int serverport);
// Cette fonction active la connection
int connexion();
// Cette fonction coupe la connection
void stop();
/* ***************** Methode pour controler le robot *************************** */
// VITESSE
// Cette fonction donne la vitesse linéaire et angulaire du robot en mm/s and crad/s
int setv(int v, int w);
// Cette fonction retourne la vitesse linéaire et angulaire du robot en mm/s and crad/s
int getv(float *v, float *w); // int getv(int *v, int *w) a la base
// ODOMETRIE
// Cette fonction reinitialise les valeur de l'odometrie a 0
int reset();
// Cette fonction donne les valeurs de l'odometrie en mm and crad
int setpos(int xm, int ym, int am);
// Cette fonction retourne les valeurs de l'odometrie en mm and crad
int getpos(float *xm, float *ym, float *am); //int getpos(int *xm, int *ym, int *am) a la base
// int getpos(float *xm, float *ym, float *am);
// Cette fonction active l'odometrie dans le robot. "Arrete par defaut"
int startodo();
// Cette fonction arrete l'odometrie dans le robot. "Arrete par defaut"
int stopodo();
// SONDES
// Cette fonction renvoie les valeurs des encodeurs a chaque periode de 40 ms
// 1:LEFT-FRONT 2:LEFT-BACK 3:RIGHT-BACK 4:RIGHT-FRONT
int getenc(int *enc1, int *enc2, int *enc3, int *enc4);
// Cette fonction rertourne le niveau de la batterie sur une echelle de 0-255
int getbat(int *bat);
/* Cette fonction retourne la valeur des sondes infra-rouge
int getirn(int *ir1,int *ir2);
int updatetics(void); */
private:
/*
int sock;
struct sockaddr_in server;
struct hostent *hp;
char buffer[TCPBUF_SIZE];
// Fonctions auxiliaire
double lin(int ir);
char * itoa(int n, char *buff, int radix);
void processLine(char *line, char separator, char **arg, int len);
*/
};
// void updatePos(long int *x,long int *y,int *a,int tl,int tr);
void updatePos(void);
void * ThreadPeriodico(void *arg);
void * ThreadVelocidad(void *arg);
#end
"
son nom, wbodo.h, et l'erreur se trouve a la declaration de la classe wbodo.
"
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <math.h>
#include <string.h>
#include <pthread.h>
#include <time.h>
#define TCPBUF_SIZE 128
#define TBUF_RECV 7
#define TBUF_SEND 2
class wbodo {
public:
wbodo();
// Attributs de la classe
/***************** Fonction pour se connecter avec le serveur "sc12" *******************/
// Cette fonction place l'adresse IP et le numero de port
int setaddress(char *servername, int serverport);
// Cette fonction active la connection
int connexion();
// Cette fonction coupe la connection
void stop();
/* ***************** Methode pour controler le robot *************************** */
// VITESSE
// Cette fonction donne la vitesse linéaire et angulaire du robot en mm/s and crad/s
int setv(int v, int w);
// Cette fonction retourne la vitesse linéaire et angulaire du robot en mm/s and crad/s
int getv(float *v, float *w); // int getv(int *v, int *w) a la base
// ODOMETRIE
// Cette fonction reinitialise les valeur de l'odometrie a 0
int reset();
// Cette fonction donne les valeurs de l'odometrie en mm and crad
int setpos(int xm, int ym, int am);
// Cette fonction retourne les valeurs de l'odometrie en mm and crad
int getpos(float *xm, float *ym, float *am); //int getpos(int *xm, int *ym, int *am) a la base
// int getpos(float *xm, float *ym, float *am);
// Cette fonction active l'odometrie dans le robot. "Arrete par defaut"
int startodo();
// Cette fonction arrete l'odometrie dans le robot. "Arrete par defaut"
int stopodo();
// SONDES
// Cette fonction renvoie les valeurs des encodeurs a chaque periode de 40 ms
// 1:LEFT-FRONT 2:LEFT-BACK 3:RIGHT-BACK 4:RIGHT-FRONT
int getenc(int *enc1, int *enc2, int *enc3, int *enc4);
// Cette fonction rertourne le niveau de la batterie sur une echelle de 0-255
int getbat(int *bat);
/* Cette fonction retourne la valeur des sondes infra-rouge
int getirn(int *ir1,int *ir2);
int updatetics(void); */
private:
/*
int sock;
struct sockaddr_in server;
struct hostent *hp;
char buffer[TCPBUF_SIZE];
// Fonctions auxiliaire
double lin(int ir);
char * itoa(int n, char *buff, int radix);
void processLine(char *line, char separator, char **arg, int len);
*/
};
// void updatePos(long int *x,long int *y,int *a,int tl,int tr);
void updatePos(void);
void * ThreadPeriodico(void *arg);
void * ThreadVelocidad(void *arg);
#end#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <math.h>
#include <string.h>
#include <pthread.h>
#include <time.h>
#define TCPBUF_SIZE 128
#define TBUF_RECV 7
#define TBUF_SEND 2
class wbodo {
public:
wbodo();
// Attributs de la classe
/***************** Fonction pour se connecter avec le serveur "sc12" *******************/
// Cette fonction place l'adresse IP et le numero de port
int setaddress(char *servername, int serverport);
// Cette fonction active la connection
int connexion();
// Cette fonction coupe la connection
void stop();
/* ***************** Methode pour controler le robot *************************** */
// VITESSE
// Cette fonction donne la vitesse linéaire et angulaire du robot en mm/s and crad/s
int setv(int v, int w);
// Cette fonction retourne la vitesse linéaire et angulaire du robot en mm/s and crad/s
int getv(float *v, float *w); // int getv(int *v, int *w) a la base
// ODOMETRIE
// Cette fonction reinitialise les valeur de l'odometrie a 0
int reset();
// Cette fonction donne les valeurs de l'odometrie en mm and crad
int setpos(int xm, int ym, int am);
// Cette fonction retourne les valeurs de l'odometrie en mm and crad
int getpos(float *xm, float *ym, float *am); //int getpos(int *xm, int *ym, int *am) a la base
// int getpos(float *xm, float *ym, float *am);
// Cette fonction active l'odometrie dans le robot. "Arrete par defaut"
int startodo();
// Cette fonction arrete l'odometrie dans le robot. "Arrete par defaut"
int stopodo();
// SONDES
// Cette fonction renvoie les valeurs des encodeurs a chaque periode de 40 ms
// 1:LEFT-FRONT 2:LEFT-BACK 3:RIGHT-BACK 4:RIGHT-FRONT
int getenc(int *enc1, int *enc2, int *enc3, int *enc4);
// Cette fonction rertourne le niveau de la batterie sur une echelle de 0-255
int getbat(int *bat);
/* Cette fonction retourne la valeur des sondes infra-rouge
int getirn(int *ir1,int *ir2);
int updatetics(void); */
private:
/*
int sock;
struct sockaddr_in server;
struct hostent *hp;
char buffer[TCPBUF_SIZE];
// Fonctions auxiliaire
double lin(int ir);
char * itoa(int n, char *buff, int radix);
void processLine(char *line, char separator, char **arg, int len);
*/
};
// void updatePos(long int *x,long int *y,int *a,int tl,int tr);
void updatePos(void);
void * ThreadPeriodico(void *arg);
void * ThreadVelocidad(void *arg);
#end#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <math.h>
#include <string.h>
#include <pthread.h>
#include <time.h>
#define TCPBUF_SIZE 128
#define TBUF_RECV 7
#define TBUF_SEND 2
class wbodo {
public:
wbodo();
// Attributs de la classe
/***************** Fonction pour se connecter avec le serveur "sc12" *******************/
// Cette fonction place l'adresse IP et le numero de port
int setaddress(char *servername, int serverport);
// Cette fonction active la connection
int connexion();
// Cette fonction coupe la connection
void stop();
/* ***************** Methode pour controler le robot *************************** */
// VITESSE
// Cette fonction donne la vitesse linéaire et angulaire du robot en mm/s and crad/s
int setv(int v, int w);
// Cette fonction retourne la vitesse linéaire et angulaire du robot en mm/s and crad/s
int getv(float *v, float *w); // int getv(int *v, int *w) a la base
// ODOMETRIE
// Cette fonction reinitialise les valeur de l'odometrie a 0
int reset();
// Cette fonction donne les valeurs de l'odometrie en mm and crad
int setpos(int xm, int ym, int am);
// Cette fonction retourne les valeurs de l'odometrie en mm and crad
int getpos(float *xm, float *ym, float *am); //int getpos(int *xm, int *ym, int *am) a la base
// int getpos(float *xm, float *ym, float *am);
// Cette fonction active l'odometrie dans le robot. "Arrete par defaut"
int startodo();
// Cette fonction arrete l'odometrie dans le robot. "Arrete par defaut"
int stopodo();
// SONDES
// Cette fonction renvoie les valeurs des encodeurs a chaque periode de 40 ms
// 1:LEFT-FRONT 2:LEFT-BACK 3:RIGHT-BACK 4:RIGHT-FRONT
int getenc(int *enc1, int *enc2, int *enc3, int *enc4);
// Cette fonction rertourne le niveau de la batterie sur une echelle de 0-255
int getbat(int *bat);
/* Cette fonction retourne la valeur des sondes infra-rouge
int getirn(int *ir1,int *ir2);
int updatetics(void); */
private:
/*
int sock;
struct sockaddr_in server;
struct hostent *hp;
char buffer[TCPBUF_SIZE];
// Fonctions auxiliaire
double lin(int ir);
char * itoa(int n, char *buff, int radix);
void processLine(char *line, char separator, char **arg, int len);
*/
};
// void updatePos(long int *x,long int *y,int *a,int tl,int tr);
void updatePos(void);
void * ThreadPeriodico(void *arg);
void * ThreadVelocidad(void *arg);
#end#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <math.h>
#include <string.h>
#include <pthread.h>
#include <time.h>
#define TCPBUF_SIZE 128
#define TBUF_RECV 7
#define TBUF_SEND 2
class wbodo {
public:
wbodo();
// Attributs de la classe
/***************** Fonction pour se connecter avec le serveur "sc12" *******************/
// Cette fonction place l'adresse IP et le numero de port
int setaddress(char *servername, int serverport);
// Cette fonction active la connection
int connexion();
// Cette fonction coupe la connection
void stop();
/* ***************** Methode pour controler le robot *************************** */
// VITESSE
// Cette fonction donne la vitesse linéaire et angulaire du robot en mm/s and crad/s
int setv(int v, int w);
// Cette fonction retourne la vitesse linéaire et angulaire du robot en mm/s and crad/s
int getv(float *v, float *w); // int getv(int *v, int *w) a la base
// ODOMETRIE
// Cette fonction reinitialise les valeur de l'odometrie a 0
int reset();
// Cette fonction donne les valeurs de l'odometrie en mm and crad
int setpos(int xm, int ym, int am);
// Cette fonction retourne les valeurs de l'odometrie en mm and crad
int getpos(float *xm, float *ym, float *am); //int getpos(int *xm, int *ym, int *am) a la base
// int getpos(float *xm, float *ym, float *am);
// Cette fonction active l'odometrie dans le robot. "Arrete par defaut"
int startodo();
// Cette fonction arrete l'odometrie dans le robot. "Arrete par defaut"
int stopodo();
// SONDES
// Cette fonction renvoie les valeurs des encodeurs a chaque periode de 40 ms
// 1:LEFT-FRONT 2:LEFT-BACK 3:RIGHT-BACK 4:RIGHT-FRONT
int getenc(int *enc1, int *enc2, int *enc3, int *enc4);
// Cette fonction rertourne le niveau de la batterie sur une echelle de 0-255
int getbat(int *bat);
/* Cette fonction retourne la valeur des sondes infra-rouge
int getirn(int *ir1,int *ir2);
int updatetics(void); */
private:
/*
int sock;
struct sockaddr_in server;
struct hostent *hp;
char buffer[TCPBUF_SIZE];
// Fonctions auxiliaire
double lin(int ir);
char * itoa(int n, char *buff, int radix);
void processLine(char *line, char separator, char **arg, int len);
*/
};
// void updatePos(long int *x,long int *y,int *a,int tl,int tr);
void updatePos(void);
void * ThreadPeriodico(void *arg);
void * ThreadVelocidad(void *arg);
#end
"
son nom, wbodo.h, et l'erreur se trouve a la declaration de la classe wbodo.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
7 mars 2007 à 17:20
7 mars 2007 à 17:20
Salut.
ote moi d'un doute, tu tape EXACTEMENT gcc wbodo.cpp wbodo.h ?
Si oui, c'est inutile de compiler un .h !
ote moi d'un doute, tu tape EXACTEMENT gcc wbodo.cpp wbodo.h ?
Si oui, c'est inutile de compiler un .h !
hades06
Messages postés
16
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
10 novembre 2009
7 mars 2007 à 17:23
7 mars 2007 à 17:23
Ouai je tape tout ca !
Ah ouai c inutile ??? On a tjrs fait comme ca avec mon binome pendant les tp (mais en c), en plus sans la librairie il me met au tacket d'erreur pis sans la librairie le .cpp manque de soure, je viends d'essayer et ca merde
Ah ouai c inutile ??? On a tjrs fait comme ca avec mon binome pendant les tp (mais en c), en plus sans la librairie il me met au tacket d'erreur pis sans la librairie le .cpp manque de soure, je viends d'essayer et ca merde
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
7 mars 2007 à 17:33
7 mars 2007 à 17:33
Re;
pourquoi un #end à la fin ? je voi pas de #if ?
pourquoi tu copie colle autant de foi ton code ?
essai de compiler avec g++ plutôt que gcc
Comme mamiemando, une foi que j'ai virer le begauilage et le #end, ça compile
pourquoi un #end à la fin ? je voi pas de #if ?
pourquoi tu copie colle autant de foi ton code ?
essai de compiler avec g++ plutôt que gcc
Comme mamiemando, une foi que j'ai virer le begauilage et le #end, ça compile
hades06
Messages postés
16
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
10 novembre 2009
14 mars 2007 à 09:24
14 mars 2007 à 09:24
Dsl du retard, j'ai pas tout le temps le net !
En fait le if est tout au debut du prog. apparement j'ai oublier de le mettre :s, "#ifndef _wbodo".
J'ai essayer g++, ca me met la meme erruer, par contre je sais pas ce que c'st le degauilage.
En fait le if est tout au debut du prog. apparement j'ai oublier de le mettre :s, "#ifndef _wbodo".
J'ai essayer g++, ca me met la meme erruer, par contre je sais pas ce que c'st le degauilage.