Précédent   Forum des professionnels en informatique > Environnements de développement > MATLAB
MATLAB Forum d'entraide sur MATLAB. Avant de poster -> FAQ MATLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/02/2012, 16h22   #1
Futur Membre du Club
 
Étudiant
Inscription : avril 2009
Messages : 134
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2009
Messages : 134
Points : 16
Points : 16
Par défaut Conversion string en "octet"

Bonjour,

Je fais un petit programme ou j'ouvre un fichier txt contenant 3 nombres:
Code :
1
2
3
4
fid = fopen(get(data.champ_fichier,'string'),'r'); 
data.X = fread(fid,[1,inf],'*char');
data.X
fclose(fid);
Et j'obtiens dans matlab :
Jusque la tout va bien, mais ensuite je désire envoyer ces trois nombres par une liaison série, mais au lieu d'envoyer les nombres 11, 58 et 65 sur chacun un octet, j'envoie le chiffre 1 sur un octet, à nouveau 1, ensuite 5...
Code :
fwrite(s,data.X,'char');
Comment faire pour que Matlab prenne en compte que 11, 58 et 65 sont des valeurs décimales codées sur un octet?

Merci d'avance
Ben
ben1015 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 17h01   #2
Membre confirmé
 
Homme Thomas Pegot
Étudiant
Inscription : janvier 2012
Messages : 195
Détails du profil
Informations personnelles :
Nom : Homme Thomas Pegot
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 195
Points : 299
Points : 299
Bonjour,

A tout hasard tu as essaié de remplacer le champs 'char' par 'char*1' dans la fonction fwrite ?
Gakusei est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 20h44   #3
Dut
Rédacteur/Modérateur
 
Avatar de Dut
 
Inscription : novembre 2006
Messages : 12 919
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 12 919
Points : 15 909
Points : 15 909
Pourquoi utiliser FREAD pour lire dans un fichier texte ?

Pourrais-tu nous montrer ce que contient réellement ce fichier ?
__________________
Mes contributions MATLAB (R2009a - Windows & Linux)

• J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" (Saint Huck)
• Des larmes coulèrent doucement des yeux fermés du vieil homme. Moi je pleurais comme un enfant, que d'ailleurs pour lui je ne cesserais d'être ma vie durant (Amkoullel)

• Lâché de Mogwai sur St Malo... aie aie aie... ouille ouille ouille
Dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 21h14   #4
Futur Membre du Club
 
Étudiant
Inscription : avril 2009
Messages : 134
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2009
Messages : 134
Points : 16
Points : 16
Pour FREAD, je l'utilise car je pensais que c'était l'utilisation normale pour lire un fichier texte. Sinon mon fichier texte contient uniquement des nombres, voir PJ.

Merci
Ben
Fichiers attachés
Type de fichier : txt test.txt (9 octets, 4 affichages)
ben1015 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 21h27   #5
Dut
Rédacteur/Modérateur
 
Avatar de Dut
 
Inscription : novembre 2006
Messages : 12 919
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 12 919
Points : 15 909
Points : 15 909
Essaie ceci :
Code :
1
2
3
4
5
6
7
8
9
10
X = textread('test.txt','%d');

fid = fopen('test.bin','w');
fwrite(fid,X,'uint8');
fclose(fid);

fid = fopen('test.bin','r');
Xb = fread(fid,'*uint8');
fclose(fid);
ce qui donne :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
X =

    11
    58
    65


Xb =

   11
   58
   65
__________________
Mes contributions MATLAB (R2009a - Windows & Linux)

• J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" (Saint Huck)
• Des larmes coulèrent doucement des yeux fermés du vieil homme. Moi je pleurais comme un enfant, que d'ailleurs pour lui je ne cesserais d'être ma vie durant (Amkoullel)

• Lâché de Mogwai sur St Malo... aie aie aie... ouille ouille ouille
Dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 22h29   #6
Futur Membre du Club
 
Étudiant
Inscription : avril 2009
Messages : 134
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2009
Messages : 134
Points : 16
Points : 16
Merci Dut,

En fait, je me sers juste de :
Code :
X = textread('test.txt','%d');
et ensuite j'envoie X par la liaison série et j'envoie bien que 3 octets.

Merci
Ben
ben1015 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h33.


 
 
 
 
Partenaires

Hébergement Web