Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FlowControl mit Schleife erhöhen (https://www.delphipraxis.net/197151-flowcontrol-mit-schleife-erhoehen.html)

Hidden Bandit 19. Jul 2018 10:20

Delphi-Version: 2007

FlowControl mit Schleife erhöhen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
das Programm hat das Ziel, dass die Flow Control von ComPort1 jeweils auf den nächsten Wert erhöht wird und dass dann eine ComPortAbfrage mit der neuen Flow Control durchgeführt wird. Dabei nimmt er die Flow Controls aus einem Array vom Typ TFlowControl und Setzt die entsprechende String von Stelle i des Arrays für die nächste Flow Control ein:
Delphi-Quellcode:
procedure TForm8.FcChange();
var
  i:integer;
begin
  for i := 0 to Length(FlowControl) - 1 do
  begin
    if FlowControl[i] = Comport1.flowcontrol.flowcontrol Then
      break;


  end;
  if i < (High(FlowControl))  then
  begin
    comport1.FlowControl.FlowControl:=Flowcontrol[i+1];
    Memo1.lines.Add('Flowcontrol Changed');
    Memo1.lines.Add('');
    Memo1.lines.add('New Flow Control: '+Flowcontroltostr(comport1.flowcontrol.flowcontrol));
    Memo1.lines.Add('');
Das ganze geht auch so lange Gut, bis das Programm von der Flow Control "None" auf die Flow Control "Custom" (Letzte Flow Control) wechseln soll, denn das geht dann irgendwie nicht mehr, obwohl das Programm vorher reibungslos bis zu diesem Punkt funktionierte, wird das Programm ab diesem Punkt zur Dauerschleife und führt die ComPortAbfragen ab dann in Dauerschleife mit fcNone durch, anstatt noch einmal die Flow Control zu erhöhen und dann aufzuhören, wie es gedacht ist.
Ich hab echt keine Ahnung, was da nicht funktioniert :| aber ich hoffe, dass ihr mir helfen könnt :thumb:


In einer Zip habe ich den gesammten Programm-/Projektordner angehängt, wo ihr den gesamten Quellcode usw. findet.

Schonmal Danke im Vorraus, MfG Hannes xD

Hidden Bandit 19. Jul 2018 12:06

AW: FlowControl mit Schleife erhöhen
 
Um das ganze nochmal etwas näher zu beschreiben:
Das Programm ist teil eines Programms, das alle ComPorts des PCs auf angeschlossene Geräte prüft, indem es die Ports mit einem DTR signal ansteuert und 2500 Millisekunden auf eine Antwort wartet, sonst geht es weiter. Diese Abfrage wird mit jeder Möglichen Kombination von BaudRate, DataBits, StopBits, ParityBits und eben auch Flow Control für jeden belegten ComPort durchgeführt. Da ich mir nicht sicher Bin, ob die Prozeduren die für Baudrate, Databits usw. 100%ig funktionieren, wollte ich auch mal parallel zu meiner Eigenen Fehlersuche nachfragen, ob jemand eine Lösung weis oder ob jemand den Fehler im Code findet.
Das Problem habe ich ja bereits geschildert, falls ich es genauer beschreiben soll, kann ich das tun, wenn ihr wollt.

HolgerX 19. Jul 2018 12:45

AW: FlowControl mit Schleife erhöhen
 
Hmm..

Ich wuste gar nicht, dass es Serieller Verbindung ein 'Custom' FlowControl gibt.
Mir sind nur None, Software und Hardware bekannt.
Gehe an der Stelle hin und überspringe deine Prüfung doch bei 'Custom'.
Gerade weil das ja denn sein könnte was will und Du sowieso nicht die richtige Einstellungen für das externe Gerät kennst.

Hidden Bandit 19. Jul 2018 13:04

AW: FlowControl mit Schleife erhöhen
 
Es kann gut sein, dass du recht hast, denn ich habe einfach alle möglichen Fc's in das array gepackt, aber wenn es die bei Seriellen Ports gar nicht gibt, wäre das ja kein wunder, dass er die nicht mitnimmt :-D

Hidden Bandit 19. Jul 2018 13:39

AW: FlowControl mit Schleife erhöhen
 
Jep, daran hat es gelegen, ich hab einfach die fccustom aus dem Array gelöscht und die länge um 1 verkleinert und schon gings!!! :thumb::thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02: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