Port série, Linux & Utilisation non-standard - C - Programmation
Marsh Posté le 22-02-2005 à 14:01:28
tu vas devoir utiliser les operateurs de décalage de bits << et >>
termios.h doit être suffisant...
Marsh Posté le 23-02-2005 à 11:36:24
Je pensse que c'est ok pour termios, mais maintenant je dois traiter les données, donc à la base j'ai 2 caractères contenu dans "buf", et c'est là que je vois pas vraiment comment faire
Je dois séparer les 3 premiers bits, ainsi que les 13 autres, dans 2 entiers différents.
J'ai éventuellement une petite idée mais je ne sais pas si ca va marcher ( en utilisant justement les opérateurs binaires que tu m'as conseillé western ).
Soit les entiers int1 et int2 et la chaine de caractère char
int1 = char[1]
int2 = char[2]
Possible?
Marsh Posté le 23-02-2005 à 11:53:55
désolé, je n'ai pas le courage pour expliquer les trucs sur les pointeurs en C...
Si tu te connais un minimum, fais des essais de programmations, puis utilise un debugger (gdb) et détecteur de fuite de mémoire (valgrind)... Le dernier logiciel à utiliser est le testeur de performances (gprof)
Marsh Posté le 23-02-2005 à 11:54:00
quickman a écrit : Je dois séparer les 3 premiers bits, ainsi que les 13 autres, dans 2 entiers différents. |
Oui, avec des 'unsigned'.
Ceci peut aider...
http://mapage.noos.fr/emdel/clib/ed/inc/bits.h
Marsh Posté le 23-02-2005 à 12:49:14
cricri_ a écrit : Pourquoi seulement des unsigned ? |
Parce que le comportement des opérateur bits sur des signed dépend de l'implémentation. Pour être portable, mieux vaut éviter les signed...
Marsh Posté le 22-02-2005 à 10:21:52
Bonjour!
J'essaye de coder un programme avec pour objectif de traiter des données très normalisées provenant du port série. La plateforme de reception est sous linux.
Pour expliquer simplement ce qui arrive par le port série, chaque information est constitué de 2 packets. Dans chaque packet, les 3 premiers bits servent à l'identification de l'information ( 2 premiers bits pour le type d'info. et le dernier pour le numéro du packet ). Les informations ne sont pas envoyées à interval regulier, cependant on peut estimer environ 10 informations par secondes, pas vraiment besoin de grande vitesse donc. Il y a pas de système de correction d'erreur ou même de détection.
Je me suis pas mal renseigné la dessus et visiblement, c'est termios.h qui est désigné pour tout ce qui est E/S sur port série sous linux. Mais il me reste plusieurs questions là dessus, par exemple, est-ce que termios.h me permettra de faire ce que je veux ( à savoir recuperer les infos pour pouvoir les traiter suivant leurs types ) ? Et comment faire pour traiter les infos bit par bit ( apparement termios.h traite ce qui provient du port série comme s'il s'agissait de caractères, hors dans mon cas pas vraiment, si je pouvais diviser chaque packet dans un tableau, où chaques cases correspondrait à un bit, je suis sur que ca serait pas mal exemple: packet[1][1] pour le premier bit du premier packet et packet[2][6] pour le 6eme bit du second packet ).
Merci d'avance, j'attend vos réponses avec impatience