线程评级:
问题运行RoboDK ubuntu
# 1
你好,

我认为有一个错误,在最新版本的RoboDK Linux上,在RoboDK / bin文件夹中,无法运行RoboDK
只有RoboDK-Start.sh在工作。

我的问题,在我的python应用程序中,我必须运行RoboDK。以编程方式(我使用RoboLink.py和“Connect”函数)。Windows没问题,Linux不行

请问你有解决办法吗?
我建议对代码进行修改。这允许您使用RoboDK-Start.sh

def start_robodk(命令):
print('开始%s\n' % self.APPLICATION_DIR)
导入子流程
#导入时间
#tstart = time.time()

从sys导入平台为_platform
If (_platform == "linux" or _platform == "linux2") and os.path.splitext(command[0])[1] == ".sh":
P = subprocess。Popen(command, shell=True, executable='/bin/bash', stdout=subprocess.PIPE)
其他:
P = subprocess。Popen(命令,stdout = subprocess.PIPE)
而真正的:
Line = str(p.stdout.readline().decode("utf-8")).strip()
print(线)
如果'running' in line.lower():
# tel旧有= time.time() - tstart .time
#print("RoboDK启动时间:%. "3f" %已失效)
打破

#子流程。Popen(命令,stdout =子流程。PIPE, bufsize=1, universal_newlines=True) as p:
#自我。_ProcessID = p.pid
#在p.stdout中的行:
# line_ok = line.strip()
#打印(line_ok)
# if 'running' in line_ok.lower():
# print("RoboDK正在运行")
# return #不返回!

进口套接字
连接= 0
对于范围(2)中的I:
(self.PORT_START,self.PORT_END+1):
self.COM = socket.socket(socket。AF_INET socket.SOCK_STREAM)
self.COM.settimeout (1)
试一试:
self.COM.connect(自我。IP、端口)
Connected = self._is_connected()
如果连接> 0:
self.COM.settimeout (self.TIMEOUT)
打破
除了:
Connected = Connected

如果连接> 0:#如果状态为关闭,请尝试打开应用程序
自我。PORT = PORT
打破;
Elif I == 0:
如果自我。IP != 'localhost':
打破;

试一试:
Command = [self.]APPLICATION_DIR] + self。参数
start_robodk(命令)
#导入时间
#time.sleep(5) #等待RoboDK启动并检查网络许可证。
除了:
抛出异常('应用程序路径不正确或无法启动:' + self.APPLICATION_DIR)

如果连接> 0而不是self._verify_connection():
连接= 0
返回连接
# 3
嗨Tonio163,


谢谢你的反馈,我们真的很感激。
很高兴看到你自己解决了这个问题。

请注意,我们将在下周发布Ubuntu的新版本,其中包括这些更正。

杰里米




浏览此线程的用户:
1客人(年代)