Sk0r | Bonsoir,
Désolé de faire remonter ce topic mais j'ai réussi à faire marcher ce satané robot en partie grace à vos renseignements et j'aimerais faire part de mon code à la communauté, en esperant que cela aidera quelqu'un dans la même situation que moi.
Comme conseillé par Taz, j'ai abandonné les sprintf() pour implémenter les caractères de controle tout en changeant ma méthode d'envoi de commande. C'est plus laid, surement moins efficace au niveau du temps d'execution mais ca marche:
Code :
- char SP = 0x20
- char LF = 0x0A
- void envoyerCommande(int fd, char* prefixeArticulation, float angleDeDeplacement, int vitesse)
- {
- char tabAngle[4];
- char tabVitesse[2];
- sprintf(tabAngle, "%0.1f", angleDeDeplacement);
- sprintf(tabVitesse, "%d", vitesse);
- /*Envoi de la commande*/
- /*Initiale de l'articulation à deplacer*/
- write(fd, prefixeArticulation, 1);
- tcdrain(fd); /*Bibli "termios.h" - Attente envoi caractères*/
- /*Angle de rotation*/
- write(fd, tabAngle, 4);
- tcdrain(fd);
- /*Séparateur angle/vitesse*/
- write(fd, ":", 3);
- tcdrain(fd);
- /*Vitesse*/
- write(fd, tabVitesse, 2);
- tcdrain(fd);
- /*Espace*/
- write(fd, SP, 1);
- tcdrain(fd);
- /*Saut de ligne*/
- write(fd, LF, 1);
- tcdrain(fd);
- }
|
Voili, voilou, je viens de ré-écrire le code à l'instant en 5 minutes donc il se peut que j'ai oublié 2-3 trucs voir fait des erreurs, je vérifierait demain matin
Encore merci à tous pour votre aide et votre promptitude à répondre à ma demande |