每当我尝试`writeBytes`时,libnodave都会超时

时间:2012-12-18 15:39:16

标签: c# libnodave

我正在使用libnodave库与Siemens S7 PLC进行通信。它工作正常,直到我尝试写字节。我几乎总是超时。

我必须连接的代码:

fds.rfd = libnodave.openSocket(port, address.ToString());
fds.wfd = fds.rfd;

if (fds.rfd > 0) {
    di = new libnodave.daveInterface(fds, "IF1", 0, libnodave.daveProtoISOTCP, libnodave.daveSpeed187k);
    di.setTimeout(10000000);

    dc = new libnodave.daveConnection(di, 0, 0, 2);

    if (0 == dc.connectPLC()) {
        _status.connected = true;
    }
}

并写入字节(在另一个方法中,在后面的阶段调用):

dc.writeBytes(libnodave.daveDB, datablock, address, bytestowrite, buftosend);

几乎总是返回-1025(超时)。

在写入之前更改超时或直接移动连接例程无效。

1 个答案:

答案 0 :(得分:1)

随着事情变得奇怪,并且有多线程正在进行,存在问题。

我在调用writeBytes的同时仍在调用readBytes,但结果却很糟糕。

添加互斥锁并更好地修复它。