Forum: Win32/Win64 API (native code)
Delphi
by shmia,
10. Mär 2010
Die 4 Bytes werden binär ausgewertet (siehe function TBlockSerial.RecvInteger).
Du kannst RecvBlock() daher so nicht verwenden.
Aber gehe mal einen Betrag zurück und lies noch mein PS.
Forum: Win32/Win64 API (native code)
Delphi
by shmia,
10. Mär 2010
Und wie schnell kannst du schreiben?
Ein kurze Pause zwischen dem O und dem K und schon kommt .RecvBlock() mit einem unvollständigem Ergebnis zurück.
Du musst dir klarmachen, dass du dich von einem Timeout ganz lösen musst.
Ob jetzt alle zwei Sekunden eine einziges Zeichen hereinkommt oder ob alle Zeichen auf einen Rutsch eintreffen darf für dein Programm keine Rolle spielen.
PS
habe...
Forum: Win32/Win64 API (native code)
Delphi
by shmia,
10. Mär 2010
Du solltest dich nicht darauf verlassen, dass Antworten ein bestimmtes Timing haben.
Stattdessen würde ich das abschliessende #13 als Endezeichen betrachten.
Der Algorithmus sieht so aus:
Es gibt einen Empfangspuffer (string).
Bei jedem OnRead-Event werden die empfangen Daten zuerst an den Empfangspuffer angehängt.
Dann schaut man nach, ob im Empfangspuffer eine ganze Zeile steht indem man...