zoukankan      html  css  js  c++  java
  • (端口占用问题)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(); //设置为长连接
    

    即可。

  • 相关阅读:
    linux进程间通信--信号量
    linux进程间通信--信号通信
    linux进程间通信--管道通信
    探究守护进程及其错误日志处理
    探究wait与waitpid之间的那些事
    探究一下strtok的用法
    文件IO与标准IO探究及总结
    Linux 库的制作--动态库与静态库
    python基础使用
    linux正则表达式使用
  • 原文地址:https://www.cnblogs.com/unitysir/p/13826939.html
Copyright © 2011-2022 走看看