Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Windows Error Code 87 bei ComPort Abfrage (https://www.delphipraxis.net/197179-windows-error-code-87-bei-comport-abfrage.html)

Hidden Bandit 20. Jul 2018 10:10

Delphi-Version: 2007

Windows Error Code 87 bei ComPort Abfrage
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

mit dem Programm, an dem ich gerade arbeite sollen Einstellungsparameter für die Datenabfrage über einen ComPort ermittelt werden. Dazu wählt der Benutzer zu Beginn aus diversen Checklistboxen die BaudRaten, Databits, StopBits, Paritäten und FlowControls, welche das Programm dann prüfen soll.

Nach dem drücken des Knopfes "Test Starten" führt das Programm für jede mögliche Kombination aus den zuvor ausgewählten Parametern auf jedem angeschlossenem ComPort eine Datenabfrage durch und wertet die empfangenen Signale aus, indem es diese die Zeichen der empfangenen Signale darauf prüft, ob nur die Ziffern 0 bis 9 oder '.' oder ',' vorhanden sind.
Sollte der Messwert nur aus den genannten Zeichen bestehen, werden die Einstellungsparameter in einer AdvancedStringGrid ausgegeben (AdvStringGrid2). In der AdvStringGrid 1 werden alle Messwerte unabhängig von ihrer Richtigkeit mit den Entsprechenden Parametern ausgegeben.

Soweit funktioniert das Programm auch, aber bei meistens wenn viele zu prüfende Parameter eingestellt sind, bricht das Programm ab und es wird der Windows Error Code 87 ausgegeben, welcher die Beschreibung "The parameter is incorrect" hat. Und zugegebenermaßen habe ich keine Ahnung, was den Fehler auslöst und geschweige denn wie man ihn lösen könnte/müsste.
Außerdem scheint der Fehler nicht bei einer bestimmten Prüfparameterkombination aufzutreten, oder zumindest nicht immer wieder bei der selben.


Die Datenabfrage ist derzeit so eingestellt, dass sie bei Mahr Messgeräten über DTR funktioniert, sollte jedoch in der Verbindung zwischen dem Mahr Messgerät (Speziell Mahr Messschieber und Messschrauben) und dem PC zum Beispiel noch ein Mitutoyo Adapter zwischengeschaltet sein oder sollte die Abfrage der Messwerte von einem Mitutoyo Messgerät erfolgen sollen, müsste Mindestens das Datenabfragesignal angepasst werden.
Bei mir ist das Datenabfragesignal derzeit so:
Delphi-Quellcode:
  comport1.SetDTR(false);
  sleep(100);
  comport1.setdtr(true);

Der Quellcodeausschnitt sollte nur zum Beschreiben des Datenabfragesignals dienen, der Quelltextteil, in dem wahrscheinlich der Fehler liegt, ist mehrere Hundert Zeilen lang. Den gesammten Projektordner habe ich als .zip angehängt.

Ich hoffe, dass die Frage icht zu schwierig ist :pale:

Danke schonmal im Vorraus!

Hidden Bandit 20. Jul 2018 10:57

AW: Windows Error Code 87 bei ComPort Abfrage
 
Der ganze Fehler Code/Text lautet : "setcommstate function failed (win error code 87)"

p80286 20. Jul 2018 12:10

AW: Windows Error Code 87 bei ComPort Abfrage
 
Die Suchmaschine meines Vertrauens lieferte mir folgendes:
Zitat:

Remarks

The SetCommState function uses a DCB structure to specify the desired configuration. The GetCommState function returns the current configuration.

To set only a few members of the DCB structure, you should modify a DCB structure that has been filled in by a call to GetCommState. This ensures that the other members of the DCB structure have appropriate values.

The SetCommState function fails if the XonChar member of the DCB structure is equal to the XoffChar member.

When SetCommState is used to configure the 8250, the following restrictions apply to the values for the DCB structure's ByteSize and StopBits members:

The number of data bits must be 5 to 8 bits.
näheres findest Du hier

Gruß
K-H

Hidden Bandit 20. Jul 2018 12:54

AW: Windows Error Code 87 bei ComPort Abfrage
 
Besten dank,
leider verstehe ich nicht viel von dem, was in dem Link steht.

Aber trdm danke :thumb:


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