LabVIEWForum.de
C-DLL liefert verfälschte Werte an LV zurück - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: DLL & externer Code (/Forum-DLL-externer-Code)
+---- Thema: C-DLL liefert verfälschte Werte an LV zurück (/Thread-C-DLL-liefert-verfaelschte-Werte-an-LV-zurueck)



C-DLL liefert verfälschte Werte an LV zurück - Adiboing - 11.02.2011 09:39

Hallöchen,

also mein Problem ist recht leicht erklärt.

Ich habe ein VI das ansich zwei 2d-Arrays und ein 1d-Array an die DLL übergibt.
Im 1d-Array werden Zahlen ausgelesen die sozusagen die Werte in beiden 2d-Arrays verändern.

Wenn ich durch die DLL Debugge im MSVC dann hab ich am Ende die richtigen Werte in beiden 2d-Arrays.

Wenn ich dann weiter gehe und schaue was die DLL in LabView wieder rausgibt, sind die Werte nicht mehr richtig.

Im Grunde sind in einem solchen 2d-Array in Dimension X 8 bool Werte drin (8-bit)
Da soll dann drin stehen 0,1,0,1,0,1,0,1 das tut es auch beim Debugg durch die DLL. Aber in LabView wenn ich mir den Wire anschaue steht da 1,1,1,1,1,1,1,1 drin. Und das ist ja nicht richtig.

Kann mir jemand vllt sagen wieso auf einmal andere Werte von der DLL an LV übergeben werden?

peace Adi


RE: C-DLL liefert verfälschte Werte an LV zurück - Adiboing - 17.02.2011 08:16

Weiß denn niemand Rat =/?


RE: C-DLL liefert verfälschte Werte an LV zurück - IchSelbst - 17.02.2011 09:10

(17.02.2011 08:16 )Adiboing schrieb:  Weiß denn niemand Rat =/?
Kannst du die Schnittstellenbeschreibung zwischen DLL und LV hier posten? Also die Prototypen der aufrufbaren DLL-Funktionen (.H-Files) sowie die Konfiguration der DLL-Knoten in LV (SubVI)?


RE: C-DLL liefert verfälschte Werte an LV zurück - Adiboing - 17.02.2011 10:16

Ich hab soeben mein Problem selbst herausgefunden.

Solution:

Mein Problem war, ich hatte zwei 2d-Arrays die den Datentyp LVBoolean hatten. Und diese habe ich immer mit '0' und '1' beschrieben. Und der Fehler hier beim zurückgeben an LV ist das dieses bearbeitete Array aus der DLL ungefähr so aussah.

'0' '1' '0' '1' '0' '1' '0' '1'
'0' '1' '0' '1' '0' '1' '0' '1'
'0' '1' '0' '1' '0' '1' '0' '1'


Und das Problem hierbei ist nun das LV dieses Array mit diesen char nullen und eines so interpretiert als wäre alles auf 1. Sprich so siehts dann nunmal in LV aus

1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1

aber wenn ich nun innerhalb der DLL an meine Arrays keine '0' und '1' als Werte gebe sondern normale 0 und 1 Dann sieht das eben so aus.

0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1


und das kommt auch richtig bei LV an. Es lag also daran das ich innerhalb der DLL an meine Arrays immer die Werte '0' und '1' gegeben habe, und diese Spielen für LV keinen Unterschied zu 1. Somit wurde die '0' eben nicht als 0 erkannt.

Das ganze beruht auf Booleanwerten. Nur noch so nebenbei.

Aber dennoch danke für deine Antwort.

peace Adi