libnodave unter windows CE läuft 🙂

So nach einem langen Wochenende habe ich es geschafft.

Die libnodave läuft unter WinCE.

Man muss dabei beachten das WinCE Standartmässig Unicode verwendet die Beispielprogramme müssen also Dementsprechend angepasst werden.

Was auch noch wichtig ist beim Binden des Sockets muss man darauf achten das man einen freien Port vergibt. Standartmässig wird der Port 102 verwendet unter WinXP wird da dieser durch die SoftSPS belegt ist automatisch ein anderer genommen unter WinCE nicht und anstatt mit der SPS zu kommunizieren redet nodave mit sich selber.

Tja muss man auch erst drauf kommen 😉

Werde schauen das die Dateien in die Library aufgenommen werden dann haben alle was davon.

Da anscheinend ein grosses Interesse am Quellcode besteht habe ich hier das Projekt zum Download:

Source Code

Ein grosser Dank geht an Giorgio der den Sourcecode auf die aktuelle Libnodave Version aktualisiert hat.

Kommentare

17 Antworten zu „libnodave unter windows CE läuft :)“

  1. Avatar von Ulrich Holeschak
    Ulrich Holeschak

    Gibt es den angepassten Sourcecode schon irgendwo zum herunterladen?
    Ich würde mir gerne die libnodave für den ARMV4I übersetzten, jedoch scheinen da doch einige Anpassungen notwendig zu sein.
    Da Sie das ja schon mal gemacht haben könnte ich mir die Arbeit sparen …

  2. Avatar von Marco
    Marco

    Bin leider noch nicht dazu gekommen die Daten an den Entwickler weiter zu leiten. Werde sie aber zusammenstellen dann per Mail zustellen.

  3. Avatar von dragonfire
    dragonfire

    Hallo Marco,

    Lebt dieser Blog noch? Ich hätte ebenfalls interesse an den Sourcecode.

    1. Avatar von Marco
      Marco

      Ja dieser Blog lebt noch auch wenn er nicht so intensiv genutzt wird 😉

      Den Sourcecode bekommst du per Mail.

      Gruss Marco

  4. Avatar von andre
    andre

    Hallo,

    ich hätte ebenfalls Interesse an dem Sourcecode.

    Viele Grüße
    André

  5. Avatar von Giorgio
    Giorgio

    Hi Marco,

    i am trying to follow you instructions but with no luck, i am facing a lot of warning and a link error regarding a conflict „Thumb/ARM“.
    Can You please send me the source code?

    Thank You.
    Giorgio.

  6. Avatar von Thomas Löther
    Thomas Löther

    Hallo,
    sind die Anpassungen für Windows CE inzwischen in den Quellcode eingegangen?
    Gibt es ein Beispielprojekt zum Download?

    Viele Grüße
    Thomas

  7. Avatar von Gregor
    Gregor

    Hallo Marco.

    Ich hätte auch Interesse am einem Beispiel (für VB.net).
    Habe einige Probleme, mit meinem Panel (Win Embedded CE 6.0), dass alles darauf läuft.

    Bitte um Hilfe beim Erstellen. Danke.

    MfG
    Gregor

  8. Avatar von Matthias
    Matthias

    Hallo Macro

    Vielen Dank für die Veröffentlichung des SourceCodes.
    Genau was ich gesucht habe.

    Ich versuche die Library derzeit in Betriebzu nehmen (auf Windows CE 5 / ARM) .

    Das Kompilieren im VS 2008 hat wunderbar funktioniert. Beim Öffnen der Sockets gibt es aber noch Probleme.
    Hast Du eine Idee?

    Gruss
    Matthias

  9. Avatar von Gregor
    Gregor

    @Matthias
    Kannst du mir vielleicht beim kompilieren unter VS2008 helfen. Bekomme das irgendwie nicht richtig hin.
    Vielleicht kann ich dir beim Socket helfen, sofern du das Problem nicht schon gelöst hast.

    MfG

    Gregor

  10. Avatar von Andreas
    Andreas

    Hallo,

    vielen Dank erstmal für alles was hier schon mal steht!

    Ich hab‘ da aber noch ein Problem:
    Und zwar will ich das ganze für ein WinCE 5.0 x86 Rechner übersetzen und zwar mit VisualStudio 2008.

    Erst hat der Compiler die LIBC.lib nicht gefunden (weil nicht in Verzeichnisliste), dann kam aber folgende Ausgabe:
    […]
    nodave.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol „__imp__recv“ in Funktion „__daveReadISOPacket“.
    nodave.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol „__imp__select“ in Funktion „__daveReadISOPacket“.
    nodave.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol „__imp__send“ in Funktion „__daveSendISOPacket“.
    […]

    Ich nehme an, dass ich statt der libc.lib die corelibc.lib verwenden muss. Nur wie erkläre ich das meinem linker?
    Ich verwende das Microsoft Standard SDK „STANDARDSDK500 (x86)“

    Gruss
    andreas

  11. Avatar von michael
    michael

    Hallo,
    ich habe echt Probleme die Anwendungen auf meinem CE-Gerät (Multipanel MP377 mit Win CE 5.0) zum Laufen zu bringen. Beim Starten der Programme kommt immer die Fehlermeldung „…. make sure that all required libraries are available“.
    Habe dann auch versucht mittels regsvrmp.exe die libnodave.dll zu registrieren. Kein Erfolg..
    Hat jemand noch eine Idee, warum mein Panel nicht auf die dll zugreifen kann?

    Gruß Michael

  12. Avatar von Marc
    Marc

    Hallo Marco,

    ich möchte ein HMI-Panel mit eigener Applikation mit einer S7-300 per TCP/IP verbinden. Das Anwenderprogramm ist in C# geschrieben. Ich habe bereits deine überarbeitete libnodave.net.dll über den Downloadlink heruntergeladen, und den neuen opensocket-Befehl eingebaut.
    Allerdings kann ich keine Verbindung mit der SPS aufbauen. Den PING-Befehel habe ich vom HMI-Panel schon ausprobiert, was auch funktioniert hat.
    So sieht der Code aus:
    fds.rfd = libnodave.openSocket(102, ControlElement.ConvertIPToByteArray(„192.168.232.100“));
    fds.wfd = fds.rfd;
    if (fds.rfd > 0)
    {
    di = new libnodave.daveInterface(fds, „192.168.232.100“, 0, libnodave.daveProtoISOTCP, libnodave.daveSpeed187k);
    di.setTimeout(1000000);
    // res=di.initAdapter(); // does nothing in ISO_TCP. But call it to keep your programs indpendent of protocols
    // if(res==0) {
    dc = new libnodave.daveConnection(di, 0, rack, slot);
    if (0 == dc.connectPLC())
    {
    etc.

    und zur Umwandlung:
    public static byte[] ConvertIPToByteArray(string value)
    {
    IPAddress _IP;
    _IP = IPAddress.Parse(value);
    byte[] AdrBuffer = _IP.GetAddressBytes();
    return AdrBuffer;
    }

    Außerdem weiß ich nicht so recht, wie ich Ports über Windows CE konfigurieren kann. Welchen neuen Port soll ich da einstellen und wo?

    Hoffe du kannst mir da weiterhelfen.

    Viele Grüße
    Marc

    1. Avatar von Marco
      Marco

      Phu ist schon eine weile her müsste ich mir mal genau ansehen.
      Was die Ports betrifft ist es so das du auf dem CE Gerät nichts parametrieren musst soweit ich das in erinnerung habe.
      Die Ports werden über Libnodave automatisch geöffnet.

      Das mit dem Speed finde ich etwas spannend bei dir ich bin der Meinung den musst du nicht konfigurieren bei der TCP Verbindung.

      Gruss Marco

  13. Avatar von Marc
    Marc

    Hallo Marco,

    klasse das du in deinem Blog so aktiv bist.

    Das mit dem Speed habe ich nochmal nachgeschaut und in der Eingabehilfe von Visual Studio 2008 erscheint erscheint dieser auch als letzter Übergabeparameter.

    Ist die im Downloadordner enthaltene libnodave.dll bereits für WinCE erstellt worden?
    Vielleicht sollte ich noch anmerken, dass das HMI-Panel einen ARM-Prozessor benutzt und ich die IP-Adresse manuell eingestellt habe.

    Viele Grüße

    Marc

    1. Avatar von Marco
      Marco

      Hallo Marc

      ja die Dateien die mitgeliefert werden wurden bereits für CE mit einem ARM Prozessor kompiliert.

      Hat ja auch ein Testprogramm für TCP dabei mit dem du die Verbindung mal prüfen kannst.

      Gruss Marco

  14. Avatar von Marc
    Marc

    Hi Marco,

    endlich funktioniert die Kommunikation. Es hat daran gelegen, dass die IP-Umwandlungsfunktion nicht den erforderlichen Rückgabewert geliefert hat. Im Testprogramm habe ich dann folgenden Code zur Umwandlung gefunden:

    UTF8Encoding encodedIP = new UTF8Encoding();

    fds.rfd = libnodave.openSocket(102, encodedIP.GetBytes(„192.168.232.100“));

    was dann auch wunderbar funktioniert hat.

    Vielen Dank nochmal für die schnelle Hilfe und die ganze Arbeit.

    LG

    Marco

Schreibe einen Kommentar zu Gregor Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert