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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% % 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
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@743.BwaTbs83VVz@ (Entschuldigung für mein Deutsch)
@ 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??
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!
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.