Announcement

Collapse
No announcement yet.

Seltsames Verhalten zur Laufzeit ???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Seltsames Verhalten zur Laufzeit ???

    Hallo,

    in einer Anwendung verwende ich einen Thread zur Kommunikation mit der seriellen Schnittstelle. In der Execute-Methode des Threads übergebe ich die eingehenden Daten an den Hauptthread mittels Postmessage. Das funktioniert soweit ganz gut.

    Starte ich nun die Anwendung aus Windows heraus, während Delphi aktiv ist, es braucht kein Projekt geöffnet zu sein, ist alles ok und die Anwendung arbeitet normal schnell. Beende ich nun die IDE oder Starte das Programm, ohne das Delphi läuft, geht alles sehr viel langsamer (mindesten Faktor 10!) unabhängig davon, ob Daten über die serielle Schnittstelle ausgetauscht werden.

    Kann das jemand erklären ?

    Für Hinweise bedanke ich mich sehr.

    Gruß
    Chris

  • #2
    Benutzt du irgendwelche zusätzlichen Shareware-Komponenten ?

    Gruß Hage

    Comment


    • #3
      Nein, alle Komponenten, die ich benutze (LMD, JVC, ect.) sind in anderen Anwendungen erprobt und machen da keine Probleme. Wenn ich das Programm starte, ohne die serielle Schnittstelle zu öffnen (entsprechende Zeilen auskommentiert) läuft alles ganz normal schnell, es muß also mit dem Comport in Verbindung stehen.

      Gruß
      Chri

      Comment


      • #4
        Tja, dann kann man dies nur beurteilen wenn man die Sourcen kennt. Ich habe ähnliches auch schon beobachtet, aber es lag immer am Source.

        Gruß Hage

        Comment


        • #5
          Hallo Hagen,

          zunächst mal danke, auch wenn's nicht wirklich weiterhilft. Ich habe das Problem zwischenzeitlich gelöst, auch wenn ich keine Erklärung gefunden habe.

          Bei der Kommunikation auf der seriellen Schnittstelle, werden verschiedene Geräte auf einem Bus (RS485) angesprochen. Es werden in Folge Befehle abgeschickt und es muß nach jedem Befehl innerhalb eines Timeouts eine Antwort kommen, in Form eines Ok, Fehlercodes oder irgendwelcher Daten.
          Ich bin nun hergegangen und habe vor dem Senden jedes Telegramms ein sleep(20) eingefügt, was zum einen das obrige Problem aus der Welt schaffte (wieso auch immer) und die Kommunikation stabieler, mit deutlich weniger Fehlern, ablaufen läßt.

          Gruß Chri

          Comment


          • #6
            Sleep(0) dürfte dann ausreichen, da es nur darum geht einen "Taskswitch" auszuführen. Mit Sleep(0) erreicht man dies.

            Gruß Hage

            Comment


            • #7
              Werde ich testen, Danke

              Comment

              Working...
              X