我必须在两台计算机之间创建UDP连接。 电脑A必须发送每4毫秒。一个数据包给计算机B,告诉B在哪里以及如何移动机器人手臂。 B计算机将发回手臂位置速度和加速度以及交货和位置之间的误差...使用Python进行确定性时间套接字连接
A计算机工作正常,它有C代码程序,我看不到但它不'因为我正在使用的机器人只接受Python代码。 我一直在B计算机上用一个多线程程序来做这样的事情,其中一个线程只有发回错误和位置的功能。
在这个小小的线程中,我试图确定需要发送一个UDP包(teledirigido.fbk.send(...))的时间,然后让一个睡眠时间从4毫秒减去代码执行时间。
class enviaDeterministico(threading.Thread):
def __init__(self,teledirigido):
self.teledirigido = teledirigido
# thanks to mordi
threading.Thread.__init__(self)
self.t = timeit.time
def run(self):
while 1:
self.empieza0 = self.t.time()
self.empieza = self.t.time()
self.teledirigido.cond.acquire()
self.teledirigido.fbk.send(self.teledirigido.lectura.enviarAmpliado())
self.acaba = self.t.time()
time.sleep((0.004-(self.acaba-self.empieza)))
self.teledirigido.cond.release()
self.acaba0 = self.t.time()
print 'tiempo entre envios %.6f'% (self.acaba0-self.empieza0)
的第一个问题是,睡眠法不在于 “(0.004-(self.acaba-self.empieza))” 的说法,Python解释说:
Exception in thread Thread-3:
Traceback (most recent call last):
File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner
self.run()
File "./conclase.py", line 210, in run
time.sleep(0.004-(self.acaba-self.empieza))
IOError: [Errno 22] Invalid argument
如果我使用decsec。程序不会产生错误,而不是毫秒。
我发现的第二个也是最后一个问题是时间不确定。有没有办法在python中运行这段代码并退出?
我有很多问题,我知道,我希望有人回答这个问题,它也会对其他人有用。
感谢大家! stackoverflow和所有使用的人都太棒了!
如果您将您的标识符翻译成英文将是有帮助的。 –