WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

matlab verunstaltet hex werte

 

stuhen
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 15.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2014, 23:43     Titel: matlab verunstaltet hex werte
  Antworten mit Zitat      
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:

Code:
fopen(s);
fprintf(s,250);%PC->Board Aktivieren des Boards
fprintf(s,251)%PC->Board Abfrage der Rohdaten - 256 2bit paare
raw = fscanf(s)%Board->PC


schon einmal vielen dank für eure hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 16.11.2014, 19:34     Titel: Re: matlab verunstaltet hex werte
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
stuhen
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 15.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2014, 20:44     Titel: Re: matlab verunstaltet hex werte
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 16.11.2014, 20:52     Titel:
  Antworten mit Zitat      
Wenn man wie du keine Formatangabe macht, wird base10 = %d genommen.

Für Base 16 (hexadecimal) muss folgende Formatangabe gewählt werden

Code:

fopen(s);
raw = fscanf(s, '%x'); % Board->PC
 


Evtl. ist auch ein textscan statt fscanf sinnvoller.
Private Nachricht senden Benutzer-Profile anzeigen
 
stuhen
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 15.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2014, 23:16     Titel:
  Antworten mit Zitat      
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 2Cool
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

Code:

fopen(s);
raw = fscanf(s, '%x'); % Board->PC
 


Evtl. ist auch ein textscan statt fscanf sinnvoller.
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 16.11.2014, 23:54     Titel:
  Antworten mit Zitat      
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

Code:
A = fread(obj,size,'precision')


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)

Code:
A = fscanf(obj,'format',size)


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...
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.