# LibNoDave Problem mit ReadSZL



## GvOdin (21 Dezember 2006)

Morgen

Ich will aus VB.net mit Hilfe der LibNoDave Lib. die SZL einer S7-300 Station auslesen (mit CP 343-1). Die Verbindung zur SPS steht und funzt auch richtig. Wenn das Programm nun an die stelle res = dc.readSZL(25, 1...19, buf) kommt bekomme ich die Fehlermeldung das der Stapel nicht aufgelöst werden kann, weil nicht genug Werte der Funktion übergeben wurden. Ich kann ja aber nicht mehr eingeben . 
Hier im Forum habe ich gelesen das der Funktion readSZL 5 Werte übergeben werden müssen, warum kann ich nur 3 (Frage z6um Verständnis: sind es eigentlich 4, da der Pointer für die Verbindung mit dc. übergeben wird?) im VB.net übergeben? 

Hoffntlich kann mir jemand helfen bitte, bitte. Und danke im Voraus.


----------



## afk (21 Dezember 2006)

GvOdin schrieb:


> Hier im Forum habe ich gelesen das der Funktion readSZL 5 Werte übergeben werden müssen, warum kann ich nur 3 (Frage z6um Verständnis: sind es eigentlich 4, da der Pointer für die Verbindung mit dc. übergeben wird?) im VB.net übergeben?


Ich hab gerade nachgeschaut, in der libnodave.net.cs ist bis Version 0.8.2 in der Methode readSZL noch ein Fehler, den Zottel mittlerweile behoben hat. Die neue Version ist aber noch nicht released, darum ersetze den Code einfach mal mit diesem:

```
[DllImport("libnodave.dll"/*, PreserveSig=false */ )]
protected static extern int daveReadSZL(IntPtr dc,int id,int index,byte[] ddd, int len);
public int readSZL(int id,int index,byte[] ddd, int len) {
    return daveReadSZL(pointer,id,index, ddd, len);
}
```

Gruß Axel


----------



## GvOdin (21 Dezember 2006)

Hmm alles klar das habe ich mir schon fast gedacht. Aber nun ist der Faktor menschliche Unwissenheit noch da  (meinerseits versteht sich). Es ist nämlich so das ich erst seit ungefähr 4Wochen vb programmiere und vorher nur ein paar, mehr schlechte als rechte, C-Kenntnisse besaß/besitze. Aber nun zu meinen Fragen.
Wie verhällt sich das mit der DLL den cs-File und vb.net? 
Muss ich die cs-Datei in mein Projekt mit einbinden oder an eine spezielle Stelle kopieren ?

Vielen lieben Dank für die Hilfe


----------



## afk (21 Dezember 2006)

GvOdin schrieb:


> Wie verhällt sich das mit der DLL den cs-File und vb.net?
> Muss ich die cs-Datei in mein Projekt mit einbinden oder an eine spezielle Stelle kopieren ?


Ich hab's zwar noch nicht ausprobiert, aber durch Ausführen der MSNet.bat wird wohl die libnodave.net.dll aus der libnodave.net.cs erstellt. Die dll bindest Du dann ganz normal in dein vb.net-Projekt ein, so wie Du es mit der alten dll auch gemacht hast.


Gruß Axel


----------



## GvOdin (21 Dezember 2006)

wenn ich die bat ausführe bekomme ich folgende Ausgabe und nix passiert weil er ja nix findet. Siehe Bild in der Anlage.


----------



## Zottel (21 Dezember 2006)

Das sieht mir so aus, als wenn csc.exe (der C#-Compiler) nicht zu finden ist. Du mußt entweder den Pfad mit set path=<Pfad zum Compiler in deiner Installation> anpassen oder in der Batch-Datei ergänzen.


----------



## GvOdin (21 Dezember 2006)

Aha ???

Wie mache ich das mit visual studio 2005 pro


----------



## afk (21 Dezember 2006)

GvOdin schrieb:


> Wie mache ich das mit visual studio 2005 pro


Such doch einfach mal nach der csc.exe (mit Suchen im Explorer), und trag den Pfad dann in die MSnet.bat ein.

Gruß Axel


----------



## GvOdin (21 Dezember 2006)

Hurra, Prima, Supi es funzt 

Danke für eure Hilfe, ich verneige mich!!!


----------



## GvOdin (22 Dezember 2006)

Serce ich noch ma 

Das mit dem auslesen der SZL haut jetzt ja hin wie lese ich aber die Nutzdaten. Damit meine ich die Datensätze, die bestehen ja nur aus Bytes also aus ner Hexzahl. Als was kann ich diese Zahlen intepretieren? Als ASCII-Zeichen oder ist das von SIEMENS intern codiert?


----------



## Zottel (22 Dezember 2006)

Die Bedeutung der Bytes der Einträge der SZL ist zum Teil in den Handbüchern von Siemens erklärt, zum Teil auch nicht. Die SPS liefert keine Texte. Diese bringt z.B. bei der Baugruppendiagnose Step7 mit, wodurch der Text dann auch gleich in der bei Step7 gewählten Sprache ausgegeben wird.


----------

