AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Auf AT OK warten?

Ein Thema von Schucki · begonnen am 4. Aug 2008 · letzter Beitrag vom 5. Aug 2008
Antwort Antwort
Seite 1 von 2  1 2      
Schucki

Registriert seit: 17. Jul 2004
158 Beiträge
 
Delphi 2010 Architect
 
#1

Auf AT OK warten?

  Alt 4. Aug 2008, 22:24
Hallo Leute,

ich habe ein kleines Programm geschrieben was ein Modem über AT Befehle ansteuert.
Nun wie jeder weiß muß vom Modem auf jeden Befehl ein OK kommen.

Wie stellt man das nun an das man auf diese Reaktion warten kann OHNE CPU Leistung zu verschenken?

eine:

while strEmpfang<>'OK' da geht die CPU Last sehr schnell auf 90%


Hat jemand einen Tip wie man es richtig macht?

AT senden und dann auf das OK warten. Bei anderen Befehlen kommen ja Daten wenn man die PArameter abfragt, da wäre es natürlich gut wenn man nicht vorher in den Daten rumstochert bevor man nicht alles hat.

Gruß Frank
Frank
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Auf AT OK warten?

  Alt 5. Aug 2008, 00:09
Müsste das nicht mit einem Timer zu realisieren sein (ohne zu wissen ob es nicht vielleicht eine andere Methode gibt) !?
Oder willst du das nicht?
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: Auf AT OK warten?

  Alt 5. Aug 2008, 01:41
Ohne Nennung der benutzten Komponenten etc. macht ein Antwort-Versuch überhaupt keinen Sinn. Das mit dem Timer ist schon mal Käse.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Auf AT OK warten?

  Alt 5. Aug 2008, 06:35
Moin,

setz mal Application.Processmessages; mit in die While-Schleife.
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Auf AT OK warten?

  Alt 5. Aug 2008, 08:04
Moin,

wie Hansa bereits sagt ist es hilfreich, wenn du uns sagst, welche Komponente du für das Handling des COM-Ports benutzt. In der regel liefern solche Komponenten ein Ereignis für den Emfang von Daten. Je nach Kompo teilt dir dieses Ereignis entweder eifach nur mit, dass Daten empfangen wurden oder wie viele. Diese holst du dann aus dem Empfangspuffer ab. Oft gibt es hier eine Methode Read oder ReadString oder ähnliches.
Somit mußt du dann nicht in einer Schleife auf den Empfangspuffer pollen.

Gruß oki
42
  Mit Zitat antworten Zitat
Schucki

Registriert seit: 17. Jul 2004
158 Beiträge
 
Delphi 2010 Architect
 
#6

Re: Auf AT OK warten?

  Alt 5. Aug 2008, 08:52
Hi!

Danke für Eure Antworten.
Ja die Komponente ist TComPort. Weiß nicht genau wo ich die her habe.

Die liefert das Ereigniss OnReadCallback.

Hier ein Ausschnitt aus dem Beispiel.
Data enthält die Daten vom COM. Die Komponente läuft mit einem eigenen Thread.

Delphi-Quellcode:
procedure TForm1.ComPort1ReceiveCallBack( Data: string );
begin
  if Memo1.Lines.Count > 500 then
    Memo1.Clear;
  Memo1.Lines.Add( Data );
  Image1.Visible := not Image1.Visible;
end;
Das ist soweit klar was da psssiert.
Nun kommt mein "Problem"...

Delphi-Quellcode:
procedure TForm1.btnSendClick( Sender: TObject );
begin
  ComPort1.send('AT'#13 );
  ... //<----- Hier auf das OK/ERROR warten...
  if bolAnsOk then begin
    ShowMessage('OK empfangen');
  end else begin
    ShowMessage('Kein OK empfangen, nochmal');
  end;
end;
Das Programm soll also erst weiter abgearbeitet werden wenn OK,ERROR oder NO CARRIER vom Modem als Antwort kam, um sicher zu sein das man mit den empfangenen Daten arbeiten kann. Wäre ja auch nicht schön wenn man das Modem mit Befehlen zuflastert ohne zu wissen was es dazu sagt.

Hoffe das war nun etwas ausführlicher...
Gruß Frank
Frank
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Auf AT OK warten?

  Alt 5. Aug 2008, 09:00
Du hast noch nie mit Events gearbeitet oder?
Markus Kinzler
  Mit Zitat antworten Zitat
Schucki

Registriert seit: 17. Jul 2004
158 Beiträge
 
Delphi 2010 Architect
 
#8

Re: Auf AT OK warten?

  Alt 5. Aug 2008, 10:56
Unbewußt vielleicht schon?

Ich würde es gerne lernen!

Gruß Frank
Frank
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Auf AT OK warten?

  Alt 5. Aug 2008, 10:58
Du musst natürlich im Event-Callback auf die Signale reagieren.
Markus Kinzler
  Mit Zitat antworten Zitat
Schucki

Registriert seit: 17. Jul 2004
158 Beiträge
 
Delphi 2010 Architect
 
#10

Re: Auf AT OK warten?

  Alt 5. Aug 2008, 12:17
Ja ok das könnte ich ja so machen...

Delphi-Quellcode:
procedure TForm1.ComPort1ReceiveCallBack( Data: string );
begin
  if not bolAnsOk then bolAnsOk:=Data='OK';
  if Memo1.Lines.Count > 500 then
    Memo1.Clear;
  Memo1.Lines.Add( Data );
  Image1.Visible := not Image1.Visible;
end;
Bleibt nur die Frage, wie man beim Befehl absenden dann "wartet".
Frank
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:15 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