|
space |
Forum-Anfänger
|
|
Beiträge: 37
|
|
|
|
Anmeldedatum: 12.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.06.2011, 09:13
Titel: fprintf-Befehl
|
|
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!
|
|
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 17.06.2011, 09:35
Titel:
|
|
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
|
|
|
space |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 37
|
|
|
|
Anmeldedatum: 12.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.06.2011, 10:02
Titel:
|
|
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!
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 17.06.2011, 10:19
Titel:
|
|
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?
|
|
|
Gast |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.06.2011, 10:42
Titel:
|
|
Hallo,
wie DSP schon geschrieben hat, erstma die COM Schnittstelle öffnen.
Deinen String kannst du dann so senden:
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
|
|
Beiträge: 37
|
|
|
|
Anmeldedatum: 12.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.06.2011, 12:42
Titel:
|
|
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ß
|
|
|
space |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 37
|
|
|
|
Anmeldedatum: 12.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.06.2011, 13:58
Titel:
|
|
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??!?!?
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 19.06.2011, 14:50
Titel:
|
|
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
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 19.06.2011, 15:10
Titel:
|
|
|
|
space |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 37
|
|
|
|
Anmeldedatum: 12.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.06.2011, 15:20
Titel:
|
|
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.
|
|
|
space |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 37
|
|
|
|
Anmeldedatum: 12.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.06.2011, 07:38
Titel:
|
|
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?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 20.06.2011, 09:00
Titel:
|
|
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
|
|
|
|
|
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.
|
|