Bonjour à tous,
Je viens vous donner quelques nouvelles de mon projet

.
As-tu bien vérifié les paramètres de ta com série partout? Partout = Fox + PC + PIC.
Ce qu'il y a à vérifier:
Baud Rate? Bit de parité? Longueur du Start? Du Stop? Contrôle de flux?
Oui j'ai vérifié les paramètres de ma com série, en fait le problème venait du logiciel qui est donné sur le site de fribotte car il était configuré de la façon suivante :
- 1 bit de start
- 1 bit de stop
- 8 bits de donnée
- 2400 bauds
Donc après avoir configuré un bon petit logiciel sur Ubuntu pour bidouiller le port série (cutecom) avec ces paramètres, j'ai obtenu de meilleurs résultats

.
En effet j'ai sniffé ce qu'envoyait le logiciel fournit par fribotte et voici un bout de résultat :
00000000: ff 00 00 80 ff 00 01 80 ff 00 02 80 ff 00 03 80
00000010: ff 00 04 80 ff 00 05 80 ff 00 06 80 ff 00 07 80
Ici j'ai juste activé les 8 servomoteurs. On peut constater que les informations envoyées sont en hexadécimal et elles correspondent bien au schéma suivant :
255 (par défaut) 0 (adresse de ma carte) 1 (numéro du servomoteur) 129 (un nombre de 1 à 255 pour définir la rotation du servomoteur).
Une fois les bonnes informations récupérées, j'ai essayé de les envoyer avec mon programme sur le port /dev/ttyS1 de la Fox G20. Mais le port de la Fox n'est pas configuré de la même manière décrite un peu plus haut. J'ai donc entrepris de le paramétrer, mais je bloque un peu

...
Pour le paramétrer j'utilise la commande linux "stty". Par exemple voici la configuration par défaut du port /dev/ttyS1 de la Fox G20 :
debarm:~# stty -a -F /dev/ttyS1
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
Déjà nous pouvons constater que les bauds étaient trop élevées, pour les changer il suffit d'entrer la commande : stty 2400 < /dev/ttyS1 (pour les vieux) ou stty 2400 -F /dev/ttyS1 (pour les jeunes)
Après la commande on peut observer le résultat :
debarm:~# stty 2400 -F /dev/ttyS1
debarm:~# stty -a -F /dev/ttyS1
speed 2400 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd "cs8" hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
Mais je n'arrive qu'à configurer les bauds...
Est ce qu'il y a qu'un seul bit de start et un seul bit de stop dans cette configuration ?
Je sais que "-cstopb" signifie que le port utilise qu'un seul bit d'arrêt par caractère, mais cette option et utilisé normalement en entrée...
J'ai oublié, il n'y a pas besoin de configurer le nombre de bit de donné car il est déjà de 8 (je l'ai mit entre guillemet en vert).
Malgré que je ne sais pas si la configuration est parfaite, j'ai tenté de lire ce qu'envoyait mon programme sur le port /dev/ttyS1 de la Fox G20 avec cutecom et voici le résultat en image :

Lien :
http://img27.imageshack.us/i/cutecom.png/ (la résolution est beaucoup plus grande)
Sur la capture d'écran on voit bien que le contenu du fichier PosX.txt est envoyé sur le port série, mais je ne sais pas pourquoi il y a un saut de ligne... Est ce que cela aura un impact sur le contrôle des servomoteurs ?
Pour finir j'ai gardé les 4 premières lignes du fichier PosX.txt et j'ai essayé de l'envoyer à ma carte qui contrôle les servomoteurs. Lorsque j'utilise TxD du port série rien ne se passe, et lorsque j'utilise RxD le premier servomoteur bouge bizarrement.
Normalement pour envoyer mes données avec la Fox G20 je dois utiliser TxD ou RxD ?
Sinon je pense que cela ne fonctionne pas car comme il est dit sur le site de fribotte : "la carte 8 servomoteurs n'accepte que les niveaux logiques RS232-TTL ( 0V pour le 0 ; 5V pour le 1 )" et le port série de la Fox G20 ne fournit que du 3,3V maximum.
Ne pensez vous pas que j'ai besoin d'un petit adaptateur pour convertir les signaux de la Fox G20 en niveaux logiques TTL ?
EDIT: Je ne sais plus si je l'ai dit avant mais dans mon programme pour recopier le contenu du fichier PosX.txt sur le port série j'ai deux solutions, soit j'écrase le contenu de /dev/ttyS1 puis j'écris une ligne, puis je reécrase, j'écris la deuxième ligne, ETC. Ou alors j'écris ligne après ligne sans écraser le contenu. Je ne sais pas si ça change quelque chose pour le port série.
Je vous remercie d'avance ! Enfin je te remerci d'avance Leon