|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() said said Inscription : août 2010 Messages : 16 ![]() |
Bonjour à tous,
J'ai fait le programme suivant pour envoyer une ligne de commande au port serie , puis récupérer la réponse. mais malheureusement, je n'arrive pas à récupérer l'information. Code :
|
||
|
|
00
|
|
|
#2 | ||
![]() ![]() Yoann SculoIngénieur Linux Embarqué Inscription : janvier 2006 Messages : 686 ![]() |
Il te faudrait un peu plus de gestion d'erreur pour nous aiguiller.
Un truc du genre : Code :
|
||
|
00
|
|
|
#3 |
|
Membre habitué
![]() Ingénieur logiciel embarqué Franco-allemand Inscription : avril 2008 Messages : 46 ![]() |
meme avis que le modérateur ci-dessus.
Après pour le read = 0, je pense que le problème vient de l option O_NDELAY lorsque tu récupères le file descriptor, le read est alors non-bloquant. En conséquence lorsque tu fais une lecture, read t indique qu il n a rien dans son buffer UART car ton périphérique ne t as pas encore répondu. Meilleures salutations. |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() Ingénieur systèmes embarqués Inscription : juin 2009 Messages : 1 709 ![]() |
Si tu essayes de lire ce que tu viens d'écrire, il me semble que ce n'est pas possible. Si j'ai bonne mémoire, j'ai lu un sujet sur Developpez où le PO voulait faire ça et quelqu'un avait répondu que écrire sur le port série donne un signal au fil TX et que le lire lit le signal du fil RX. S'ils ne sont pas reliés, il n'y a pas de raison que le signal de sortie boucle sur l'entrée.
__________________
Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^ Pour vos problèmes d'embarqué, utilisez le forum dédié ! |
|
00
|
|
|
#5 | ||||
|
Invité de passage
![]() said said Inscription : août 2010 Messages : 16 ![]() |
Enfin j'ai trouver la solution: il me fallait déclarer buffer (entete) en tant que tableau et rajouter la fonction :
Code :
Code :
|
||||
|
|
00
|
|
|
#6 |
![]() ![]() Yoann SculoIngénieur Linux Embarqué Inscription : janvier 2006 Messages : 686 ![]() |
Ravi que ça fonctionne.
Néanmoins, je suis curieux. Je ne comprends pas trop ce qu'apporte l'appel à fcntl qui va si je ne m'abuse paramétrer ton file descriptor à 0 (O_RDONLY). En faisant ça tu écrases complètement ta configuration. Généralement, fcntl et F_SETFL est plutôt utilisé avec F_GETFL pour ne pas perdre ta configuration initiale. Bref, dans la mesure où tu es en O_RDWR et O_NDELAY (=O_NONBLOCK) j'ai du mal à comprendre en quoi l'appel à fcntl corrige le problème. Je me mettrais bien dans les mêmes conditions pour tester, mais je n'ai pas le même contexte. Si quelqu'un a une explication, je suis preneur. Quoi qu'il en soit, ssssa1983 si tu peux le faire, je te conseille vivement de gérer tous les cas d'erreurs. Ça n'en sera que mieux pour les potentielles prochaines erreurs. |
|
00
|
Copyright © 2000-2013 - www.developpez.com