IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

ecrire un entier dans un descripteur de fichier


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 18
    Par défaut ecrire un entier dans un descripteur de fichier
    Bonjour,
    J'utilise un descripteur de fichier pour lire et ecire dans la ROM d'une carte.
    Pour la lecture pas de probléme.
    Pour l'ecriture ça se corse , je voudrais ecrire un entier sur 4 octets (un int dans mon cas).
    je fais donc un
    write (fd, entier , 4)
    l'appel me renvoie -1 avec ERRNO = 22 (argument invalide)
    J'ai l'impression que write ne permet d'ecrire uniquement des chaines de caractères et rien d'autre.
    Auriez vu une astuce (conversion en binaire + ecriture avec une autre fonction)??
    parce que là je sèche
    Merci

  2. #2
    Membre éclairé

    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2005
    Messages : 464
    Par défaut
    int val = 4 ;
    write (fd, (char*)&val, sizeof(val) ) ;

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 18
    Par défaut
    Pas mal cette solution j'adore !!!
    mais ça ne marche pas
    write renvoie toujours -1 avec un errno = 0 (??!!??)

  4. #4
    Membre éclairé

    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2005
    Messages : 464
    Par défaut
    J'ai déjà fonctionné ainsi ss pb pour une EEPROM,
    Essaie en réinitialisant ta cpu, confirme que tu testes le retour de open() avec le mode en écriture et que tu fermes ensuite le fd.
    Fais aussi un dmesg pour voir si des erreurs sont notifiées par le driver de l'EEPROM.

    Dans quel environnement materiel/logiciel est tu ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 18
    Par défaut
    Je teste bien le retour de open pas de pb (de tte maniere j'arrive a lire)
    par contre je fais un open en Lecture et Ecriture => je vais essayer en ecriture seulement pour voir ....
    le dmesg est bon il n'y a pas d'erreur.
    Je travaille sous Linux avec fedora 6 pour le materiel je ne sais pas excactement
    L'EEPROM en question est celle d'une carte modem et je la pilote en me servant de MTD (je sais pas si tu avais utilise ça ?)
    Ce qui me permet de voir la ROM dans /dev/mtd0 de faire un open sur le device etc ...
    par contre je viens d'essayer avec un fopen au lieu de open
    fopen ("/dev/mtd0" , "rw")
    et d'utiliser la fonction fwrite qui permet d'ecrire des entier justement et là l'errno me dit "bad file descriptor"
    Je galère vraiment pour ecrire dans cette ROM !!!!!!

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 851
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nicoesenlamierda Voir le message
    Je teste bien le retour de open pas de pb (de tte maniere j'arrive a lire)
    par contre je fais un open en Lecture et Ecriture => je vais essayer en ecriture seulement pour voir ....
    le dmesg est bon il n'y a pas d'erreur.
    Je travaille sous Linux avec fedora 6 pour le materiel je ne sais pas excactement
    L'EEPROM en question est celle d'une carte modem et je la pilote en me servant de MTD (je sais pas si tu avais utilise ça ?)
    Ce qui me permet de voir la ROM dans /dev/mtd0 de faire un open sur le device etc ...
    par contre je viens d'essayer avec un fopen au lieu de open
    fopen ("/dev/mtd0" , "rw")
    et d'utiliser la fonction fwrite qui permet d'ecrire des entier justement et là l'errno me dit "bad file descriptor"
    Je galère vraiment pour ecrire dans cette ROM !!!!!!
    Ne fait pas de fopen. fopen c'est un mode buffer. Pour un fichier disque c'est parfait mais pour une EEPROM...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int val=125;
    int file;
     
    file=open("/dev/mtd0", O_WRONLY|O_BINARY);   // Eventuellement rajouter O_APPEND
    write(file, &val, sizeof(val)); // pas la peine de caster en char* vu que write reçoit un void*)
    close(file);
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 8
    Dernier message: 07/03/2011, 17h02
  2. ecrire un entier dans un fichier
    Par alexendre dans le forum C
    Réponses: 2
    Dernier message: 15/05/2009, 11h47
  3. Lire et ecrire un entier a partir d'un fichier TXT
    Par Viscapon dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 11/06/2008, 23h49
  4. Ecrire un entier dans un fichier
    Par Kylie - XX dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 03/06/2008, 19h59
  5. Ecrire des entiers dans un fichier local
    Par Rodrigue dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/03/2008, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo