두 대의 컴퓨터 사이에 UDP 연결을 만들어야합니다. 컴퓨터 A는 각 4 밀리 초를 보내야합니다. 컴퓨터 B로가는 패킷, B에게 로봇 팔을 어디서 어떻게 움직일 지 알려줍니다. B 컴퓨터는 팔 위치 속도와 가속도 및 위탁과 위치 사이의 오차를 다시 전송합니다 ...파이썬을 사용하여 결정 시간 소켓 연결 만들기
컴퓨터가 잘 작동하지만 볼 수없는 C 코드 프로그램이 있습니다. 로봇 때문에 나는 파이썬 코드 만 받아들이는 것으로 일하고있다. 나는 하나의 스레드가 오류와 위치를 되돌려 보내는 유일한 기능을 가진 다중 쓰레드 프로그램으로 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는))는"인수는 파이썬 인터프리터는 말한다 :
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
만약 I decsec을 사용합니다. 대신 miliseconds 프로그램은 오류를 제공합니다.
내가 발견 한 두 번째이자 마지막 문제는 타이밍이 결정적이지 않다는 것입니다. 이 작은 조각의 코드를 실행하고 종료하는 Python에서 시간 제한 이벤트를 만들 수있는 방법이 있습니까?
저는 많은 문제가 있습니다. 저는 누군가이 질문에 답변하고 다른 사람들에게 유용하기를 바랍니다.
모두에게 감사드립니다. stackoverflow 및 사용하는 모든 사람들이 환상적입니다!
식별자를 영어로 번역하면 도움이됩니다. –