libnodave-Befehle funktionieren nicht, Sprache C, OS Linux

Die "komischen Zeichen" - kann es sein, daß es die stderr-Ausgabe auf die Konsole ist?
In Deinem Programm rufst Du daveWriteBits(...) auf, ohne vorher eine Verbindung zu einer SPS aufzubauen.
Program.pdf schrieb:
/* res = daveConnectPLC(dC); */


Außerdem verstehe ich nicht, was Du damit bezweckst:
Program.pdf schrieb:
void * wpuffer[8];
...
void * rpuffer[8];
Müßte das nicht heißen:
Code:
byte wpuffer[8];
byte rpuffer[8];
oder
Code:
char wpuffer[8];
char rpuffer[8];

Harald
 
Dein Programm ist so übersät mit Fehlern, dass es eigentlich nicht viel bringt diesen zu korrigieren.
Dir fehlt es an elementaren C-Grundlagen, bezüglich Datentypen, Array, Pointer usw.

Erste Zeile:
const char ip[16] = "192.168.180.48";

und dann gleich:
fds.rfd = openSocket(102, &ip[16]);

Gehe in deinem C-Buch am Besten nochmal ganz zurück an den Anfang.
 
>>const char ip[16]
Das ist ein Array mit den Elementen IP[0] bis ip[15]...

>>fds.rfd = openSocket(102, &ip[16]); /* Öffnen eines Sockets */

&ip[16] ist ein Zeiger auf das Byte hinter ip[15]. Der Inhalt ist unbekannt und hat nichts mit der Variablen ip zu tun!

Servus,

ich habe mir mein eigenes kleines Programm geschrieben, das per libnodave-Befehle mit einer S7-1200 über WLAN kommuniziert.
Das Programm wurde in C geschrieben. Kompiliert wurde es mit dem gcc und ausgeführt wird es in Linux (Virtual Box).

...
Nur in C in Linux funzt es nicht richtig.
Es sind funktionierende Beispiele in C dabei. (testISO_TCO.c und simplified/testISO_TCP.c).
Ebenso ist eine kompilierte Version von testISO_TCO.c dabei, so daß du sehen kannst, daß es mit Linux funktioniert.
Ich rate immer zu dieser Reihenfolge:
- das fertige Testprogramm ausprobieren.
- das Testprogramm selbst kompilieren.
- das Testprogramm um eigene Datenzugriffe ergänzen.
 
Zurück
Oben