Allgemeine Frage zum Umgang mit Systemzeigern - Sprache egal

Antworten
t.ebbinghaus
Beiträge: 50
Registriert: Montag 5. Juli 2010, 07:34

Allgemeine Frage zum Umgang mit Systemzeigern - Sprache egal

Beitrag von t.ebbinghaus » Freitag 16. Februar 2018, 07:26

Guten Morgen zusammen,

Ich möchte eine DLL mit folgenden Eigenschaften programmieren:
  • - Die DLL dient als externe String-Quelle (lieftert einen String aus einem JSON- Objekt aus einer Web-Abfrage)
    - Die DLL hat wenigtens 3 String-Eingänge, um die JSON-Objekt Abfrate zu parameterisieren
    - Die DLL hat einen CLK Eingang: Bei einer fallenden Flanke am CLK soll das JSON Obojekt abgeholt, zerlegt und das Ergebnis an den String Ausgängen bereit gestellt werden.
    - Das Ergebnis soll solang an den String Ausgängen angezeigt werden, bis die Flanke an CLK erneut fällt
    - Die DLL hat einige (derzeit 9) String Ausgänge.
Nun ist es leider so, dass die Stringübergabe sowohl für Eingänge als auch für Ausgänge mit dem selben Speicherzeiger (mit PStrings:PStringParams) erfolgt. Anders als bei numerischen Parameter gibt es keine separaten Zeiger für Ein- (PInput:PDLLParams) bzw. Ausgänge (POutput:PDLLParams). Damit muss ich die Eingangsignale bei jedem Durchlauf mit den Zeigern auf PstringParams [1...3] lesen, die Berechnungen durchführen und wieder auf dieselben Speicherbereiche PstringParams [1...3] zurückschreiben. Soweit so gut - das funktioniert. Nur: Wenn ich die DLL ohne fallende CLK Flanke aufrufe, d.h. keine Berechnung durchführe, wird mir der Eingangstring 1:1 auf den Ausgang durchgereicht. Ich hatte bisher folgende Ideen:
  • - Ein Zwischenspeichern der Ergebnisse mit PUser:PDLLParams geht leider nicht, da dieser Zeiger nur numerische Werte aufnimmt ... oder gibt es da einen Trick???
    - Ich könnte die Berechnung jedemal durchführe, d.h. das JSON Objekt jedes mal abfragen. Ja, das funktioniert, aber:
    • Dadurch wird die Schaltung sehr träge.
      Die Abfrage ist mit einer Volumenlizenz verbunden. Jede Abfrage kostet Geld -> Geht zwar, will ich aber nicht.
Habt Ihr sowas schon mal geöst, wenn ja, wie?

Danke und Gruss
Thorsten

t.ebbinghaus
Beiträge: 50
Registriert: Montag 5. Juli 2010, 07:34

Re: Allgemeine Frage zum Umgang mit Systemzeigern - Sprache egal

Beitrag von t.ebbinghaus » Freitag 16. Februar 2018, 15:20

OK, da scheint man sich darüber ausgetobt zu haben ... :-)

http://forum.abacom-online.de/viewtopic.php?f=42&t=3235

IKT
Beiträge: 510
Registriert: Mittwoch 4. November 2009, 18:32

Re: Allgemeine Frage zum Umgang mit Systemzeigern - Sprache egal

Beitrag von IKT » Samstag 17. Februar 2018, 19:02

Naja, gibt schon Lösungen, jedoch braucht man dafür "static strings" in der DLL. Da ich die Struktur, einer json Datei nicht kenne, kann ich darüber hinaus, nichts mehr sagen ...
Wird die Abfrage (welche danach, die Datei liefert) aus PL-E gestartet, oder erfolgt dies ausserhalb (Browser o.ä.) und in PL ist nur noch Datei laden, benötigt?
++++++
Gruss/regards IKT

t.ebbinghaus
Beiträge: 50
Registriert: Montag 5. Juli 2010, 07:34

Re: Allgemeine Frage zum Umgang mit Systemzeigern - Sprache egal

Beitrag von t.ebbinghaus » Montag 19. Februar 2018, 17:49

Hallo,

danke für die Rückmeldung.
Nein, die Abfrage ist in der DLL integriert und liefert einen String, den ich über PeekS (Purebasic) auf den PString-Output an die Zeigerstelle des entsprechenden Ausgangs schreibe. Für die Abfrage wird die Network-Bibliothek von Purebasic verwendet.

Kannst Du mir bitte mit "Statischen Strings" helfen - meine Programmierkenntnisse waren nie sehr gut und sind jetzt auch noch eingerostet. Kann ich Strings ähnlich PUser innerhalb der DLL Zwischenspreichern, die dann von Aufruf zu Aufruf weiter verwendet werden können, Zitat aus der PL-E Hilfe:

"Hintergrund: Variablen, die die DLL selbst deklariert sind globale Variablen. "
Ich könnte z.B. die fraglischen Strings in Variablen speichern. Die Variablen werden bei jedem DLL Aufruf immer auf den PString-Output geschreiben. Lediglich bei einer fallenden Flanke am CLK wir die Variable geändert. Ist das möglich / richtig?

Besten Dank und Gruss
Thorsten

t.ebbinghaus
Beiträge: 50
Registriert: Montag 5. Juli 2010, 07:34

Re: Allgemeine Frage zum Umgang mit Systemzeigern - Sprache egal

Beitrag von t.ebbinghaus » Montag 19. Februar 2018, 23:24

... und es funktioniert. Danke für den Hinweis. Natürlich darf nun die DLL nur 1 x pro Schaltung vorkommen, aber das ist bei dieser DLL nicht anders vorgesehen.

Beste Grüsse
Thorsten

Mike D
Beiträge: 489
Registriert: Dienstag 14. Oktober 2008, 14:48
Wohnort: Elbe- Weser-Dreieck

Re: Allgemeine Frage zum Umgang mit Systemzeigern - Sprache egal

Beitrag von Mike D » Dienstag 20. Februar 2018, 08:21

Moin Thorsten,
https://www.purebasic.com/german/docume ... tatic.html
Wenn du die Variablen innerhalb von einer Funktion mit static deklarierst bleibt der Inhalt zwischen den Aufrufen erhalten.

Mike

t.ebbinghaus
Beiträge: 50
Registriert: Montag 5. Juli 2010, 07:34

Re: Allgemeine Frage zum Umgang mit Systemzeigern - Sprache egal

Beitrag von t.ebbinghaus » Dienstag 20. Februar 2018, 11:49

Hallo Mike,

Perfekt, danke schön ... lernen durch Trail, Error und externen Verweis, wo ich nachlesen kann ...

Mein Basic ist etwas eingerostet (1982 auf dem TI99/4a) ... damals gabe es Strings und Fliesskommavariablen - mehr nicht. Statisch, Global, Lokal, Integer, Double ... Prozeduren oder Objekte waren unbekannt ... wohl aber das "Goto" ... OK, die Zeiten sind gottlob vorbei - ich arbeite daran.

Gruss
Thorsten

Antworten

Zurück zu „DLL-Programmierung“