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

 C Discussion :

Décodage fichier binaire


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Par défaut Décodage fichier binaire
    Bonjour à tous,
    Je fais appel à vos service car j'ai un petit problème sur mon programme de C.
    Tout d'abord que je vous explique le contexte :
    J'ai une carte électronique qui est pilotée par LabView, le programme LabView fait la sauvegarde des signaux reçues par la carte en format binaire (.tdx).
    Dans mon programme, je dois charger le fichier .tdx, décoder les données, faire un traitement dessus puis les enregistrer dans un autre fichier.
    Voila j'espere être assez clair.
    Si vous voulez plus de renseignement n'hésiter pas.
    Merci par avance.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Par défaut
    Citation Envoyé par gofio79 Voir le message
    Si vous voulez plus de renseignement n'hésiter pas.
    Oui, quel est le problème ?

  3. #3
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Si tu connais le format du fichier, c'est-à-dire comment le fichier est organisé, t'as qu'à lire les données qui t'intéressent. Tutoriel : Les fichiers en langage C.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Par défaut
    Le problème est que je n'ai pas ce que je devrait obtenir.
    J'obtiens des nombres bizarres sachant que mes signaux viennent d'un sinusoïdale avec un changement de fréquence.
    Je ne sais pas comment est organisé le fichier à l'intérieur mais je sais que chaque données fait 16 bits non signée.Et il y a 484864 données.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Par défaut
    Ou sinon dites moi si vous savez comment est organisé l'enregistrement des données avec le "Write to Measurement File" de LabView.

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gofio79 Voir le message
    Ou sinon dites moi si vous savez comment est organisé l'enregistrement des données avec le "Write to Measurement File" de LabView.
    C'est ça ?

    http://filext.com/file-extension/TDX

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gofio79 Voir le message
    Le problème est que je n'ai pas ce que je devrait obtenir.
    J'obtiens des nombres bizarres sachant que mes signaux viennent d'un sinusoïdale avec un changement de fréquence.
    Je ne sais pas comment est organisé le fichier à l'intérieur
    L'organisation des données dans le fichier est défini par un document de spécification. Si tu n'as pas ce document, tu ne vas pas deviner comment sont organisées les données.
    mais je sais que chaque données fait 16 bits non signée.Et il y a 484864 données.
    Cependant, si c'est un fichier organisé en données de 16-bit non signées (donc sur 2 octets), il est probable qu'il soit codé au format courant (MSB en tête). La lecture se fait donc comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    unsigned data = 0;
    data |= (getc(fp) << (8 * 1)); /* MSB */
    data |= (getc(fp) << (8 * 0));
    Si jamais le codage était fait à l'envers (LSB en tête), il suffirait d'inverser 0 et 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    unsigned data = 0;
    data |= (getc(fp) << (8 * 0)); /* LSB */
    data |= (getc(fp) << (8 * 1));

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Par défaut
    mais ton data c'est quoi c'est ta variable où tu stocke tes données?
    Voila ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    short *signalA;
    FILE *FTestInput;
    signalA = (short*)malloc(484864 * sizeof(short));
    FTestInput=fopen(fichier,"rb");
    while(i != NULL)
       i = fread(signalA, sizeof(short), 484864, FTestInput);
    fclose(FTestInput);
    for(i=0; i<484864; i++)
    {
       printf("Signal[%d] = %d\n",i,signalA[i]);
       getch();
    }

Discussions similaires

  1. Décodage de fichier binaire - Cortex M3
    Par toon29 dans le forum C
    Réponses: 7
    Dernier message: 16/01/2015, 13h37
  2. [LG]ecriture dans un fichier binaire
    Par jsaviola dans le forum Langage
    Réponses: 3
    Dernier message: 26/12/2003, 17h30
  3. [Debutant] Comment lire la taille d'un fichier binaire ?
    Par Invité dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 18/12/2003, 19h20
  4. communication fichier binaire fichier txt
    Par micdie dans le forum C
    Réponses: 3
    Dernier message: 05/12/2002, 00h19
  5. fichier binaire ou texte
    Par soussou dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/06/2002, 13h39

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