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

  FORUM HardWare.fr
  Programmation
  C++

  open, read, write sous linux j ai un chtit probleme

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

open, read, write sous linux j ai un chtit probleme

n°423657
xilebo
noone
Posté le 11-06-2003 à 12:02:46  profilanswer
 

salut,
 
j ai enfin reussi a installer le module lirc (www.lirc.org) sous linux familiar (0.7) sur un PDA iPAQ 3850
 
pour lire les donnees sur le port infrarouge il suffit donc de faire un open sur /dev/lirc et ensuite de faire read... jusque la ca marche j arrive a lire des donnees.
 
par contre mon write ne marche pas . Pire, la fonction ne quitte pas avec un message d erreur mais elle bloque...
 
voici mon code :  
 

Code :
  1. #include <unistd.h>
  2. #include <stdio.h>
  3. #include <fcntl.h>
  4. #include <errno.h>
  5. #include <string.h>
  6. #include <termios.h>
  7. #include <pthread.h>
  8. #include <time.h>
  9. #include "lirc.h"
  10. #define INVALID_HANDLE_VALUE -1
  11. #define STATE_PULSE 1
  12. #define STATE_SPACE 2
  13. static int hIR = INVALID_HANDLE_VALUE;
  14. static lirc_t irNECTrame[66];
  15. static void EncodeNec(lirc_t dwCode,lirc_t dwInstruction1,lirc_t dwInstruction2);
  16. int main(int /*argc*/,char * /*argv[]*/){
  17. int i;
  18. hIR = open("/dev/lirc" ,O_RDWR | O_NDELAY | O_NOCTTY);
  19. if (hIR == INVALID_HANDLE_VALUE) {
  20.  printf("Unable to open IR port - %s\n", strerror(errno));
  21.  return 0;
  22. }
  23. if (hIR != INVALID_HANDLE_VALUE) {
  24. unsigned long recMode;
  25.  if (ioctl(hIR, LIRC_GET_REC_MODE, &recMode) == -1 ) {
  26.   printf("error - %s\n", strerror(errno));
  27.  }
  28.  if (ioctl(hIR, LIRC_GET_SEND_MODE, &recMode) == -1 ) {
  29.   printf("error - %s\n", strerror(errno));
  30.   }
  31. i = 0;
  32. printf("Encoding ...\n" );
  33. EncodeNec(0x00000CF2,0x00000048,0x000000B7);
  34. printf("Sending ...\n" );
  35. while (i < 10) {
  36.  int j;
  37.  lirc_t k;
  38.    for (j=0 ;j < 66 ; j++) {
  39.   printf("%2.2X ",irNECTrame[j]);
  40.  }
  41.  printf("\n" );
  42.  k = irNECTrame[0];
  43.  j = write (hIR,&k,4);
  44.  if (j == -1) {
  45.   printf("error - %s\n", strerror(errno));
  46.  }
  47.  else {
  48.   printf("trame %d : Written %d bytes...\n",i,j);
  49.  }
  50.  sleep(1);
  51.  i++;
  52. }
  53. return 1;}


 
 
ai je fait une erreur quelque part ?

mood
Publicité
Posté le 11-06-2003 à 12:02:46  profilanswer
 

n°423660
xilebo
noone
Posté le 11-06-2003 à 12:04:30  profilanswer
 

ps : le code est porc c clair mais j ai fait ca vite fait. c pour tester.

n°423896
xilebo
noone
Posté le 11-06-2003 à 14:37:43  profilanswer
 

:)

n°424194
xilebo
noone
Posté le 11-06-2003 à 20:09:11  profilanswer
 

:(

n°424217
Ace17
Posté le 11-06-2003 à 20:47:53  profilanswer
 

J'y connais strictement rien a la l'utilisation des ports infrarouge, mais c'est juste une idée comme ca en espérant t'aider. Ta fonction write, peut etre qu'elle attend une réponse de l'autre coté, non?

n°424222
xilebo
noone
Posté le 11-06-2003 à 20:55:13  profilanswer
 

c bon j ai trouvé (et j ai honte la), en fait mon write se passait bien mais je faisais un write de beaucoup (environ 0x100000XX) donc en micro seconde ca fait finalement beaucoup.
 
 
desolé d avoir derangé :-)


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

  open, read, write sous linux j ai un chtit probleme

 

Sujets relatifs
problème de dateProbleme avec les regex
Problème avec un tableau HTML dynamique[programmation robot] problème avec un timer...
Problème de création de variableProblème Licence
Problème de caratere ' dans un formulaire[Flash] Envoyer un E-mail ? [problème résolu]
[open gl] mon prog' n'affiche quelque chose qu'en fenetre plein écranProblème de tableau dynamique
Plus de sujets relatifs à : open, read, write sous linux j ai un chtit probleme


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