Einzelnen Beitrag anzeigen

Hidden Bandit

Registriert seit: 19. Jul 2018
9 Beiträge
 
Delphi 2007 Enterprise
 
#1

Windows Error Code 87 bei ComPort Abfrage

  Alt 20. Jul 2018, 10:10
Delphi-Version: 2007
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

Danke schonmal im Vorraus!
Angehängte Dateien
Dateityp: zip v8.zip (1,04 MB, 6x aufgerufen)
  Mit Zitat antworten Zitat