INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

C-String-Zeiger Format



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

09.01.2021, 07:53
Beitrag #11

hansi9990 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 180
Registriert seit: Mar 2015

2019
2014
DE

96xxx
Deutschland
RE: C-String-Zeiger Format
Hallo Freddy

Die Anleitungen hatte ich schon gefunden und gelesen, das Problem ist auch nicht das importieren der dll sondern erstmal nur die Funktion "DapiOpenModuleEx" , hier wird im header der Eingang "exbuffer"als C-String-Zeiger definiert, das wird dann so auch importiert und wie hier die Daten übegeben werden ist nicht genau beschrieben.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
09.01.2021, 08:59 (Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2021 09:00 von Martin.Henz.)
Beitrag #12

Martin.Henz Offline
LVF-Team
LVF-Team

Beiträge: 426
Registriert seit: Jan 2005

2.5.1 bis 20
1992
kA

74363
Deutschland
RE: C-String-Zeiger Format
Was in exbuffer steht, das hattest du ganz am Anfang doch beschrieben - so ganz verstehe ich nicht, womit du nun nicht klar kommst.

Zitat:typedef struct
{
unsigned char address[256];
ULONG timeout;
ULONG portno;

ULONG encryption_type;
unsigned char encryption_password[32];
} DAPI_OPENMODULEEX_STRUCT;

Du musst jetzt einen String zusammenbasteln der diese Daten in der Reihenfolge enthält wie es im Header-File angegeben ist.

Martin Henz
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.01.2021, 10:51 (Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2021 10:54 von hansi9990.)
Beitrag #13

hansi9990 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 180
Registriert seit: Mar 2015

2019
2014
DE

96xxx
Deutschland
RE: C-String-Zeiger Format
Ich oute mich mal und sage das ich keine Ahnung von C habe und den Aufbau des Struct zwar etwas verstanden habe, aber nicht wusste wie ich das in LabView umsetzen muss, mir war nicht klar wie ich die Datentypen so zusammensetzen muss damit da am Ende der richtige String raus kommt.
Mit Hilfe von "IchSelbst2 habe ich das dann umgesetzt und das Ergebis weiter oben angehängt.
Gesten habe ich dann endlich das Modul bekommen und konnte es testen, aber leider funktioniert es nicht, was wohl bedeutet das ich einen Fehler gemacht habe, aber nur welchen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.01.2021, 13:43
Beitrag #14

Martin.Henz Offline
LVF-Team
LVF-Team

Beiträge: 426
Registriert seit: Jan 2005

2.5.1 bis 20
1992
kA

74363
Deutschland
RE: C-String-Zeiger Format
Hallo Hansi,

so ganz ohne irgend etwas ist das etwas schwierig.

Was mir aber auffällt ist, dass es

(a) Der Hersteller gar nicht beschreibt, was da als letzter Parameter eigentlich übergeben wird.
(b) Es auch die Funktion DapiOpenModule gibt, bei der man vermutlich nur zuvor das DELIBConfiguration Utility verwenden muss um IP Nummer usw. festzulegen.

Hast du (b) schon einmal probiert...

Bezüglich (a) müsste näheres in den Header-Files stehen ... oder einfach mal direkt an den Hersteller wenden.

Martin Henz
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.01.2021, 14:18
Beitrag #15

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.689
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: C-String-Zeiger Format
(09.01.2021 10:51 )hansi9990 schrieb:  aber leider funktioniert es nicht
Was passiert denn, wenn es nicht funktioniert: Nichts? IDE stürzt ab (auch erst dann, wenn sie beendet wird)? Was spricht denn der Error-Ausgang vom DLL-Knoten? Kann man beim Modul einen Fehler nachfragen? Kann man einen Status abfragen?

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.01.2021, 14:42
Beitrag #16

hansi9990 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 180
Registriert seit: Mar 2015

2019
2014
DE

96xxx
Deutschland
RE: C-String-Zeiger Format
Hi

Danke für dein Antwort, ich habe das Problem gerade herausgefunden, hatte deine info mit dem "höchstwertigen Teil" falsch interpretiert, ich beötige ja für Port, Timeout und Encrytion Type little Endian.
Es ist weder etwas abgestürzt noch hatte man am Fehlerausgang eine Meldung gesehen, es lief einfach durch. Jetzt geht es aber.

Was mich noch etwas verwirrt hat, im Headerfile sind EncryptionType und Password definiert, im Beispiel sind diese beiden Eintrräge ganz weg gelassen und bei mir funktioniert es auch wenn ich das ganz weg lasse und den String um dies 36 Zeichen kürzer sende. Sowas ähnliches hattest du ja auch schon in deiner ersten Antwort geschrieben, nur das du meintest hier sollte mit null aufegüllt werden, das scheint nicht nötig zu sein.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.01.2021, 15:13
Beitrag #17

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.689
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: C-String-Zeiger Format
(09.01.2021 14:42 )hansi9990 schrieb:  das scheint nicht nötig zu sein.
Hier muss ich aber sagen: Der Scheint trügt! Noch schlimmer: Das ist gefährlich!
Wenn in der Beschreibung steht, dass der Datensatz soundsoviele Zeichen hat, kannst du nicht einfach 36 weniger machen. Streng genommen bedeutet ein Zugriff auf einen von 36 nicht vorhandenen Speicherplätze eine Access-Violation (AV). Das dumme daran ist, dass es nicht zwangsläufig zu einer AV kommen muss. Außerdem: Eine AV in einer DLL muss noch nicht zwangsläufig zu einer AV in LV führen. Und es geht noch zwei Stufen schlimmer: Irgendwann stürzt LV ab an einer Stelle, die mit deinem Modul überhaupt nichts zu tun hat. Das Schlimmste aber ist: Es passiert Monate lang nichts - aber dann.

Wenn im Beispiel irgendeinem Parameter kein Wert zugewiesen wurde, heißt das aber nicht, dass der Speicher, in dem die Parameter stehen, nicht alle Parameter enthält. Auch die, denen kein Wert zugewiesen wurde, befinden sich im Speicher - halt mit mindestens undefiniertem Inhalt (meistens ist der Compiler aber so intelligent, dass er beim Anlegen der Variable die Variable löscht, also alles Null).

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.01.2021, 17:49
Beitrag #18

hansi9990 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 180
Registriert seit: Mar 2015

2019
2014
DE

96xxx
Deutschland
RE: C-String-Zeiger Format
Ok, danke für die Warnung.Top1
Irgendwie scheint das aber nur vorgesehen zu sein, so ganz verstehe ich auch nicht welches Passwort das sein soll, es gibt zwar eines für das WebIF des Moduls aber das funktioniert hier nicht. Evtl. ist das auch vom Hersteller nur mal als Platzhalter drin und wird in einem späteren Release aktivert.
Da ich es nicht benötige wird es mir erst dann auf die Füße fallen wenn der Bedarf dafür da ist. Wall
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.01.2021, 20:09
Beitrag #19

hansi9990 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 180
Registriert seit: Mar 2015

2019
2014
DE

96xxx
Deutschland
RE: C-String-Zeiger Format
PS: Ahh ok, es ist doch eine Passwortabfrage in das Modul integriert, man muss sie über das WebIF des Moduls aktivieren dann funktioniert das auch.

So wäre dann alles geklärt, vielen Dank für eure Unterstützung.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.08.2023, 12:16
Beitrag #20

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: C-String-Zeiger Format
Ich gebe zu dass der Header einigermassen verwirrend ist und den Parameter als C String definiert aber anscheinend eine Struct haben möchte. Nicht so schön. Allerdings ist die Datentypbezeichnung im Header einfach eine Information, wenn da anstelle davon wirklich eine flache C Structur als Pointer übergeben werden soll ist das auch in LabVIEW so machbar!

Dazu muss man aber ein bischen basteln und baut man einen Cluster mit folgenden Elementen:

Der erste String muss man als einen Cluster mit 256 uInt8 Elementen definieren.
Dann kommen die drei uInt32 Integers
Und zuletzt kommt noch mal ein Cluster mit 32 uInt8 Elementen

Diesen Cluster verbindet man an den Call Library Node Parameter der als Adapt to Type konfiguriert ist. Das sieht dann ungefähr so aus:

   

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Struktur mit Zeiger auf weitere Struktur an DLL übergeben Wheeliemaster 2 7.517 27.05.2015 08:40
Letzter Beitrag: Wheeliemaster
  DLL - Zeiger auf TParameter Struktur F-Trooper 1 4.826 03.03.2012 22:10
Letzter Beitrag: rolfk

Gehe zu: