Hallo, an alle!
Ich habe folgendes Problem:
Für ein Roboter-Projekt habe ich an der seriellen Schnittstelle einen Mikro-Controller (C-Control) angeschlossen.
Dieser ist so programmiert, dass er, immer wenn er über die serielle Schnittstelle die Zahl 6 empfängt, einen Wert von einem Distanz-Sensor zurücksendet (Der Wert liegt zwischen 0 und 255).
Soweit klappt das auch alles, nur kommt nicht der komplette Wert im meinem Delphi-Programm an.
Ich habe mir zur Realisierung die Klasse
TCOMPort ein wenig vereinfacht und in eine eigene
Unit gepackt (Datei ist angehängt).
Aufgerufen wird das ganze folgendermaßen:
Delphi-Quellcode:
const
D1: PChar = '6' + #13#10;
COM:=TCOM.Init;
Delphi-Quellcode:
function TSensors.Distance1:
String;
var
Distance1:
String;
begin
COM.SendString(D1);
Distance1:=Trim(
COM.ReadString);
if Distance1='
'
then Distance1:='
0';
Result:=Distance1;
end;
COM.Destroy;
Die Funktion gibt bei ersten Aufruf 0 zurück.
Beim zweiten beispielsweise 39 (was auch richtig ist) und
bei allen weiteren Aufrufen nur die erste Zahl (also z.B. 3).
Ändert sich die Entfernung bei meinem Distanz-Sensor so, dass der Rückgabewert über 100 kommt, wird die komplette Zahl ausgegeben.
Aber wo liegt nun der Fehler?
Warum gibt er ab dem dritte Aufruf nur die erste Zahl zurück?
Ich hoffe, ihr könnt mir helfen!
Mit freundlichen Grüßen
Philipp