|
|
matlab verunstaltet hex werte |
|
stuhen |

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 15.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.11.2014, 23:43
Titel: matlab verunstaltet hex werte
|
 |
Hallo, ich habe schon im Forum geschaut,jedoch keine Antwort gefunden. Ich bekomme von der seriellen Schnittstelle folgenden 2Bit Hex werte:
98 97 98 99 99 9A 99 99 9A 9A 9A 99 9B 9A 9B 9A ... usw
(richtig dargestellt per serial port monitor)
Diese Daten versucht matlab als ascii darzustellen und scheitert dann, da der ascii table nur bis 7F reicht.
Wie schaffe ich es, dass die hex werte auch hex werte bleiben?
mein code:
schon einmal vielen dank für eure hilfe!
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 16.11.2014, 19:34
Titel: Re: matlab verunstaltet hex werte
|
 |
Hallo stuhen,
Zitat: |
Diese Daten versucht matlab als ascii darzustellen |
Matlab versucht die Daten nur als ASCII darzustellen, wenn Du den Befehl explizit dafür schreibst. Welchen Befehl meinst Du also?
Was bedeutet "scheitern" hier? Bitte erkläre das Problem so genau wie möglich.
Gruß, Jan
|
|
|
stuhen |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 15.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.11.2014, 20:44
Titel: Re: matlab verunstaltet hex werte
|
 |
Jan S hat Folgendes geschrieben: |
Hallo stuhen,
Zitat: |
Diese Daten versucht matlab als ascii darzustellen |
Matlab versucht die Daten nur als ASCII darzustellen, wenn Du den Befehl explizit dafür schreibst. Welchen Befehl meinst Du also?
Was bedeutet "scheitern" hier? Bitte erkläre das Problem so genau wie möglich.
Gruß, Jan |
Ich meine den Befehl 'fscanf(s)' aus der vierten Zeile. Nach der vierten Zeile werden die Hex Werte als ascii ausgegeben, sprich matlab wandelt die Hex Werte in ascii. Generell könnte man ja ein weiteres Typcasting vornehmen. Jedoch werden ascii zeichen die größer als '7F' sind gleich dargestellt, da es kein passendes ascii symbol gibt. Die ascii Tabelle ist nur bis '7F'.
Warscheinlich lese ich einfach nur falsch ein. ziel ist es, dass die hex werte von der seriellen schnittstelle in matlab weiterhin hex werte bleiben.
viele Grüße stuhen
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 16.11.2014, 20:52
Titel:
|
 |
Wenn man wie du keine Formatangabe macht, wird base10 = %d genommen.
Für Base 16 (hexadecimal) muss folgende Formatangabe gewählt werden
Evtl. ist auch ein textscan statt fscanf sinnvoller.
|
|
|
stuhen |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 15.11.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.11.2014, 23:16
Titel:
|
 |
1. Abänderung
-> fopen(s);
-> raw = fscanf(s, '%x'); % Board->PC
liefert(das selbe Ergebnis wie vorher):
Warning: Unsuccessful read: A timeout occurred before the Terminator was reached.
Warning: Unsuccessful read: Matching failure in format.
raw =
2.Abänderung
-> fopen(s);
-> raw = textscan(s, '%x'); % Board->PC
liefert:
Warning: Unsuccessful read: A timeout occurred before the Terminator was reached.
Error using textscan
First input must be of type double or string.
Error in serial(line 2
raw = textscan(s,'%x')
DSP hat Folgendes geschrieben: |
Wenn man wie du keine Formatangabe macht, wird base10 = %d genommen.
Für Base 16 (hexadecimal) muss folgende Formatangabe gewählt werden
Evtl. ist auch ein textscan statt fscanf sinnvoller. |
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 16.11.2014, 23:54
Titel:
|
 |
Sorry, ich habe nicht aufgepasst das s ein serial object ist.
Demnach ist textscan auch die vollkommen falsche Wahl.
Da gebe es diese Möglichkeit
Wobei bei dir wohl size = 2 sein müss, da 2 hex Zahlen = 1 Byte. Standardmäßig ist 'precision' auf den Datentyp uchar = 8-bit unsigned character. Scheint imo zu passen.
Für fscanf(serial)
format wäre dann eigentlich %x für hexadezimal, aber evtl. muss size noch mit übergeben. Ich würde es mal mit 2 testen. Leider kann ich dir hier aber nicht genauer weiterhelfen...
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|