Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: Debug-Infos von LibNoDave deaktivieren?

  1. #1
    Registriert seit
    09.07.2010
    Beiträge
    14
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallo zusammen,

    ich verwende seit einiger Zeit LibNoDave recht erfolgreich und habe mein Programm soweit fertig. Bin derzeit dabei, die Ausgabe etwas zu verbessern. Was mir in diesem Zusammenhang aufgefallen ist, sind die Debug-Informationen von LibNoDave.

    Hier mal ein Screenshot von dem was ich meine:


    Ich frage in regelmäßigen Abständen meine analogen Eingänge ab, jedoch stören mich die "bind Socket error" und "Connected to host..." Ausgaben.

    Diese Ausgaben sind in der "openSocket" Funktion zu finden (openSocket.c). Sie erfolgen über ein Makro, LOG2, welches in der log2.h definiert ist. Ich habe versucht die alternative Version dieses Markos mit "NO_PRINT_CODE" zu nutzen, was aber auch nichts genutzt hat. Ebenso funktionierte das auskommentieren der entsprechenden Zeilen nicht.

    Diese Zeile ist die einzig Debugspezifische in meiner Funktion:
    Code:
    daveSetDebug(daveDebugPrintErrors);
    Die anderen Debug-Defines zu "daveDebugPrintErrors" habe ich ebenfalls durchprobiert, aber ein Define zum deaktivieren scheint es nicht zu geben.

    Habt Ihr vielleicht eine Idee wie ich die beiden Ausgaben deaktivieren kann?
    Zitieren Zitieren Debug-Infos von LibNoDave deaktivieren?  

  2. #2
    Registriert seit
    13.03.2006
    Beiträge
    428
    Danke
    5
    Erhielt 43 Danke für 43 Beiträge

    Standard

    In log2.h

    //######################################
    #ifdef HAVE_PRINTF
    #define LOG1(x) fprintf(logout,x)
    #define LOG2(x,y) fprintf(logout,x,y)
    #define LOG3(a,b,c) fprintf(logout,a,b,c)
    #define LOG4(a,b,c,d) fprintf(logout,a,b,c,d)
    #define LOG5(a,b,c,d,e) fprintf(logout,a,b,c,d,e)
    #define LOG6(a,b,c,d,e,f) fprintf(logout,a,b,c,d,e,f)
    #define LOG7(a,b,c,d,e,f,g) fprintf(logout,a,b,c,d,e,f,g)
    #define FLUSH fflush(logout)

    #define LOG_1(a) fprintf(logout,a)
    #define LOG_2(a,b) fprintf(logout,a,b)
    #endif /* HAVE_PRINTF */
    //### ersetzen durch #############################
    #ifdef HAVE_PRINTF
    #define LOG1(x)
    #define LOG2(x,y)
    #define LOG3(a,b,c)
    #define LOG4(a,b,c,d)
    #define LOG5(a,b,c,d,e)
    #define LOG6(a,b,c,d,e,f)
    #define LOG7(a,b,c,d,e,f,g)
    #define FLUSH

    #define LOG_1(a)
    #define LOG_2(a,b)
    #endif /* HAVE_PRINTF */
    //###################################
    Und dann Bibliothek neu übersetzen.

  3. #3
    muhmann ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.07.2010
    Beiträge
    14
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Danke für den Tipp, das hatte ich noch nicht versucht.

    Ich kam gestern leider nicht mehr dazu zu antworten. Jedenfalls habe ich die log2.h geändert, hatte aber Probleme beim kompilieren der LibNoDave Bibliothek. Ich habe das Makefile.vc und die dazugehörige .bat entsprechend meinen Visual Studio 10 Pfaden angepasst, jedoch will das Makefile die .lib und die .dll nicht neu erstellen.

    Muss man da evtl. etwas bestimmtes beachten?

  4. #4
    Registriert seit
    13.03.2006
    Beiträge
    428
    Danke
    5
    Erhielt 43 Danke für 43 Beiträge

    Standard

    Zitat Zitat von muhmann Beitrag anzeigen
    ... hatte aber Probleme beim kompilieren der LibNoDave Bibliothek. Ich habe das Makefile.vc und die dazugehörige .bat entsprechend meinen Visual Studio 10 Pfaden angepasst, jedoch will das Makefile die .lib und die .dll nicht neu erstellen.

    Muss man da evtl. etwas bestimmtes beachten?
    Ich verwende hauptsächlich Linux und unter Windows MinGW.
    Früher habe ich aber Visual C++ 6.0 verwendet.

    Lege in Visual C++ doch einfach ein neues Projekt an
    entweder als "Win32-Bibliothek (statisch)" (wahrscheinlich das Einfachste)
    oder "Win32 Dynamic-Link Library"
    und füge die Dateien "setportw.c nodave.c" in das Projekt ein.
    Dann sollte doch schon alles OK sein.

    Da fällt mir noch ein, dass es da eine BAT Datei von Visual C++ gbt, die Dir ein paar Environment Variablen setzt.
    Vielleicht musst Du die ja erst aufrufen.
    Bei VS 6.0 ist das:
    c:\Programme\Microsoft Visual Studio\VC98\Bin\VCVARS32.bat

  5. #5
    muhmann ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.07.2010
    Beiträge
    14
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Die statische Bibliothek konnte ich erstellen, jedoch reicht sie leider nicht aus. Sobald ich mein Programm damit erstellen möchte, bringt er bei den LibNoDave spezifischen Funktionen den Fehler "LNK2019: Verweis auf nicht aufgelöstes externes Symbol ...". Das dürfte wegen der .dll sein.

    Ich habe das Projekt von einer statischen zu einer dynamischen Bibliothek geändert. Hier bringt er die gleiche Fehlermeldung in den Funktionen "daveReadISOPacket", "daveSendISOPacket" und "openSocket". Damit sind die Befehle "recv", "select", "send" und einige weitere gemeint. Das sollten meines Wissens nach Netzwerkbefehle sein.

    winsock2.h wird jedenfalls eingebunden, daher sollte das eigentlich funktionieren. Ich verwende zum erstellen der dynamischen Bibliothek die Dateien nodave.c und openSocketw.c. Sowie die Header dieser 2 Dateien und log2.h.

    Benötigt LibNoDave evtl. einen speziellen socket-Header?
    Mir scheint, dass es hier einige Probleme bei der Portierung auf Windows gibt. Zumal einige Header-Dateien Linux spezifisch sind. Z.b. die sys/socket.h

  6. #6
    Registriert seit
    13.03.2006
    Beiträge
    428
    Danke
    5
    Erhielt 43 Danke für 43 Beiträge

    Standard

    Zitat Zitat von muhmann Beitrag anzeigen
    ... Damit sind die Befehle "recv", "select", "send" und einige weitere gemeint. Das sollten meines Wissens nach Netzwerkbefehle sein.
    Du musst die wsock32 bzw. die neuere ws2_32 (kann auch Ipv6 usw.) mit angeben. Die die beiden Libs gehören zum Compiler. Die obigen funktionen gehören zur Socket Library.

  7. #7
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von muhmann Beitrag anzeigen
    Die statische Bibliothek konnte ich erstellen, jedoch reicht sie leider nicht aus. Sobald ich mein Programm damit erstellen möchte, bringt er bei den LibNoDave spezifischen Funktionen den Fehler "LNK2019: Verweis auf nicht aufgelöstes externes Symbol ...". Das dürfte wegen der .dll sein.

    Ich habe das Projekt von einer statischen zu einer dynamischen Bibliothek geändert. Hier bringt er die gleiche Fehlermeldung in den Funktionen "daveReadISOPacket", "daveSendISOPacket" und "openSocket". Damit sind die Befehle "recv", "select", "send" und einige weitere gemeint. Das sollten meines Wissens nach Netzwerkbefehle sein.

    winsock2.h wird jedenfalls eingebunden, daher sollte das eigentlich funktionieren. Ich verwende zum erstellen der dynamischen Bibliothek die Dateien nodave.c und openSocketw.c. Sowie die Header dieser 2 Dateien und log2.h.

    Benötigt LibNoDave evtl. einen speziellen socket-Header?
    Mir scheint, dass es hier einige Probleme bei der Portierung auf Windows gibt. Zumal einige Header-Dateien Linux spezifisch sind. Z.b. die sys/socket.h
    Hab bei mir auch die Makefiles für 2010 angepasst, und zwei Batchdateien zum compilieren geschrieben. Kann Ich dir morgen Online stellen (hab meinen Lappi auf der Baustelle vergessen!)
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  8. #8
    muhmann ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.07.2010
    Beiträge
    14
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von pvbrowser Beitrag anzeigen
    Du musst die wsock32 bzw. die neuere ws2_32 (kann auch Ipv6 usw.) mit angeben. Die die beiden Libs gehören zum Compiler. Die obigen funktionen gehören zur Socket Library.
    Jetzt funktioniert es, vielen dank
    Ich dachte es würde ausreichen, die Header-Dateien einzubinden.

    @Jochen Kühner
    Ja das wäre super wenn Du die Online stellen könntest. Die Lösung über ein Visual Studio-Projekt funktioniert zwar, jedoch hätte ich schon gerne die Möglichkeit LibNoDave mit der Makefile und .bat Dateien zu erstellen.

  9. #9
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von muhmann Beitrag anzeigen
    @Jochen Kühner
    Ja das wäre super wenn Du die Online stellen könntest. Die Lösung über ein Visual Studio-Projekt funktioniert zwar, jedoch hätte ich schon gerne die Möglichkeit LibNoDave mit der Makefile und .bat Dateien zu erstellen.
    jo, stells morgen online.

    habe es auch schon mitels einem visual studio projekt compiliert, jedoch war bei mir dann die dll mehr als doppelt so groß und lief nur auf rechnern mit visual studio....
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  10. #10
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Meine Batchfiles :

    vcwinmake1.bat:

    "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"

    vcwinmake2.bat:

    set PATH_TO_MAKE="C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\nmake"
    %PATH_TO_MAKE% /f MAKEFILE.VC %1

    makefile.vc:

    #
    # Makefile to build a Windows Version of LIBNODAVE using MSVC++ from Microsoft.
    #
    # type 'make' to build libnodave.dll and some statically linked test programs.
    # type 'make dynamic' to make libnodave.dll and some dynamically linked test programs.
    #
    # The directory where the tools are:
    #
    VCPATH=d:\programme\microsoft visual C++ Toolkit 2003
    SDKPATH=d:\programme\microsoft platform sdk

    VCPATH=C:\Program Files\Microsoft Visual Studio 9.0\VC
    SDKPATH=C:\Program Files\Microsoft SDKs\Windows\v6.0A


    CC="$(VCPATH)\bin\cl"
    LL="$(VCPATH)\bin\link"

    CFLAGS= -I"$(VCPATH)\include" -I"$(SDKPATH)\include" -c -DBCCWIN -DDAVE_LITTLE_ENDIAN -TC
    LFLAGS= /LIBPATH:"$(VCPATH)"\lib,"$(SDKPATH)"\lib
    LLFLAGS = /LIBPATH:"$(VCPATH)\lib" /DEF:libnodave.DEF

    PROGRAMS=testMPI.exe testPPI.exe testAS511.exe\
    testPPI_IBH.exe testPPI_IBHload.exe testPPIload.exe \
    testMPIload.exe testISO_TCP.exe testISO_TCPload.exe testIBH.exe testMPI_IBHload.exe \
    testNLpro.exe testS7online.exe


    DYNAMIC_PROGRAMS=testMPId.exe testPPId.exe testISO_TCPd.exe testIBHd.exe testPPI_IBHd.exe

    LIBRARIES=libnodave.dll

    all: $(LIBRARIES)

    dynamic: $(DYNAMIC_PROGRAMS)

    testISO_TCP.exe: nodave.obj openSocketw.obj testISO_TCP.obj
    $(LL) $(LFLAGS) testISO_TCP.obj openSocketw.obj nodave.obj "$(SDKPATH)"\lib\ws2_32.lib /OUT:testISO_TCP.exe
    testMPI.exe: setportw.obj nodave.obj testMPI.obj
    $(LL) $(LFLAGS) setportw.obj nodave.obj testMPI.obj "$(SDKPATH)"\lib\ws2_32.lib /OUT:testMPI.exe
    testIBH.exe: openSocketw.obj nodave.obj testIBH.obj
    $(LL) $(LFLAGS) openSocketw.obj nodave.obj testIBH.obj "$(SDKPATH)"\lib\ws2_32.lib /OUT:testIBH.exe
    testIBHd.exe: libnodave.dll testIBH.obj
    $(LL) $(LFLAGS) testIBH.obj libnodave.lib /OUT:testIBHd.exe
    testPPI_IBH.exe: openSocketw.obj nodave.obj testPPI_IBH.obj
    $(LL) $(LFLAGS) openSocketw.obj nodave.obj testPPI_IBH.obj "$(SDKPATH)"\lib\ws2_32.lib /OUT:testPPI_IBH.exe
    testPPI_IBHd.exe: libnodave.dll testPPI_IBH.obj
    $(LL) $(LFLAGS) testPPI_IBH.obj libnodave.lib /OUT:testPPI_IBHd.exe
    testMPId.exe: libnodave.dll testMPI.obj
    $(LL) $(LFLAGS) testMPI.obj libnodave.lib /OUT:testMPId.exe
    testPPI.exe: testPPI.obj nodave.obj setportw.obj
    $(LL) $(LFLAGS) setportw.obj nodave.obj testPPI.obj "$(SDKPATH)"\lib\ws2_32.lib /OUT:testPPI.exe
    testPPId.exe: libnodave.dll testPPI.obj
    $(LL) $(LFLAGS) testPPI.obj libnodave.lib /OUT:testPPId.exe
    testISO_TCPd.exe: libnodave.dll testISO_TCP.obj
    $(LL) $(LFLAGS) testISO_TCP.obj libnodave.lib /OUT:testISO_TCPd.exe
    testPPIload.exe: nodave.obj setportw.obj testPPIload.obj
    $(LL) $(LFLAGS) setportw.obj nodave.obj testPPIload.obj "$(SDKPATH)"\lib\ws2_32.lib /OUT:testPPIload.exe
    testMPIload.exe: nodave.obj setportw.obj testMPIload.obj
    $(LL) $(LFLAGS) setportw.obj nodave.obj testMPIload.obj "$(SDKPATH)"\lib\ws2_32.lib /OUT:testMPIload.exe
    testISO_TCPload.exe: nodave.obj openSocketw.obj testISO_TCPload.obj
    $(LL) $(LFLAGS) openSocketw.obj nodave.obj testISO_TCPload.obj "$(SDKPATH)"\lib\ws2_32.lib /OUT:testISO_TCPload.exe
    testMPI_IBHload.exe: nodave.obj openSocketw.obj testMPI_IBHload.obj
    $(LL) $(LFLAGS) openSocketw.obj nodave.obj testMPI_IBHload.obj "$(SDKPATH)"\lib\ws2_32.lib /OUT:testMPI_IBHload.exe
    testPPI_IBHload.exe: nodave.obj openSocketw.obj testPPI_IBHload.obj
    $(LL) $(LFLAGS) openSocketw.obj nodave.obj testPPI_IBHload.obj "$(SDKPATH)"\lib\ws2_32.lib /OUT:testPPI_IBHload.exe
    testAS511.exe: testAS511.obj nodave.obj setportw.obj
    $(LL) $(LFLAGS) setportw.obj nodave.obj testAS511.obj "$(SDKPATH)"\lib\ws2_32.lib /out:$@
    testNLpro.exe: testNLpro.obj nodave.obj openSocketw.obj
    $(LL) $(LFLAGS) openSocketw.obj nodave.obj testNLpro.obj "$(SDKPATH)"\lib\ws2_32.lib /out:$@
    libnodave.dll: nodave.obj setportw.obj openSocketw.obj openS7online.obj
    $(LL) $(LLFLAGS) /DLL nodave.obj setportw.obj openSocketw.obj openS7online.obj "$(SDKPATH)"\lib\ws2_32.lib /OUT:libnodave.dll
    testS7online.exe: testS7online.obj nodave.obj openS7online.obj
    $(LL) $(LFLAGS) nodave.obj testS7online.obj openS7online.obj "$(SDKPATH)"\lib\ws2_32.lib "$(SDKPATH)"\lib\user32.lib /out:$@

    #
    # delete all but the sources:
    #
    clean:
    del /f /q *.tds *.il? *.obj *.map *.lib *.dll *.exe *.exp *.o *.a
    distclean:
    del /f /q *.tds *.il? *.obj *.map

    nodave.obj: nodave.c nodave.h
    $(CC) $(CFLAGS) -DDOEXPORT nodave.c
    setportw.obj: setportw.c
    $(CC) $(CFLAGS) -DDOEXPORT setportw.c
    openSocketw.obj: openSocketw.c
    $(CC) $(CFLAGS) -DDOEXPORT openSocketw.c
    openS7online.obj: openS7online.c openS7online.h
    $(CC) $(CFLAGS) -DDOEXPORT openS7online.c
    s7fake.obj: s7fake.c
    $(CC) $(CFLAGS) -DDOEXPORT s7fake.c
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

Ähnliche Themen

  1. SCL gibt Fehler wegen debug info aus
    Von Bensen83 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 22.01.2017, 22:32
  2. Antworten: 11
    Letzter Beitrag: 23.04.2009, 12:42
  3. SCL Debug
    Von Rose im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 03.07.2008, 10:23
  4. Schreibweise SCL Debug Info...
    Von AndreK im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 19.03.2008, 08:43
  5. Antworten: 0
    Letzter Beitrag: 27.01.2005, 16:27

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •