Ich habe mir mal den Code von ComPort genauer angesehen.
Der originale Code "Cport.Pas" ist in Delphi programmiert, (wenn es das Original ist) 3652 Zeilen Code
Den Code kann ich "teilweise" gut nachvollziehen, da ich lange Zeit mich mit Delphi beschäftigt habe
und selbst erst eine Serielle Komponente in Lazarus auf Basis der Windows API programmiert habe.
Wie diese UNIT jetzt nach C++ convertiert wird, habe ich aber ehrlich gesagt nicht verstanden.
Habe ja auch bisher nie mit Borland Builder C++ gearbeitet.
Im Code selbst sind SEHR viele Funktionen implementiert, auch Timeouts usw,
Wenn die C-Componente alle Funktionen bietet wie das Delphi Original, dann fehlt es da eigentlich an Nichts.
Wobei ich sie nicht für Optimal halte beim Empfangen, (Geschmackssache)
Ich glaube die Funktion WaitForSingleObject könnte da ein Problem werden,
sie wird unter anderem beim Lesen aufgerufen mit einer "unendlichen" Zeit
Das asynchrone Lesen ist in der Komponente erheblich anders programmiert als bei mir
und könnte, meiner Meinung nach festhängen. Da stecke ich aber auch nicht so tief in der Materie wie das laufen soll.
Daher meine Aussage "festhängen" bitte mit Vorsicht geniessen.
Ich habe bei mir einen 1ms Timer der immer wieder nachschaut ob was da ist und es in "meinem" Ringppuffer packt.
es gibt ja leider keine Interrupts mehr, wie früher mit den Uarts im DOS Modus. Achja das waren Zeiten....
Ich schaue mir das aber auch nochmal an mit dem Empfangen beim Borland C.
Zumindest mal ausprobieren ob da was hängen bleibt und gebe Bescheid.
Mit dem "catch" "exceptions" usw. muss ich gestehen kann ich garnichts anfangen.![]()
Siro
Lesezeichen