www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP RS232 mit Matlab 6.5 unter XP


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallöle,
ich würde gerne die Daten des ADCs eines Atmel-MCs direkt im Matlab
verwursten. Leider geht das nicht so einfach wie ich es mir dachte.
Habe den Beispielcode aus der Help benutzt, geht aber nicht.

s = serial('COM1');
set(s,'BaudRate',9600);
fopen(s);
s.Status %gucken ob Port aufgemacht wird
fprintf(s,'%d','123')
out = fscanf(s,'%d');
fclose(s)
s.Status %gucken ob Port geschlossen wird
delete(s)
clear s

Laut Matlab wird der Port geöffnet und wieder geschlossen (s.Status)
Aber nix gesendet und auch nichts wieder empfangen.

Ich verwende einen Mega16 quasi als Echo über RS232 und Anzeige auf
Display (beides funktioniert auch unabhängig von Matlab).

Hat jemand einen Tipp oder vielleicht ein funktionierendes M-File?

Danke

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%
% Start serial communication
function s = start_serial ()

if length (instrfind) > 0
    fclose (instrfind);
end
s = serial('COM1',...
           'BaudRate', 9600,...
           'Parity', 'none',...
           'DataBits', 8,...
           'StopBits', 1,...
       'InputBufferSize', 1024,...
           'OutputBufferSize', 1024,...
           'Timeout', 2);
fopen(s);
disp ('COM-Port opened successfully');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%
% Stop serial communication
function stop_serial (s)

fclose (s);
clear s;
disp ('COM-Port closed successfully');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%
% Wait for response
function err = wait_response (s, time)

err = 0;
tic;
while (s.BytesAvailable == 0)
    if (toc > time)
        err = 1;
        break;
    end
end

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schreiben und lesen wirst du ja dann wohl hinbekommen :)

Autor: Miralp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Es gibt ein Bug für Matlab 6.5 und RS 232.
Aber es gibt ein patch :)

http://newsreader.mathworks.com/WebX/.ef37f39?50@7...

(Entschuldigung für mein Deutsch)

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Ales, hab deinen Voirschlag auch mal versucht, leider nur mit wenig 
Erfolg. Ich wollte Daten versenden über die serielle Schnittstelle. 
Senden funst auch. Áber es liegen keine Bytes zum abholen bereit und bei 
meinem Empfänger Host wird mir eine warnung aus gegeben.
Hier ist mal der Asuzug von meinem Empfänger

COM-Port opened successfully
Warning: A timeout occurred before the Terminator was reached.
(Type "warning off MATLAB:serial:fscanf:unsuccessfulRead" to suppress 
this warning.)

   Serial Port Object : Serial-COM1

   Communication Settings
      Port:               COM1
      BaudRate:           9600
      Terminator:         'LF'

   Communication State
      Status:             open
      RecordStatus:       off

   Read/Write State
      TransferStatus:     idle
      BytesAvailable:     0
      ValuesReceived:     0
      ValuesSent:         0
Kannst du mir weiter helfen??

Autor: Irauschek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo für alle, die neuere Versionen von Matlab verwenden - ich verwende 
7.6.0 - können binäre Daten mit Hilfe von fwrite über die geöffnete 
serielle Schnittstelle versenden.
z.B.:  fwrite(serial_pointer_obj, data, 'uint8');

Formatiertes schreiben belingt mit fprintf.

Binäres Empfangen funktioniert folgender maßen:
[data,count,msg] = fread(serial_pointer_obj, amount, 'uint8');

Wobei msg die Fehlermeldung beinhaltet, wenn zum Beispiel ein Timeout 
auftritt. Bei erfolgreichem Empfang ist isempty(msg) == true.

Formatiertes lesen ermöglicht fscanf.

Die formatierten Varianten sind jedoch nicht für die Kommunikation mit 
einem µC zu empfehlen!

Autor: john (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
i want to use matlab to talk to one sensor, before using matlab, i 
already use hyper terminal program to get the data from sensor to Pc, 
the requested protocol is to send instruction"00 02 3B AA", however i 
can not get the responce of the sensor. can somebody help me?the matlab 
code is listed below,
g = serial('COM3');
%set(s,'BaudRate',19200);
%s = serial('COM3','BAUD',19200);
!mode com3:19200,n,8,1
fopen(g);
as=['00','02','3B','AA'];
fwrite(g,as,'uint8');
mydata=fread(g,7,'uint8');
fclose(g)
delete(g)
clear g

Autor: miland (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hi,
did you find the problem?
i habe the same problem but i convert my ACII daten in bibary daten and 
this works with matlab and i can move my motor.

you can how its possible in my data.

there is the funtion MVP with TMCL-IDE

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.