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

fprintf-Befehl

 

space
Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 12.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2011, 09:13     Titel: fprintf-Befehl
  Antworten mit Zitat      
Hallo Forengemeinde,

ich habe ein kleines Syntax Problem und hoffe der ein oder andere kann mir bisschen was dazu erklären, dass ich es auch verstehen kann.

1. Was ist genau der Unterschied zwischen fprintf und sprintf? Doch nur, dass ich einen String "senden" will, oder?

2. Ich habe ein print-Befehl aus Bascom-Basic und verstehe nicht ganz, wie ich das selbe in Matlab sagen kann?!! HILFE!!

Print "!#": chr(10); chr(3); chr(100); chr(0); chr (0); chr(0); chr(0);

Wie bekomme ich das in einen fprintf oder doch sprintf (warum nehme ich welchen)?

Das !# ist Ascii und muss vorneweg stehen!

Ich hoffe mir kann jemand helfen und vielleicht noch 2 Sätze zur Erklärung dazu schreiben.

Vielen Dank!
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: 17.06.2011, 09:35     Titel:
  Antworten mit Zitat      
sprintf schreibt die Daten nach deiner Formatvorgabe in einen String
fprintf schreibt es in einen txt file

Ich kenne mich mit der Programmiersprache nicht aus...was soll denn gemacht werden? Die einzelnen Char. Elemente im ASCII Format in einen String schreiben?

Edit: Schau dir doch die Befehle mal in der Matlab Hilfe an...da steht doch eigentlich alles inkl. Beispiele Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
space
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 12.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2011, 10:02     Titel:
  Antworten mit Zitat      
Das habe ich schon gemacht, aber ich versteh es immer noch nicht!

Was gemacht werden soll:

Ich möchte einen µC auf einem Board ansteuern, das mittels RS232 angesprochen wird.

Somit möchte ich eigentlich nur einen String schicken, aber ich versteh nicht, wie ich das in Matlab machen.
Kann jemand den Bascom-Code in einen fprintf-Bafehl umwandeln?

fprintf(com1, '!#', ?????) ich weiß wircklich nicht, wie ich das machen soll!
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: 17.06.2011, 10:19     Titel:
  Antworten mit Zitat      
Aus der Matlab Hilfe für fprintf/serial

s = serial('COM1');
fopen(s)
fprintf(s,'RS232?')

Edit: Hiermit fragst du die RS232 Schnittstelle ab, die an com verbunden ist. Zumindest habe ich das so verstanden. Dein Befehl, den du senden möchtest muss also hier statt 'RS232' stehen. Evtl. muss du

fprintf(s,'%s','....') verwenden, falls das \n (eof) nicht erwünscht ist.

...ich verstehe allerdings immer noch nicht an Hand deiner Erklärungen was du mit Chr(0) etc meinst. Du hast einen Chararray und willst davon die expliziten Elemente (x) an die Schnittstelle senden?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2011, 10:42     Titel:
  Antworten mit Zitat      
Hallo,
wie DSP schon geschrieben hat, erstma die COM Schnittstelle öffnen.
Deinen String kannst du dann so senden:

Code:

fprintf(s,['!#',char([10,3,100,0,0,0,0])]);
 


Du musst dann noch schauen, was dein Gerät nach einem Befehl erwartet und den Terminator einstellen, siehe Matlab Hilfe.
 
space
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 12.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2011, 12:42     Titel:
  Antworten mit Zitat      
Ahh, okay,

Ich kann also in meinem fprintf Befehl einzelene Werte als char deklarieren

so müsste es ja dann auch gehen, oder??

fprintf (s, '!#%c%c%c%c%c%c%c', 51,2,0,0,0,0,0);

deines ist natütlich kürzer!

Dann habe ich gleich noch eine Frage, ob das dann so alles richtig ist:

%% COM-Schnittstelle will ich in allen Unterfunktionen aufmachen können
global s
s = serial ('COM1', 'BaudRate', 9600);
% Schnittstelle oeffnen
fopen (s)
fprintf (s, '!#%c%c%c%c%c%c%c', 51,2,0,0,0,0,0);
fclose (s);

Über Korrekturen und Vorschläge freue ich mich!!-)

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
space
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 12.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2011, 13:58     Titel:
  Antworten mit Zitat      
Noch eine wichtige Frage!!!
Ich arbeite mit R2008b version 7.7.0 benutze aber ein 64bit Windows, jetzt schreibt mit Matlab einen Feheler, wenn ich meinen COM-Port öffnen will!

??? Error using ==> serial.serial at 57
The serial port object is supported on the Solaris, 32-bit Windows and 32-bit Linux
platforms only.

heißt das, dass ich mir jetzt eine neue version holen muss??!?!?
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: 19.06.2011, 14:50     Titel:
  Antworten mit Zitat      
Hallo space,

Ja - die Fehlermeldung bedeutet, dass Du eine anderer Matlab-Version benötigst. Genaues weiß dazu Dein Matlab-Händler oder der Technische Support von TMW, z.B. zu finden über die Homepage oder mit dem Befehl "support".

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.06.2011, 15:10     Titel:
  Antworten mit Zitat      
Hallo,

für derartige Probleme sollte es reichen, eine 32bit-Version von MATLAB zu installieren (ist auch unter 64bit Windows möglich).
Die andere Frage wäre, ob ein neueres Release das auch in 64bit unterstützt. 2011a dürfte es unterstützen:
http://www.mathworks.com/help/techd.....lab_external/f105659.html

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
space
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 12.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2011, 15:20     Titel:
  Antworten mit Zitat      
Alles klar, dann muss ich wohl mal aufrüsten gehen!

Da fällt mir noch eine Frage ein:
Ich möchte einen USB->RS2323 Wandler mit einbauen. Den muss ich doch auch in mein m.file integrieren, damit das Programm weis auf was es zugreifen muss?

Hat das schonmal jemand gemacht (Beispiel?) Ich muss doch sicher den Pfad irgendwo in meine GUI-Code integrieren.
Private Nachricht senden Benutzer-Profile anzeigen
 
space
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 12.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2011, 07:38     Titel:
  Antworten mit Zitat      
Hi Harald,

du hast doch sicher auch eine Idee für mein neustes Problemm?!

So einen USB->RS232 Adapter kann ich doch sicher in meinen Code bzw. meinem GUI integrieren, oder?

Weißt du wie ich das ansprechen muss?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.06.2011, 09:00     Titel:
  Antworten mit Zitat      
Hallo,

Nein, leider nicht. Mach vielleicht einen separaten Thread dafür auf, weil das mit der originalen Frage bestenfalls noch indirekt zu tun hat.

Grüße,
Harald
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.