Hallo,
folgendes Problem, die Anwendung soll über die serielle Schnittstelle die Daten einer Wage empfangen. Die Wage selbst sendet kontinuirlich die Daten in Form von 16 Zeichen.
Mit folgendem Code fange ich die Daten auf und Zeige den Wert in einem Label an.
Die Variable aktwert ist global definiert und wird alle 30 Sekunden von einem Timer in eine
DB gespeichert.
Delphi-Quellcode:
procedure TForm1.ComPort1RxFlag(Sender: TObject);
var
Str1 : String;
Posi : integer;
wert : char;
begin
wert := '';
ComPort1.Readstr(str1, 100000) ;
comport1.ClearBuffer(true, true);
Posi := Pos(wert,Str1);
if Posi > 8 then
begin
Posi := Pos(wert,str1);
str1 := Copy(str1, Posi -9, 8);
aktwert := StrToFloat(str1);
aktuellerwert.Caption := floattostr(aktwert);
end;
end;
Das Programm funktioniert auch so weit so gut. Nur nach etwa 1 Stunde (manchmal auch erst später) ändert sich der Wert nicht mehr und der
Com Port empfängt keine Daten mehr. Die Wage selber sendet jedoch noch. (Mit Meßgerät überprüft)
Schließt man nun den
Com Port und öffnet ihn wieder empängt er wieder die Daten. Ich habe bereits mehrere verscheidene USB-Seriell Adapter sowie direkte serielle Anschlüsse getestet überall das gleiche Problem. Bei neueren Computer tritt es jedoch erst wesentlich später auf daher denke ich das der Speicher irgendwo voll läuft ich weiß nur nicht wo.
Ich bin für jede Hilfe dankbar.
MfG Willy