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 :

Extraction des données binaires d'un buffer et les mettre dans un fichier texte


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 10
    Points
    10
    Par défaut Extraction des données binaires d'un buffer et les mettre dans un fichier texte
    Bonjour tout le monde
    mon message sera un peu long, maisje vais vous mettre dans mon sujet pour que vous puissiez comprendre mon objectif.

    en effet je travaille mon sujet de PFE sur une pointeuse biométrique . dans cette pointeuse , ce trouve un journal (fichier log ) dans lequel sont enregistrés toutes les évènement durant la journée pour la pointeuse : ce fichier contient au maximum 8000 lignes chaque ligne compotre 64 octets dans lequels on trouve :
    la date , l'heure du pointage, nom de la base de données biométrique (mémoire de la pointeuse) , identifiant de celui qui vient de pointer comme l'indique les ligne suivantes :

    01/02/10 06:02:44,IDENT,OK,0,bioa,G999998,0,0,0.1,447,0,0,0,0,0

    01/02/10 06:39:20,IDENT,OK,0,bioa,G999998,0,0,0.1,447,0,0,0,0,0

    01/02/10 06:58:59,IDENT,OK,0,bioa,G999968,0,0,0.1,422,0,0,0,0,0

    01/02/10 06:59:05,IDENT,OK,0,bioa,G999998,0,0,0.1,447,0,0,0,0,0

    01/02/10 07:29:12,IDENT,OK,0,bioa,G542501,0,0,0.1,143,0,0,0,0,0

    01/02/10 07:39:42,IDENT,OK,0,bioa,G999975,0,0,0.1,427,0,0,0,0,0

    01/02/10 07:42:55,IDENT,OK,0,bioa,G545684,0,0,0.1,317,0,0,0,0,0

    01/02/10 07:53:33,IDENT,OK,0,bioa,G545685,0,0,0.1,318,0,0,0,0,0

    01/02/10 07:55:41,IDENT,OK,0,bioa,G545578,0,0,0.2,246,0,0,0,0,0


    le manuel me permet de télécharger les lignes de ce fichier , cependant ; ces lignes m'arivenet non en forme texto mais sour leur formes binaire de 64 octets chacun pour une ligne mais concaténés ci joint je vais vous poster comment les messages m'arrivent dans mon buffer dans mon code C ( j'extrait le données grace au protocole tcp donc j'utilise les socket). voila comment les données m''arrivent

    1903101012160\0bioa\0\0\0\0\0\0\0\0\0\0\0G544531\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\323\0\0\0\0\0\0\0\0001903101016060\0bioa\0\0\0\0\0\0\0\0\0\0\0G545728\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\1l\0\0\0\0\0\0\0\0001903101020410\0bioa\0\0\0\0\0\0\0\0\0\0\0G360032\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0U\0\0\0\0\0\0\0\0001903101020450\0bioa\0\0\0\0\0\0\0\0\0\0\0G545600\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\1\'\0\0\0\0\0\0\0\0001903101020480\0bioa\0\0\0\0\0\0\0\0\0\0\0G545758\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\201\0\0\0\0\0\0\0\0001903101023530\0bioa\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\377\377\1\0\0\0\0\0\0\0001903101023540\0bioa\0\0\0\0\0\0\0\0\0\0\0G360024\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0Q\0\0\0\0\0\0\0\0001903101028480\0bioa\0\0\0\0\0\0\0\0\0\0\0G360872\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7\0c\0\0\0\0\0\0\0\0.

    je vais vous détailler plus le contenu de chaque 64 octet
    prenons les 64 premiers octets
    on
    1903101012160\0bioa\0\0\0\0\0\0\0\0\0\0\0G544531\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\323\0\0\0\0\0\0\0
    j'ai
    190310101216 : la date et l'heure ( 19/03/10 10:12:16)
    0 code action
    bioa : nom de la base ca c'erit sur 15 octet donc le reste du champ nom de la base se comlète par des zéros
    G544531 : l'identifiant avec ce champ sur 20 octet donc les autres données se compétent par des zéros
    les autre champls : champls supplémentaire envoyé dans le but d'avoir une strucutre fixe de 64 octets

    donc mes questions sont :

    1) y a il une méthode qui me permet d'extraire les données du buffer par 64 octet puis les le mettre dans un tableau apart
    2) rendre plus visible le fichier dque je reçoit : c'est à dire je n'ai plus des structures de 64 octet concaténes mais des structures sur des lignes?
    3) une methode pour formatter les les données pour lés séparer par des virgules ou des espaces ?

    sachant que je me bloque depuis deux semaines et je suis dans une boucle vicieuse je n'arrvie pas à trouver un moyen
    si vous purvez m'aider les deuxc première étapes me suffit énormèment

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par haithem20080 Voir le message
    1) y a il une méthode qui me permet d'extraire les données du buffer par 64 octet puis les le mettre dans un tableau apart
    Pas de pb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char data[64];
    fread(data, sizeof(char), 64, buffer);
    Citation Envoyé par haithem20080 Voir le message
    2) rendre plus visible le fichier dque je reçoit : c'est à dire je n'ai plus des structures de 64 octet concaténes mais des structures sur des lignes?
    Arf là c'est à toi de découper "data" et de remplir ta structure. Par exemple les 12 premiers caractères sont la date et l'heure. Ben tu peux les découper de cette façon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    char jj[3];
    char mm[3];
    char aa[3];
    char hh[3];
    char mn[3];
    char ss[3];
     
    sprintf(jj, "%c%c", data[0], data[1]);
    sprintf(mm, "%c%c", data[2], data[3]);
    sprintf(aa, "%c%c", data[4], data[5]);
    sprintf(hh, "%c%c", data[6], data[7]);
    sprintf(mn, "%c%c", data[8], data[9]);
    sprintf(ss, "%c%c", data[10], data[11]);
    Citation Envoyé par haithem20080 Voir le message
    3) une methode pour formatter les les données pour lés séparer par des virgules ou des espaces ?
    Même réponse. C'est toi qui écrit le fichier de sortie, tu l'écris comme tu le veux.
    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: 0
    Dernier message: 21/04/2014, 17h22
  2. Réponses: 4
    Dernier message: 20/06/2009, 11h26
  3. Réponses: 2
    Dernier message: 06/04/2009, 16h44
  4. Réponses: 4
    Dernier message: 03/01/2008, 12h37
  5. Réponses: 12
    Dernier message: 21/02/2007, 09h44

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