Мне нужно создать UDP-соединение между двумя компьютерами.Компьютер A должен отправлять каждые 4 милисек.пакет на компьютер B, сообщающий B, куда и как двигать манипулятор.Компьютер B отправит обратно скорость и ускорение положения руки и ошибку между грузом и положением ...
Компьютер A работает нормально, у него есть программа на С-коде, которую я не вижу, но не показываетиз-за робота, с которым я работаю, принимаю только код 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 говорит:
Исключение в потоке Thread-3:
Traceback(последний вызов был последним):
Файл "/usr/lib/python2.6/threading.py", строка 532, в __bootstrap_inner
self.run()
Файл "./conclase.py", строка 210, в прогоне
time.sleep(0.004-(self.acaba-self.empieza))
IOError: [Errno 22] Недопустимый аргумент
Если я использую decsec.вместо миллисекунд программа не выдает ошибку.
Вторая и последняя проблема, которую я обнаружил, заключается в том, что синхронизация не совсем детерминирована.Есть ли способ сделать синхронизированное событие в Python, которое запускает этот маленький кусочек кода и завершается?
У меня много проблем, я знаю, я надеюсь, что кто-то ответит на этот вопрос, и это также принесет пользу другимлюди.
Спасибо всем!StackOverflow и все люди, которые используют это фантастика!