Forum: Programmieren allgemein
by Rollo62,
19. Mär 2020
Nur mal kurz drübergeschaut, ich würde versuchen das viel kleiner, modularer auseinander zu ziehen.
Hier ein paar Ideen:
in OptiNumericComm:
ich würde immer versuchen die Länge von dem eigentlichen Objekt (hier comport) zu bekommen, nicht von woanders.
Sonst könnte das schnell um die Ohren fliegen wenn Daten nicht vorhanden.
for i:=1 to 8 do
Result := comport.GetByte;...
Forum: Programmieren allgemein
by Rollo62,
16. Mär 2020
Versuch im Rs232 Empfang nur die Daten z.B. in einem Fifo od. Ringbuffer zu speichern, und dann schnell wieder raus.
Die Verarbeitung dann an einer separaten Stelle Durchführen.
Forum: Programmieren allgemein
by Rollo62,
13. Mär 2020
@himitsu
Stimmt, aber mit aktuellen PC's habe ich da eigentlich keine Probleme mehr gehabt,
die sind einfach viel schneller als RS232.
Kommt natürlich auf die Baudrate an.
Beim Debuggen können die Buffer natürlich schon vollaufen im Hintergrund.
Der Fehler kann natürlich trotzdem noch alle möglichen Ursachen haben, war jetzt nur eine Idee.
Ich benutze deswegen einen eigenen Ringbuffer,...
Forum: Programmieren allgemein
by Rollo62,
12. Mär 2020
RS232 kann zu beliebigen Zeiten kommen, müsste also ThreadSicher behandelt werden bevor Du das irgendwo weiterverarbeitest.
Probier das Mal mit TThread.ForceQueue zu entkoppeln.
ce