Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1303 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Port série, Linux & Utilisation non-standard

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Port série, Linux & Utilisation non-standard

n°989555
quickman
Posté le 22-02-2005 à 10:21:52  profilanswer
 

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 :)

mood
Publicité
Posté le 22-02-2005 à 10:21:52  profilanswer
 

n°989771
quickman
Posté le 22-02-2005 à 13:44:01  profilanswer
 

:'( personne ne saurait m'aider ?

n°989791
western
AJMM
Posté le 22-02-2005 à 14:01:28  profilanswer
 

tu vas devoir utiliser les operateurs de décalage de bits << et >>
termios.h doit être suffisant...

n°990967
quickman
Posté le 23-02-2005 à 11:36:24  profilanswer
 

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?


Message édité par quickman le 23-02-2005 à 11:47:29
n°990994
western
AJMM
Posté le 23-02-2005 à 11:53:55  profilanswer
 

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)

n°990995
Emmanuel D​elahaye
C is a sharp tool
Posté le 23-02-2005 à 11:54:00  profilanswer
 

quickman a écrit :

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?


Oui, avec des 'unsigned'.
 
Ceci peut aider...
http://mapage.noos.fr/emdel/clib/ed/inc/bits.h


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°991005
cricri_
Posté le 23-02-2005 à 12:02:48  profilanswer
 

Pourquoi seulement des unsigned ?

n°991062
Emmanuel D​elahaye
C is a sharp tool
Posté le 23-02-2005 à 12:49:14  profilanswer
 

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...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°991079
cricri_
Posté le 23-02-2005 à 13:09:46  profilanswer
 

Merci ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Port série, Linux & Utilisation non-standard

 

Sujets relatifs
[Aide pour débutant] Programme pour lire info sur port parallèle[PHP] Connexion linux à db2(AS400) via php
port apachLe Port parallèle
[python] thread et port serieSOS utilisation de AXIS pour dvp un webservice
PHP + crystal report + linux ?J2ME -> Utilisation de KXmlRPC: blocage au 256ème caractère de réponse
[résolu] Portage Windows Linux: apparition de warnings 
Plus de sujets relatifs à : Port série, Linux & Utilisation non-standard


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR