Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DLL-Funktionsaufruf-Ende abwarten ohne Callback? (https://www.delphipraxis.net/189135-dll-funktionsaufruf-ende-abwarten-ohne-callback.html)

SearchBot 7. Mai 2016 23:38

DLL-Funktionsaufruf-Ende abwarten ohne Callback?
 
Hallo,

ich habe eine DLL, mit der ich über USB Befehle an ein Messgerät sende.

Nun habe ich festgestellt, daß das Auslesen irgendwann/bald asynchron wird, d.h. ich frage zB den Errorstatus ab und erhalte nochmals (noch einige Male) einen Messwert als Antwort...

Ich habe bereits versucht, eine Reihe von Auslese-Abrufen auszuführen, aber das führt nicht zum Erfolg.

Also wird irgendwo ein Puffer geschrieben, den ich aber nicht löschen kann (weil ich es gerade noch nicht weiß, wie?!).
Ich vermute aber auch, daß ich zuviele Anfragen sende (oder diese sich vervielfachen?), obwohl ich eigentlich recht fix die Antwort bekomme.

Daher frage ich mich, ob ich den Funktionsaufruf in der DLL bis zu seinem Ende abwarten kann - die DLL hat aber keine Callback-Funktion (wenn ich mir mit TDump das so ansehe).

Mache ich einen Denkfehler oder gibt es eine simple Lösung (die ich beim Googeln nicht finden konnte)?

jaenicke 8. Mai 2016 02:36

AW: DLL-Funktionsaufruf-Ende abwarten ohne Callback?
 
Wenn der Funktionsaufruf zurückkehrt, läuft die Abarbeitung dieser Methode auch nicht mehr. Deshalb gibt es dort nichts, auf das du so allgemein warten kannst.

Bei Messergebnissen würde ich allerdings auch als Abfolge erwarten, dass ich diese anfordere und das Gerät dann anfängt diese zu senden, der Funktionsaufruf aber sofort zurückkehrt.

Zum Auslesen bliebe dann solange erneut aufrufen bis es einen Fehler oder keine neuen Daten mehr gibt, je nach Messart usw.

Gibt es denn keine Doku zu der Schnittstelle? Normalerweise kann doch der Hersteller da weiterhelfen.

t.roller 8. Mai 2016 04:36

AW: DLL-Funktionsaufruf-Ende abwarten ohne Callback?
 
USB wird nicht das Problem sein, sondern die Geschwindigkeit des AD-Wandlers im Messgerät.
Deshalb:
In den Daten des Messgeräts nachsehen, wieviele Wandlungen/sec möglich sind.
Multimeter haben üblicherweise eine Abtastrate von 3x/Sekunde.

SearchBot 25. Mai 2016 10:47

AW: DLL-Funktionsaufruf-Ende abwarten ohne Callback?
 
Hallo,

ja - mein Fehler. Ich komme nicht so gut mit AnsiString, PAnsiString, AnsiChar, PAnsichar, string, shortstring, char und PChar klar.
Die Unterschiede hab ich noch nicht so klar verstanden (P.. ist nur die Adresse auf den Typ? :roll:)

Jedenfalls habe ich mit den Typen etwas "rumgespielt" und plötzlich hat es korrekt funktioniert :oops:
Danke für die Anregungen.


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