我正在使用libnodave库与西门子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 (超时)。
更改超时或直接在写入之前移动connect例程没有任何效果。
发布于 2012-12-19 17:47:16
像往常一样,事情变得奇怪,多线程正在进行,问题就存在了。
当readBytes的调用仍在进行时,我正在调用writeBytes,弄乱了结果。
添加一个互斥锁和更好的时间来修复它。
https://stackoverflow.com/questions/13936391
复制相似问题