• (端口占用问题)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(); //设置为长连接
    

    即可。

  • 相关阅读:
    03JavaScript程序设计修炼之道 2019-06-23_15-50-11 验证码
    03JavaScript程序设计修炼之道 2019-06-23_15-21-11 全选和反选
    python进阶(10)迭代器
    python进阶(9)多线程
    python进阶(8)多进程
    python进阶(7)垃圾回收机制
    python进阶(6)深拷贝和浅拷贝
    python进阶(5)异常模块
    python进阶(4)文件操作
    python进阶(3)json文件与python字典的转化
  • 原文地址:https://www.cnblogs.com/unitysir/p/13826939.html
Copyright © 2020-2023  润新知