Vektor über die serielle Schnittstelle ausgeben - Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Studierende:
Praktikum - Optische Verbrennungsdiagnostik von Zündsystemen mit MATLAB
Branche: mehrere
IAV GmbH - Ingenieurgesellschaft Auto und Verkehr - Berlin

Praktikant (w/m) Toolentwicklung Matlab
Branche: Beratung, Expertise, Fahrzeugtechnik, Fahrzeugteile, Technische Dienstleistungen
MBtech Group GmbH & Co. KGaA - Fellbach

Abschlussarbeit / Praktikum: Entwicklung Matlab (m/w)
Branche: Informationstechnologie, Elektrotechnik, Elektronik
GIGATRONIK Technologies GmbH - Ulm

Praktikum - App-Entwicklung für Raspberry Pi Prototyping System
Branche: Fahrzeugtechnik, Fahrzeugteile, Elektrotechnik, Elektronik
IAV GmbH - Berlin

Bachelor-/ Masterarbeit (m/w) in der Softwareentwicklung
Branche: Dienstleistungen
über Campusjäger GmbH - Karlsruhe

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Vektor über die serielle Schnittstelle ausgeben

 

Hai123
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 29.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2018, 12:34     Titel: Vektor über die serielle Schnittstelle ausgeben
  Antworten mit Zitat      
Hallo Leute,

ich möchte gerne einen Vektor über die serielle Matlab-Schnittstelle versenden.
Um zu überprüfen was Matlab verschickt hab ich einen virtuellen Com-Port eingerichtet und lasse mir über Hterm ausgeben, was Matlab so verschickt.

Soweit so gut.

Als Beispiel verwende ich einen Zeilenvektor t, der über die Serielle Schnittstelle ausgegeben werden soll:

Mein Code sieht bis jetzt folgendermaßen aus:

Code:

clc
close all;
clear all;

t=[1; 2; 3];

% Aktive Ports löschen
delete(instrfindall);

% USB Port initialisieren
Mega2560=serial('COM1');

disp('Kommunikation aufgebaut')

set(Mega2560,'BaudRate',9600);
set(Mega2560,'Terminator','LF');
set(Mega2560,'DataBits',8);
set(Mega2560,'Parity','none');
set(Mega2560,'StopBits',1);

% Verbindung zum Mikrocontroller
fopen(Mega2560);

  for i=1:length(t)
  {
         fprintf(Mega2560,string(t(i)) );
   }
  end

fclose(Mega2560);
disp('Kommunikation abgebrochen')

 


Als Fehlermeldung bekomme ich dann:

Error using serial/fprintf
Too many output arguments.

Error in Uart_Test (line 28 )
fprintf(Mega2560,string(t(i)) );

Ich möchte eben jeden einzelnen Wert über die serielle Schnittstelle versenden, damit ich diesen später im Mikrocontroller einlesen kann.

Über jegliche Hilfe wäre ich euch sehr dankbar.
Private Nachricht senden Benutzer-Profile anzeigen


AKNOT
Forum-Century

Forum-Century


Beiträge: 125
Anmeldedatum: 12.10.11
Wohnort: Bochum
Version: R2018a
     Beitrag Verfasst am: 02.02.2018, 13:16     Titel:
  Antworten mit Zitat      
Hi,

ich würde sagen die FormatSpec fehlt. Siehe Doku von fprintf.

Also evtl. mal mit folgendem probieren:

Code:

fprintf(Mega2560, '%d\n', t(i));
 


Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Hai123
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 29.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2018, 13:30     Titel:
  Antworten mit Zitat      
Vielen Dank schon mal für deinen Vorschlag.

Leider funktioniert es nicht - ich bekomme immer noch den gleichen Fehler wie vorher.

Matlab mag die For-Schleife irgendwie nicht - so kommt es mir zumindest vor.

Denn wenn ich einzelne Einträge von t versende (ohne die For-Schleife), dann funktioniert alles wunderbar.

Hättet ihr noch weitere Tipps für mich?
Private Nachricht senden Benutzer-Profile anzeigen
 
AKNOT
Forum-Century

Forum-Century


Beiträge: 125
Anmeldedatum: 12.10.11
Wohnort: Bochum
Version: R2018a
     Beitrag Verfasst am: 02.02.2018, 13:32     Titel:
  Antworten mit Zitat      
Hm...also ich nehme mal an die geschweiften Klammern sind ein Copy/Paste-Fehler. Die gehören da nicht hin. Weiß nicht, ob das zu dem Fehler führen könnte.
Private Nachricht senden Benutzer-Profile anzeigen
 
Hai123
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 29.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2018, 13:38     Titel:
  Antworten mit Zitat      
Hallelulja.

Von dem ganzen Programmieren auf dem Mikrocontroller in C bekommt man glatt die Syntax durcheinander.

Jetzt funktioniert es mit der For-Schleife - vielen Dank.

Hab ebenfalls gerade bemerkt, dass mann die einzelnen Werte eines Vektors einfach über

Code:

fprintf(Mega2560,'%d\n',t);
 

ausgeben kann.
Da kam der wichtige Tipp von AKNOT - vielen Dank hierfür.
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
.



goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2018 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.