WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

RS232 Auslesen mit Software Handshake?

 

ActionAndi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.08.2009, 13:03     Titel: RS232 Auslesen mit Software Handshake?
  Antworten mit Zitat      
Hallo zusammen,

ich möchte ein Spannungsmessgerät über die RS232 Schnittstelle ansprechen.

Das senden von Daten auf das Messgerät klappt auch ganz gut, jedoch habe ich Probleme beim kontinuierlichen Empfangen des Messdaten. Ich weiß einfach nicht wie ich das am besten lösen kann.
Hier zunächst mal mein bisherige Code:
Code:

%% finde offene Verbindungen und schließe sie anschließend
g = instrfindall;
if ~isempty(g);
    fclose(g);
    delete(g);
end
clear g;

%% Verbindung zum COM Geraet herstellen
 s = serial('COM4', 'Baudrate', 9600, 'Terminator','CR');
 s.FlowControl = 'software';
 s.InputBufferSize = 1024;
% s.RecordDetail = 'verbose';
% s.RecordName = 'MySerialFile.txt';
fopen(s);
% fprintf(s,'*IDN?'); % Abfrage des Geräts
% string=fscanf(s);
%fprintf('%s\n',string);
fprintf(s,'*RST'); % Reset der Geraeteeinstellungen
% Setze die Einstellungen für die Messung
fprintf(s,':SENS:FUNC ''CURR'' ');
fprintf(s,':SENS:CURR:PROT 1'); % Max von 1 Ampere
fprintf(s,':SOUR:VOLT:MODE SWE');
fprintf(s,':SOUR:SWE:SPAC LIN'); % linear spacing
fprintf(s,':SOUR:VOLT:STAR 20.0');
fprintf(s,':SOUR:VOLT:STOP 24.0');
%fprintf(s,':SOUR:VOLT:STEP 1.0');
% Alternativ kann auch die Anzahl der Punkte angeben werden
fprintf(s,':SOUR:SWE:POIN 200');
fprintf(s,':TRIG:COUN 200'); % gleiche Anzahl wie Pkte im Sweep
fprintf(s,':TRIG:DEL 2.); % starte mit der Messung nach 2 sekunden
fprintf(s,':FORM:ELEM TIME, VOLT, CURR');
fprintf(s,':SYST:TIME:RES:AUTO 1'); % setze den Timer immer auf Null
fprintf(s,':OUTPUT:STATE 1');
% Starte die Messung
% record(s,'on')
fprintf(s,':READ?');
 

Nach dem
Code:
beginnt die Messung und dass Messgerät sendet ASCII-Daten an den Rechner.

Code:

mess = fscanf(s)
+2.000000E+01,+1.104480E-02,+1.699219E-01 ...
 


Nun können das sehr viele Daten sein, so dass der Input-Buffer des PCs irgendwann voll ist. Natürlich kann ich die Größe des Puffers nach oben setzen, jedoch wenn ich nun über 7 Tage sekündlich messe, dann kommen dann doch erhebliche Datenmengen zusammen.
Nun muss ich doch irgendwie per Software Handshake dem Messgerät mitteilen, dass das Senden kurz unterbrochen werden soll, oder?
Wie ermittle ich denn, wann der Buffer fast voll ist?

Ich habe schon mal hier http://www.gomatlab.de/flugdrohne-s.....7468,highlight,rs232.html
geschaut, jedoch sehe ich da leider nicht so richtig durch.
Wie mache ich das denn? Könnt Ihr mir einen, wenn's geht ausführlichen, Tipp geben?



Viele Grüße
Andi


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.