libnodave.daveStrerror(res) liefert nur kryptische Zeichen

bool

Level-1
Beiträge
94
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

inzwischen habe ich mit meinem VB2008 Express und libnodave 0.8.4.5 bereits erfolgreich eine Verbindung via ISO on TCP am laufen, doch leider liefert bei mir "libnodave.daveStrerror(res)" nur unleserliche kryptische Zeichen, unabhägig davon ob negative oder positive Fehlercodes wie z.B.: Code 5 nach dc.useResult(rs, n) wenn z.B. eine DB Adresse nicht in der SPS existiert oder eine -128.
Das selbe gilt übrigens auch bei Verbindungsproblemen bei S7Online etc. Es scheint sich hier also um ein prinzipielles Problem handeln.

Kann mir jemand sagen warum ich hier nur kryptische Zeichen bekomme?
Ich wäre ausserdem sehr dankbar wenn mir jemand mitteilen können wo ich eine Auflistung der bekannten Fehlercodes (sowohl positive als auch negative) finden kann.
Anscheinend seien ja negative Codes Meldungen von libnodave und positive Codes von der SPS selbst. Leider bin ich jedoch bei der libnodave Dokumentation selbst nicht fündig geworden.

Danke bereits im voraus für jede Unterstützung.

Gruss,

bool
 
Unicode <> Ansi

Hallo,

bool schrieb:
meinem VB2008 Express und libnodave 0.8.4.5

Mein erster Schuss ins Blaue : VB2008 verwendet als Zeichensatz Unicode und Libnodave Ansi ? Oder vielleicht auch umgekehrt.
Ist jetzt nur meine erste Vermutung, so aus der Hüfte geschossen ...

Gruß

Question_mark

PS : Und ausserdem gehört dieser Fred in das Unterforum "OPC und Hochsprachen", vielleicht kann ein Mod das bitte dahin verschieben.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,



Mein erster Schuss ins Blaue : VB2008 verwendet als Zeichensatz Unicode und Libnodave Ansi ? Oder vielleicht auch umgekehrt.
Ist jetzt nur meine erste Vermutung, so aus der Hüfte geschossen ...

Hallo Question_mark,

danke für das schnelle Feedback.

Weiss da jemand vielleicht Bescheid? Handelt es sich hier um ein Ansi <> Unicode Konflikt zwischen libnodave und VB 2008 Express und weiss ggf jemand wie man diese Problem lösen kann?


PS : Und ausserdem gehört dieser Fred in das Unterforum "OPC und Hochsprachen", vielleicht kann ein Mod das bitte dahin verschieben.
Stimme dem zu wenn der Thread dort besser aufgehoben ist, Danke bereits im voraus an den freundlichen Mod.
 
Kannst mal einen ausschnitt von deinem Code posten, da sieht man vielleicht mehr...

Hallo Chefmech,

der Programmcode VB2008 Express (VB.NET) ist eigentlich ganz unspektakulär:

...
Dim res AsInteger
Dim strTemp As String
Dim n As Integer = 0 'Counter for rs position
...
res = dc.execReadRequest(multireadPDU01, rs)
If res <> 0 Then
WriteDebugInfo("Error from dc.execReadRequest: " & res & " = " + libnodave.daveStrerror(res))
ExitFunction
EndIf
...
res = dc.useResult(rs, n)
If res <> 0Then
strTemp = libnodave.daveStrerror(res)
WriteDebugInfo(
"Error from dc.useResult(Polling n = " & CStr(n) & "): " & res & " = " & strTemp)
End If



Das Ergebnis sieht dann wie im Anhang aus. Hier das Beispiel mit dem Fehlercode 5, da eine Adresse im DB angesprochen wird welche es nicht gibt. Auch bei negativen Fehlercodes (z.B. -128) von dc.useResult() und ebenfals bei anderen Funktionen sieht das Ergebnis ebenso kryptisch aus.

Ich hoffe es hat jemand eine Idee wie man das bei VB.NET in den Griff bekommt. Ich würde mich auf jeden Fall sehr freuen.
Danke auf jeden Fall schon mal im voraus für jede Unterstützung.

Gruss,

bool
 

Anhänge

  • Datalogger_Errorcode.JPG
    Datalogger_Errorcode.JPG
    7,6 KB · Aufrufe: 19
Zuviel Werbung?
-> Hier kostenlos registrieren
Kannst du noch den Teil Posten wo du die Funktionen aus der DLL deklarierst?

Ich frag mich nur ob du das "libnodave." brauchst
Code:
strTemp = libnodave.daveStrerror(res)

oder ob das vielleicht so geht:
Code:
strTemp = daveStrerror(res)
 
Kannst du noch den Teil Posten wo du die Funktionen aus der DLL deklarierst?

Hallo Chefmach,

die Funktionen deklariere ich selbst gar nicht, sondern binde die libnodave.net.dll über das Menu\Projekt\Eigenschaften\Verweise* in mein Projekt mit ein. Ein Screenshot davon habe ich angehängt.
Der Aufruf "strTemp = daveStrerror(res)" ohne "libnodave." funktioniert auf diese Weise nicht, habs grad zur SIcherheit noch einmal getestet.

Gruss,

bool
 

Anhänge

  • Datalogger_libnodave_Deklaration.JPG
    Datalogger_libnodave_Deklaration.JPG
    79,8 KB · Aufrufe: 18
Zuletzt bearbeitet:
OK, arbeite mit einem älteren VisualStudio, da muss ich die funktionen noch deklarieren...

kannst mal versuchen einen Haltepunkt zu setzen und in die Funktion "useResult" oder "daveStrerror" rein zu debugen, ev. findest du da wo's hängt
 
Zurück
Oben