libnodave & Linux

taxmax

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

Folgendes Szenario:
Habe auf meinen Laptop win7 64Bit laufen. Darauf ist eine VM mit OpenSuse12.3. 32Bit
Auf dieser VM will ich nun eine Anwendung mit libnodave erstellen.
Software dazu: QT5
Hab diese auch so weit fertig. Kann ohne Problem compilieren.
Meine CPU (S7/319) ist von der VM aus erreichbar (ping).

So weit so gut sieht alles i.O. aus.

nur wenn ich versuche mit linodave auf die CPU zuzugreifen, bekomme ich einen Abbruch
SIGPIPE Broken Pipe
das heist so viel dass libnodave auf einen TCP Kanal schreiben will, der nicht vorhanden ist.

int openSocket gibt mir den Wert 22 oder 21 zurück.
dc initialiserung ist auch ok.
di initialisierung ist auch ok.
der Fehler kommt sobald ich versuche daveConnectPLC(dc) aufzurufen.

Kann mir da jemand helfen?
 
Ich will mir keine Gedanken um QT5 machen, daher probiere es erst mit den Testprogrammen, die bei Libnodave dabei sind. Wahrscheinlich ist testISO_TCP dein Freund. testISO_TCP -d zeigt, was es tut.
Was verstehst du unter:
"dc initialiserung ist auch ok.
di initialisierung ist auch ok."??????
Bitte nenne die Namen der Funktionen!
Unter ISO over TCP ist daveConnectPLC(dc) der erste Funktionsaufruf, der wirklich etwas übers Socket sendet.
Allerdings scheint, wenn opensocket() erfolgreich war, doch auch der darin enthaltene connect()-Aufruf Erfolg gehabt zu haben...
 
Hier mal etwas von meinem Code:

int a, res;
daveInterface *di;
daveConnection *dc;
_daveOSserialType fds;

daveSetDebug(daveDebugPrintErrors);

fds.rfd = openSocket(102,"172.20.111.3");
fds.wfd = fds.rfd;

if(fds.rfd > 0)
{
// Init new connection
di = daveNewInterface(fds, "IF1", 0, daveProtoISOTCP, daveSpeed187k);
daveSetTimeout(di, 5000000);
dc = daveNewConnection(di, 2, 0, 2); // insert your rack and slot here

if(0 == daveConnectPLC(dc)) //Ab hier wird dann abgebrochen
{
res=daveReadBytes(dc,daveDB,205,410,2,NULL);
if(0==res)
{
a=daveGetU16(dc);
//Do Soemthing
a=daveGetU16At(dc,62);
//Do Soemthing
}
}
}
closeSocket(fds.rfd);

daveConnectPLC() --> Hier werden noch eineige funktionen aufgerufen bis dann bei bei folgender funktion abbricht:
nodave.c
Zeile 3903:
daveWriteFile(dc->iface->fd.wfd, dc->msgOut, size, i); -> SIGPIPE Broken Pipe
 
Zuletzt bearbeitet:
Zurück
Oben