Zitat von
himitsu:
Also die Kurzfassung zu deinem Code wäre wohl dieser:
Delphi-Quellcode:
function ReadText: char;
var
nRead: dword;
begin
if not ReadFile(ComFile, @result, 1, nRead, nil) then
Result := 'a';
end;
An der Funktion selber liegt es also nicht.
welche Daten empfängst du?
welche Übertragungsrate?
wieoft kommt überhaupt mal was an?
wieviele Zeichen empfängst du? (wie oft wird ReadText aufgerufen)
...
hier wird ja nur ein einziges Byte gelesen, das sollte weniger als ein paar Millisekunden dauern.
Die Funktion wartet allerdings bis ein Zeichen am Port angekommen ist...
solange nichts kommt, wird natürlich gewartet.
Es wäre demnach wohl besser dieses in einen Thread auszulagern,
oder es asynchron laufen zu lassen (schau dir dazu mal an wofür der letzte Parameter dieser Funktion ist).
Bei deiner version schmeißt er mir:
[Pascal Fehler] Unit1.pas(321): E2197 Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden
in der ReadFile Zeile an den Kopf...
Das ganze läuft auf 9600,8,N,1 (standard)
Nochmal zu deiner Frage:
Ich bekomme per RS232 schnittstelle einen 0815 sting rein, welchen ich als "String" verarbeiten möchte.
Mfg
Tobi