Forum: Mikrocontroller und Digitale Elektronik Serielle Schnittstelle (COM) mit MATLAB aufzeichnen/auslesen


von Tim P (Gast)


Lesenswert?

Hallo,

weiß einer von euch vielleicht wie man die Serielle Schnittstelle mit 
Matlab ausliest und die Daten direkt in eine Datei speichert?

Ich bekomme Kommagetrennte Zahlen bzw. Daten von meinem AVR im Format:

"long int, float, float, float, int, int, int, int, int, int,\r\n"

soweit bin ich schon mal:

s = serial('COM5','BAUD',115200);
fopen(s)

Vielleicht hat einer von euch schon mal sowas gemacht und was parat?


Viele Grüße
Tim

von Tom (Gast)


Lesenswert?

So vielleicht?
1
portid=serial('/dev/ttyS0'); 
2
set (portid,... 
3
             'BauRate',115200,... 
4
             'InputBuffersize',4000,... 
5
             'Timeout',1); 
6
fopen(portid); 
7
fwrite(portid,'blablabla'); 
8
[indata,count,msg]=fread(portid,4000,'uchar'); 
9
10
fclose(portid); 
11
delete(portid); 
12
clear portid;

von Tim (Gast)


Lesenswert?

Danke hat geklappt!

von Cell85 (Gast)


Lesenswert?

Die beste Lösung, hab ich mal für ein Projekt gemacht:

if ~isempty(instrfind)
    fclose(instrfind)
end

ser=serial('COM24');
disp('Serialobjekt erzeugt');
set(ser,'BaudRate',115200);
set(ser,'DataBits',8);
set(ser,'Parity','none');
set(ser,'StopBits',1);
set(ser,'ReadAsyncMode','continuous');
set(ser,'Terminator','CR/LF');

fopen(ser);
disp('Serialobjekt geöffnet')

filename = sprintf('Log%s.txt',datestr(now,30));

fileID = fopen(filename,'wt');

while (1) %dauerschleife
    fwrite(ser, ['14:14:14' char(13)]);
    disp(fgetl(ser))

fprintf(fileID,fgetl(ser));
fprintf(fileID,'\n');
end
fclose(fileID);
fclose(ser);

von Christian S. (golffan)


Lesenswert?

Habe mir diesn Programmcode als M-File gespeichert und erfolgreich 
ausgeführt.
wie beende ich diesen Programmcode?
Manchmal beendet sich die Ausführung alleine und manchmal schließe ich 
Matlab dazu, woraufhin sich der Rechner ab und an aufhängt.

Warning: Unaspected Warning: The input puffer was filled before the 
Terminator was reached

Wie kann ich diese Meldung wegkriegen?

Vielen Dank

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.