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 

String in char* Umwandeln



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!

12.09.2006, 11:09
Beitrag #1

Cubaner Offline
LVF-Grünschnabel
*


Beiträge: 22
Registriert seit: Jul 2006

LV 8.2.1
2006
kA


Deutschland
String in char* Umwandeln
Hallo liebe LabVIEW Gemeinde,

hier ist ein Funktionsprototyp von einer DLL,
extern "C" CALLBACK __export int AllVarDataDownload(unsigned char com,unsigned char addr,char *filename,void(*fktptr)(),void(*errptr)(int errcode)); //write to inverter

Zur Erklärung, ich möchte eine VarData Datei in einen Umrichter schieben.
Die Funktion AllVarDataDownload soll dies ermöglichen.
unsigned char com ist die Schnittstelle
unsigned char addr ist die Adresse vom Umrichter

soweit ist noch alles im grünen Bereich.

Jetzt zu meiner Herausforderung,

der Variablen *filename vom Typ char muss ich einen String übergeben der auf die benötigte Datei zeigt.
Wie schaffe ich es diesen String so umzuwandeln, dass ich auch noch genügend Speicher zuweise und dass die DLL es auch noch versteht.

Meine andere Herausforderung sind die nächsten Kandidaten.

void(*fktptr)(),void(*errptr)(int errcode)

hier weiß ich nur sie für den Ladebalken bei der Übertragung zuständig sind. Habe aber meine Schwirigkeiten bei der Initialisiereung der DLL wegen der Klammern.

Ich hoffe dass mich jemand verstanden hat. Big Grin

Viele Grüße

Nico

meine bisherige Lösung:


   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
12.09.2006, 12:28
Beitrag #2

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
String in char* Umwandeln
Ich würde es so ausprobieren.

Gruss, Eugen


Angehängte Datei(en) Thumbnail(s)
       

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.09.2006, 12:55
Beitrag #3

Cubaner Offline
LVF-Grünschnabel
*


Beiträge: 22
Registriert seit: Jul 2006

LV 8.2.1
2006
kA


Deutschland
String in char* Umwandeln
' schrieb:Ich würde es so ausprobieren.

Gruss, Eugen


Hallo Eugen,


vielen Dank für den Tipp!
leider bringt er immer noch dass ein Ausnahmefehler aufgetreten ist. Der LabVIEW Speicherbereich kann daher fehlerhaft sein.
Hab auch mal an den Parametern gedreht und bin bis 255 gegangen.
Vielleicht ist der Ansatz ja richtig und der Fehler liegt bei meinen folgenden Parametern. Ich weiß halt nicht was ich mit der leeren Klammer bei void(*fktptr)() machen soll.
Ich teste noch fleißig weiter.

Gruß

Nico



Sonstige .vi  Daten_schreiben9.vi (Größe: 231,99 KB / Downloads: 217)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.09.2006, 15:05
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
String in char* Umwandeln
' schrieb:Ich weiß halt nicht was ich mit der leeren Klammer bei void(*fktptr)() machen soll.
Die "leere Klammer" ist der Parameter-Header der Funktion, die übergeben werden soll. Leer => Keine Parameter. Das Problem sehe ich nicht in der leeren Klammer, sondern in der Tatsache, dass eine Funktion im Sinne von C++ übergeben werden muss. Kann LV ohne weiteres sowas? Möglicherweise kann man einen NULL-Pointer (bzw. eine Variable mit Inhalt NULL-Pointer) übergeben, sodass die DLL keinen Balken anzeigt.

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
12.09.2006, 15:45
Beitrag #5

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
String in char* Umwandeln
' schrieb:extern "C" CALLBACK __export int AllVarDataDownload(unsigned char com,unsigned char addr,char *filename,void(*fktptr)(),void(*errptr)(int errcode));
Zitat:void(*fktptr)(),
Siehe oben.
Zitat:void(*errptr)(int errcode)
Da hier kein Komma zwischen ")(" steht, gehört das zusammen. Es sind also nicht zwei Parameter so wie in deinem DLL-Knoten. [*grübel*] Auch das sieht wie eine funktion aus mit Parameter ErrCode - eigentlich ein Pointer auf eine Funktion mit Parameter.

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
13.09.2006, 15:51 (Dieser Beitrag wurde zuletzt bearbeitet: 13.09.2006 15:52 von Cubaner.)
Beitrag #6

Cubaner Offline
LVF-Grünschnabel
*


Beiträge: 22
Registriert seit: Jul 2006

LV 8.2.1
2006
kA


Deutschland
String in char* Umwandeln
' schrieb:Möglicherweise kann man einen NULL-Pointer (bzw. eine Variable mit Inhalt NULL-Pointer) übergeben, sodass die DLL keinen Balken anzeigt.


Ich weiß ehrlich gesagt nicht wie ich in LabVIEW eine Variable mit Inhalt NULL-Pointer übergebe.
Kann mir jemand weiterhelfen?

Grüße

Nico
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
13.09.2006, 16:53
Beitrag #7

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
String in char* Umwandeln
' schrieb:Ich weiß ehrlich gesagt nicht wie ich in LabVIEW eine Variable mit Inhalt NULL-Pointer übergebe.
Ich auch nicht.

Aber probier' mal folgendes:
Definiere eine 32Bit-UInt-Variable. Die Variable belegt du mit Null (0x00000000). An die DLL übergibst du diesen Parameter als "Typ: numerisch; Datentyp: UInt; Übergabe: Zeiger auf Wert". Diese Vorgehensweise machst du für die beiden Parameter FktPtr und ErrPtr. Dein DLL-Knoten hat dann 5 Parameter.

Und: Ohne Gewähr - versteht sich.

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
15.09.2006, 10:51
Beitrag #8

Cubaner Offline
LVF-Grünschnabel
*


Beiträge: 22
Registriert seit: Jul 2006

LV 8.2.1
2006
kA


Deutschland
String in char* Umwandeln
Hallo zusammen,

ich bin immer noch am rätseln wie man einen string pointer übergibt.
Mein Stolperstein ist, dass die dll ein char* erwartet und ich soll ein string laut beschreibung übergeben.

Beschreibung: "Der Aufruf der VarData-Funktionen wird durch direkten Start der Funktion AllVarDataDownload(...) durchgeführt. In der Header-Datei sind die Parameter (mit Datentypen) aufgelistet, die übergeben werden sollen."

Ist soweit in Ordnung

Beschreibung: "In der AllVarDataDownload wird direkt der Dateiname übergeben, sodass die Datei nicht zuerst eingelesen werden muß."

Hier gebe ich einfach den Pfad+Dateiname mit Dateiendung an.

Beschreibung: "Der Dateiname muss als String mit x Zeichen übergeben werden. Dabei ist auch wichtig, dass dieser String mit einem 0-Byte abgeschlossen ist." Blink

Beschreibung: "Dieser String wird als Pointer an die Funktion übergeben."

Wie soll man das machen wenn die DLL ein char erwartet.

mein bisheriger Entwurf, siehe unten.

bin für jeden tipp zu haben



   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.09.2006, 18:08
Beitrag #9

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
String in char* Umwandeln
Probiertst du die Übergabe so wie "Window Name" nach FindWindow in folgendem VI.


Angehängte Datei(en)
Sonstige .vi  Get_Window_RefNum.vi (Größe: 48,45 KB / Downloads: 195)

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
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  String zu Number umwandeln galilio 6 5.754 01.09.2016 15:38
Letzter Beitrag: GerdW
  HEX-String in Dezimal umwandeln sumsi 18 17.809 16.04.2015 12:13
Letzter Beitrag: jg
  Flexible Präzision für Fließkommazahl in String umwandeln monoceros84 4 4.311 11.12.2014 15:04
Letzter Beitrag: monoceros84
  BinärString umwandeln in Hex String Stefan 4890 3 5.563 13.07.2012 08:38
Letzter Beitrag: Y-P
  String in Array umwandeln? Noobie 36 31.860 19.01.2012 09:02
Letzter Beitrag: Kiesch
  String in Tabelle umwandeln S04View 6 7.774 15.03.2011 11:51
Letzter Beitrag: S04View

Gehe zu: