Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm hängt bei Kommunikation über RS232 (Com) (https://www.delphipraxis.net/90988-programm-haengt-bei-kommunikation-ueber-rs232-com.html)

DoktorD 27. Apr 2007 06:16


Programm hängt bei Kommunikation über RS232 (Com)
 
Servus!!!

Habe ein Programm geschrieben, mit dem ich über die Com-Schnittstelle Werte einlese. Das funktioniert auch alles super (Aufbau der Verbindung usw.). Aber wenn ich irgendetwas messe, dass macht mein Programm während der Messung garnichts mehr. Habe da z.B. eine Zeitanzeige mit Sekunden. Diese hängt dann solange ich messe.

Weiß einer von Euch warum das so ist? Kann man das irgendwie ändern?

bitsetter 27. Apr 2007 06:57

Re: Programm hängt bei Kommunikation über RS232 (Com)
 
Moin Moin,

du könntest innerhalb der Messung ein Paar mal
Delphi-Quellcode:
application.ProcessMessages
aufrufen, oder falls das nicht geht die Messung in einen eigenen Thread laufen lassen.
Dazu einfach mal nach TThread oder CreateThread() suchen.

DoktorD 27. Apr 2007 07:49

Re: Programm hängt bei Kommunikation über RS232 (Com)
 
Danke für die Antwort. Das sagt mir leider noch garnichts, aber ich werde mich mal im Forum zu diesen Themen durchlesen.

Gruber_Hans_12345 27. Apr 2007 07:50

Re: Programm hängt bei Kommunikation über RS232 (Com)
 
du könntest vor dem lesen immer überprüfen, wieviele bytes bereits in der seriellen schnittstelle angekommen sind, und nur diese bytes lesen, dann blockiert der lese befehl auch nicht.

alzaimar 27. Apr 2007 08:05

Re: Programm hängt bei Kommunikation über RS232 (Com)
 
Hm...

Normalerweise ist die Kommunikation mit Schnittstellen unter Windows Event-gesteuert. D.h., Du bzw. deine Anwendung wird benachrichtigt, sobald sich etwas an der Schnittstelle tut. Daher kann da eigentlich Nichts hängen.

Wie greifst Du denn auf RS-232 zu? Mit welchem Tool?

Gruber_Hans_12345 27. Apr 2007 08:10

Re: Programm hängt bei Kommunikation über RS232 (Com)
 
Zitat:

Zitat von alzaimar
Normalerweise ist die Kommunikation mit Schnittstellen unter Windows Event-gesteuert. D.h., Du bzw. deine Anwendung wird benachrichtigt, sobald sich etwas an der Schnittstelle tut. Daher kann da eigentlich Nichts hängen.

aber nur dann, wenn man die schnittstelle mit dem zusätzlichen parameter FILE_FLAG_OVERLAPPED öfffnet, ansonsten ist die blockierend

DoktorD 27. Apr 2007 08:18

Re: Programm hängt bei Kommunikation über RS232 (Com)
 
Zitat:

Zitat von alzaimar
Wie greifst Du denn auf RS-232 zu? Mit welchem Tool?

Ich mache das wie hier:

hier klicken

alzaimar 27. Apr 2007 11:45

Re: Programm hängt bei Kommunikation über RS232 (Com)
 
Das sind aber viele Alternativen in dem Thread....

DoktorD 27. Apr 2007 12:06

Re: Programm hängt bei Kommunikation über RS232 (Com)
 
Ok stimmt. Ich meine den DelphiCode der da hinterlegt ist

alzaimar 27. Apr 2007 12:17

Re: Programm hängt bei Kommunikation über RS232 (Com)
 
Genau, Du setzt dich auf die Schnittstelle (per read) und wartest, bis alle Daten da sind.

Mit den anderen in dem angesprochenen Thread geposteten Komponenten passiert das nicht. Denn dann meldet sich die Komponente, sobald Daten zum Empfang bereit stehen.

Alternative: Du verlagerst die Kommunikation in einen Thread: Der kann dann warten, bis der Arzt kommt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz