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

    即可。

  • 相关阅读:
    LTE Module User Documentation(翻译7)——无线环境地图(REM)、AMC 模型 和 CQI 计算
    直流电机驱动,TIMER口配置
    基于visual studio 2017 以及cubemx 搭建stm32的开发环境(0)
    基于visual studio 2017 以及cubemx 搭建stm32的开发环境(2)
    基于visual studio 2017 以及cubemx 搭建stm32的开发环境(1)
    c语言异常处理机制
    如何使用cubemx 配置freertos,实时查看FreeRTOS任务列表和运行状态
    python 3下对stm32串口数据做解析
    树莓派开发环境快速搭建
    树莓派安装samba
  • 原文地址:https://www.cnblogs.com/unitysir/p/13826939.html
Copyright © 2020-2023  润新知