Verfasst am: 19.12.2007, 13:09
Titel: Matlab RS232 Communication
Mahlzeit,
studiere zur Zeit an der FH-BRS und wir wollen über Matlab und der Seriellen Schnittstelle Kommunikation ermöglichen.
Die fscanf / fprintf hat uns schon zu erfolge geführt allerdings wollen wir das so nur Simulieren und Später einen Mikrocontroller ansteuern, welcher einen Motor ansteuert daher wollen wir Byte weise eine Kommunikation ermöglichen,
Daher sind wir auf binäre Kommunikation umgestiegen, unser Code:
Code:
delete(instrfindall);
global count ;
serobj = serial('COM1','Baudrate', 9600,'Parity', 'none','Databits', 8, 'StopBits', 1);
serobj.Flowcontrol = 'hardware'
serobj.ReadAsyncMode = 'manual' % Lets do it in asynchronous mode
s.BytesAvailableFcnCount = 40;
s.BytesAvailableFcnMode = 'byte';
Kann man nicht auch mit fread und fwrite Byte-weise schreiben?
Aus der Hilfe:
A = fread(fid, count, precision, skip) includes
an optional skip argument that specifies the number of
bytes to skip after each precision value is read. If precision specifies a bit format like 'bitN' or 'ubitN',
the skip argument is interpreted as the number of bits
to skip. See Specifying a Skip Value,
below.
Ich bin mir nur nicht sicher, ob das auch für serial funktioniert.
Ansonsten kann man auch mit dem Programm SerialWatcher schauen, was aus dem com-port raus kommt. (einfach mit nem gekreuzten serial-Kabel an einen anderen com-port anklemmen.
Grüße
befinde mich zur zeit auch im versuchsstatus mit matlab daten per usb-rs232 adapter zu verschicken und natürlich auch zu empfangen.
es is zwar ne blöde frage, aber ich möchte nur wissen ob ich das wirklich nicht falsch verstanden habe:
wenn ich per matlab meinen port angesprochen hab (FOPEN)
kann ich genau diesen port nicht mit nem anderen programm ansprechen.
es kann also immer nur ein program auf ein und den selben port zugreifen, oder is das falsch?
wenn ich mit matlab gerade auf den com port zugreife
kann ich nicht gleichzeitig mit serialwatcher drauf zugreifen.
so habe ich das zumindest verstanden....
Wie DID schon sagt, kannst du nicht auf ein und den selben Port mit Matlab und dem Serialwatcher auf dem selben Rechner zugreifen. Es sollte aber möglich sein zum Beispiel aus dem COM1 Daten an COM2 auf dem selben Rechner zu schicken. In deinem Falle, Noxin99, brauchst du dann sicher zwei USP-RS232-Adapter.
Grüße
_________________
„I think the problem, to be quite honest with you, is that you've never actually known what the question is.“
habe mittlerweile meinen laptop mit usb-rs232 adapter ausgestattet und mit matlab die ersten daten versendet.
habe einen älteren laptop mit rs232 schnittstelle, allerdings ohne matlab, da es ein firmenlaptop ist. zumindest kann ich per hyperterminal bzw. serialwatcher daten hin und her senden! mit matlab klapt das auch schon ganz gut. nur mit simulink hab ich da so einige probleme. werd mich morgen dazu mal auslassen. hab im moment die schnauze voll!
Irauschek
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 12.05.2009, 08:34
Titel: Matlab RS232 Communication with µC
Hallo!
Um nocheinmal zum Hauptthema zurückzukehren:
Für die binäre Kommunikation mit einem Mikrocontroller ist, wie schon von DID erwähnt, das formatierte Lesen (fscanf) und Schreiben (fprintf) ungeeignet.
Stattdessen können binäre Daten mit Hilfe von fwrite über die geöffnete
serielle Schnittstelle versendt werden.
z.B.:
gelesen, erhält man
[] statt 0
1
2
...
126
127
255 statt 128
255 ....
255
... bis ca. 165, danach
166
167
...
254
255
obwohl als Daten vom µC die Werte 0-255 versandt wurden.
Abhilfe schaft
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
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.