Wenn du die CPU-Last hast und von Problemen weißt, dann kannst du doch auch was dagegen machen?
z.B. dem Thread der serielle Schnittstelle eine höhere Priorität geben
und wenn dann noch nötig winzige Entlastungspausen (je nach aktueller Last) an relevanten Programmstellen (da vor zuviel gerechnet wird) aktivieren.
z.B.:
Delphi-Quellcode:
Var CPULast: Integer;
Procedure ThreadProc...
Var i: Integer;
Begin
Repeat
i := messen; // z.B. i = CPULast in %
InterlockedExchange(CPULast, i);
Sleep(1000);
Until Stop;
End;
// und dann sowas an allen relevanten Stellen
If CPULast > 90 Then Sleep(10);