(端口占用问题)HSL 读取机器人数据测试

都在 Main 中直接使用:

每次试验后,会等待端口全部释放完毕后,再继续试验

第一次试验:

KukaAvarProxyNet kukaAvarProxyNet = new KukaAvarProxyNet("172.168.0.19", 7000);
OperateResult<string> ret = kukaAvarProxyNet.ReadString("$ROBRUNTIME");

if (ret.IsSuccess) {
    var result = ret.Content;
    Console.WriteLine($"{result}");
}

只开启一个端口:正常


第二次试验:

开启一个线程每隔五秒获取数据

KukaAvarProxyNet kukaAvarProxyNet = new KukaAvarProxyNet("172.168.0.19", 7000);
       
Thread thread = new Thread(() => {
    while (true) {
        OperateResult<string> ret = kukaAvarProxyNet.ReadString("$ROBRUNTIME");

        if (ret.IsSuccess) {
            var result = ret.Content;
            Console.WriteLine($"{result}");
        }

        Thread.Sleep(5000);
        Console.WriteLine("五秒到了...");
    }
});
thread.Start();

每隔五秒便会去连接端口:
6e75603d0155ad8cf975004c9158b8a7.png

现在我怀疑可能是这一段代码导致了端口的占用:

OperateResult<string> ret = kukaAvarProxyNet.ReadString("$ROBRUNTIME");

接下来咱们继续修改代码。


第三次试验

将代码修改为如下:

KukaAvarProxyNet kukaAvarProxyNet = new KukaAvarProxyNet("172.168.0.19", 7000);
OperateResult<string> ret;///////////////////////

Thread thread = new Thread(() => {
    while (true) {
        ret = kukaAvarProxyNet.ReadString("$ROBRUNTIME");/////////////////

        if (ret.IsSuccess) {
            var result = ret.Content;
            Console.WriteLine($"{result}");
        }

        Thread.Sleep(5000);
        Console.WriteLine("五秒到了...");
    }
});
thread.Start();

端口占用还是会继续增加:
170d5613cac8b018e95366acfd54f804.png


第四次试验

将这两行代码加上static,并放入类中

static KukaAvarProxyNet kukaAvarProxyNet = new KukaAvarProxyNet("172.168.0.19", 7000);
static OperateResult<string> ret;

现在代码如下:

static KukaAvarProxyNet kukaAvarProxyNet = new KukaAvarProxyNet("172.168.0.19", 7000);
static OperateResult<string> ret;

static void Main(string[] args) {

    Thread thread = new Thread(() => {
        while (true) {
            ret = kukaAvarProxyNet.ReadString("$ROBRUNTIME");

            if (ret.IsSuccess) {
                var result = ret.Content;
                Console.WriteLine($"{result}");
            }

            Thread.Sleep(5000);
            Console.WriteLine("五秒到了...");
        }
    });
    thread.Start();
}

可惜的是端口占用还是会增加:
e04d12af5e90f5f45d49b15149146908.png

解决办法:

在初始化 KukaAvarProxyNet 后 调用

//HSL连接kuka机器人默认为 短连接
kukaAvarProxyNet.SetPersistentConnection(); //设置为长连接

即可。

原文地址:https://www.cnblogs.com/unitysir/p/13826939.html