RS232 mit Matlab 6.5 unter XP

Gast #390580
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
Gast
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%
% 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
Gast
@ 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??
Gast
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!
Gast
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
Gast
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
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.