Autor Beitrag
BL
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

WIN 98, WIN XP, WIN 2000
Delphi 2005
BeitragVerfasst: Di 26.07.11 08:03 
Moin,


ich bin in Delphi nicht mehr so drin, daher mal eine Blödenfrage:

Ich habe ein Form, darauf ein ComPort und eine Taste. Wenn die Taste geklickt wird, soll das ComPort was senden, tut es auch. Jetzt will ich aber eine Bestätigung empfangen. Das heißt, ich muß was senden, die Bestätigung abwarten und dann das nächste senden.
Also gehe ich in meine On-Klick-Ereignis-Routine zu Button1 und sende. Nun ist die Frage, wenn ich gerade in dieser Ereignisroutine bin, kann ich da das andere Ereignis OnRxChar des ComPorts abwarten?
In Controller-Strukturen gedacht habe ich ja einen Interrupt vom Tastendruck und will auf den nächsten Interrupt des Empfanges warten. Wenn ich keine ineinander verschachtelbaren Interrupts habe, gehe ich nach dem ersten in die Hauptschleife zurück und warte den zweiten ab.
Delphi aber hat doch keine Hauptschleife.



BL
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Di 26.07.11 09:31 
Wenn ich Recht sehe, willst Du den Com-Port auf empfange Bytes abfragen. Was wäre denn, wenn Du einen Timer nimmst, der in seinem OnTimer-Ereignis diesen Comport abfragt und dann entsprechende Aktionen veranlasst? Ist nur eine Idee. Ich selber habe Com-Ports bisher noch nicht programmiert.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
Niko S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: Di 26.07.11 10:39 
Application.OnIdle wäre glaub ich das stichwort.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Di 26.07.11 10:52 
user profile iconBL hat folgendes geschrieben Zum zitierten Posting springen:
Nun ist die Frage, wenn ich gerade in dieser Ereignisroutine bin, kann ich da das andere Ereignis OnRxChar des ComPorts abwarten?
In Controller-Strukturen gedacht habe ich ja einen Interrupt vom Tastendruck und will auf den nächsten Interrupt des Empfanges warten. Wenn ich keine ineinander verschachtelbaren Interrupts habe, gehe ich nach dem ersten in die Hauptschleife zurück und warte den zweiten ab.


Irgendwo hat Delphi sicher auch eine Programmschleife, so müssen z.B. die messages ausgelesen werden (ButtonClick).

Solange du kein Sleep ausführst, wird das Ereignis OnRxChar auch eintreffen. Das ist ja gerade der Vorteil an den Ereignissen, dass du nicht zyklisch abfragen musst, da das jemand andres für dich tut (Delphi, Interrupts).

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 26.07.11 11:02 
Moin!

user profile iconBL hat folgendes geschrieben Zum zitierten Posting springen:
Also gehe ich in meine On-Klick-Ereignis-Routine zu Button1 und sende. Nun ist die Frage, wenn ich gerade in dieser Ereignisroutine bin, kann ich da das andere Ereignis OnRxChar des ComPorts abwarten?
Du brauchst einen Programmzustand (Zustandsmaschine), dann kannst du kontrolliert auf Ereignisse reagieren. Hier ist eine kleine Einführung dazu. :idea: :les: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.