|
|
Serial Port - Daten richtig einlesen |
|
CS2000 |

Forum-Newbie
|
 |
Beiträge: 1
|
 |
|
 |
Anmeldedatum: 26.07.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.07.2010, 15:54
Titel: Serial Port - Daten richtig einlesen
|
 |
|
 |
|
Hallo Leute,
ich steuere derzeit ein Messgerät über den serial port an, was bis jetzt auch wunderbar funktioniert.
Nur habe ich ein Problem mit dem Einlesen der Messwerte.
Ich bekomme vom Messgerät erst einen ErrorCode (in diesem Fall OK00 und anschließend die Messwerte, getrennt durch ein Komma). In der Produktbeschreibung steht folgendes:
"Data are output in blocks of 100 pieces. Each piece of data is 8-byte ASCII data (4-byte floating data converted to ASCII code), separated by
commas."
Ich habe schon alle möglichen Befehle und Formate ausprobiert, bekomme aber nie die richtigen Zahlen (ich kann das anhand der eigentlichen Messgerät-Software überprüfen).
Hier der Quellcode:
%-----------------------------------------------------------------%
clear
%Connect Instrument:
if length(instrfind) > 0
fclose(instrfind);
end
s = serial('COM4');
s.Terminator = 'LF';
s.BytesAvailableFcnMode = 'terminator';
s.BytesAvailableFcn = @instrcallback;
fopen(s);
fprintf(s,'MEDR,1,1,01'); %Befehl an das Instr. "Measure Data Read"
answer = fread(s,100,'float')
fid = fopen('answers.txt', 'w');
fprintf(fid, answer);
fclose(fid);
fid = fopen('answers.txt','r');
ErrorCheckCode = fscanf(fid,'%s',4);
tf=strmatch('ER20',ErrorCheckCode);
if (tf==1)
disp('No data!.');
end
tf=strmatch('OK00',ErrorCheckCode);
if (tf==1)
%SpectralData = num2str(fgetl(s));
%SpectralData= num2str(fread(s,[100,1],'float'));
%SpectralData = fread(s, 100, 'double','ieee-be')
%SpectralData = fgets(s)
%SpectralData = fread(s,[100,1],'uint')
SpectralData = fscanf(fid,'%f')
fid = fopen('spectraldata.txt', 'w+');
fprintf(fid, '%f ', SpectralData);
fclose(fid);
disp('Data read has been completed.');
end
%Delete from Workspace
fclose(s);
delete(s);
%clear
Wie man sieht, habe ich schon eine Menge ausprobiert.
Hat jemand bessere Vorschläge?
Vielen Dank schonmal,
Sandy
|
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
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.
|
|