du weist genau wie ich das ding hasse XD SOrry der kommt mir nicht aufn PC schon allein weil man keine Doku dafür hat, hatte gehofft ich könnte was helfen sorry![]()
du weist genau wie ich das ding hasse XD SOrry der kommt mir nicht aufn PC schon allein weil man keine Doku dafür hat, hatte gehofft ich könnte was helfen sorry![]()
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
danke, aber ohne eigene Installation zum vorher selber-testen wird das mit den Hilfevorschlägen wohl leider nicht so schrecklich viel fruchten...
PS,
habe jetzt probiert:
Code:void __fastcall TForm1::ComPort1Exception(TObject *Sender, TComExceptions TComException, AnsiString ComportMessage, __int64 WinError, AnsiString WinMessage) { try { ComPort1->Close(); } catch (...) { } try { Application->Initialize(); } catch (...) { Application->Terminate(); } }
damit ist das Beenden bei USB-Unterbrechung leichter möglich ohne dass es sich aufhängt (aber auch nicht 100% korrekt), und springt auch sonst leichter raus, wenn Fehler schon beim 1. Verbinden passieren... :-/
Geändert von HaWe (25.01.2019 um 14:19 Uhr)
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
Geändert von Siro (25.01.2019 um 15:31 Uhr)
@Mxt:
Achso, das wuste ich nicht, danke Dir für die Info. Ich dachte bisher C und Pascal unterscheiden sich unter anderem in der Reihenfolge bei den Paramterübergaben.
Pascal Parameterreihenfolge links nach rechts, bei C rechts nach links.Is ein anderes Thema, könnte man einen separaten Thread aufmachen...
![]()
oder hier gucken:
https://de.wikipedia.org/wiki/Aufrufkonvention
Siro
Geändert von Siro (25.01.2019 um 15:39 Uhr)
Ja, Pascal und C unterscheiden sich. Aber das war bei Frankensteins Monster auch so. Hat trotzdem funktioniert. (Irgendwie)
Guten Morgen HaWe und Ceos:
jetzt verstehe ich grad erst die Problematik:
Wenn Du deinen Arduino abziehst, dann ist bei Dir ja die ganze RS232 (also der virtuelle Comport) weg ?
und dann bekommst Du bei jeglichem Versuch auf die Schnittstelle zuzugreifen einen Exeption.
Diese Problematik habe ich garnicht, weil auf meinem Motherboard gibt es einen "echte" RS232 und wenn ich mein
Kabel abziehe, dann kommen lediglich keine Daten mehr, aber meine Schnittstelle existiert weiter.
Aufgefallen ist es mir nämlich grad also ich über einen CP2102 (also einen externen USB zu RS232 Converter) am USB Port arbeite.
Wenn ich dann das Kabel rausziehe, bekomme ich von Windows einen Exeption Error. Logisch Schnittstelle is ja weg.
Die Problematik war bei mir und meinen Geräten noch nie aufgetaucht,
das stellt also ein ganz neus Problem dar und da seid ihr Ceos und Du vermutlich wohl auf dem richtigen Weg.
Wie man diese Fehler abfängt weis ich auch noch garnicht, das bräuchte ich nämlich irgendwann auch für meine Basteleien.
Da wurde doch heute morgen tatsächlich nicht nur ich, sondern auch mein Forschungsdrang geweckt
Siro
Lesezeichen