(端口占用问题)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();
每隔五秒便会去连接端口:
现在我怀疑可能是这一段代码导致了端口的占用:
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();
端口占用还是会继续增加:
第四次试验
将这两行代码加上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();
}
可惜的是端口占用还是会增加:
解决办法:
在初始化 KukaAvarProxyNet 后 调用
//HSL连接kuka机器人默认为 短连接
kukaAvarProxyNet.SetPersistentConnection(); //设置为长连接
即可。