Я пытаюсь получить сценарий Python 3.11 с приложением flask, взаимодействующим с полностью отдельным сценарием Python 2.7, который управляет роботом. Файл Python 3.11 создает углы, которые получает рука робота.
Текущая проблема заключается в том, что я не нашел способа получить список углов из одной программы в другую. Кроме того, отправка ракурсов должна быть очень быстрой, поскольку они создаются на основе живого видео. Функция отправки углов на данный момент выглядит так:
def sendAngles(videomodus,liste): # videomodus is a variable to make clear if its a list of lists with angles or just a list with angles
# this function gets called every frame
Я уже пробовал использовать сокет и писать в файл, но в обеих ситуациях обе программы зависают.
В общем, способ обмена данными между различными сценариями — это помещение их в файл.
моя первая идея, что использовать файл - один скрипт добавляется в конец файла, другой скрипт читает (без закрытия, чтобы читать только новые данные). Но если вы используете flask, то другая программа может использовать urllib или requests для получения новых данных из колбы (в виде обычного текста или JSON). Другой скрипт должен будет постоянно запускать цикл для отправки запросов.






Теперь я использую канал для отправки списка между двумя программами.
Отправитель:
import json
import os
check_path = '/home/alex/robbi-master/robbi/pipes/check'
listen_path = '/home/alex/robbi-master/robbi/pipes/liste'
if not os.path.exists(check_path):
os.mkfifo(check_path)
if not os.path.exists(listen_path):
os.mkfifo(listen_path)
def sendwinkel(videoModus, liste):
if not videoModus:
with open(listen_path, 'w') as liste_fifo:
data = json.dumps(liste)
liste_fifo.write(data)
with open(check_path, 'r') as check:
check.read()
elif videoModus:
a = 0
while a < liste.length:
with open(listen_path, 'w') as liste_fifo:
data = json.dumps(liste[a])
liste_fifo.write(data)
with open(check_path, 'r') as check:
check.read()
a += 1
Приемник (ros-скрипт):
def go_to_joint_state(self):
joint_goal = self.group.get_current_joint_values()
with open(listen_path, 'r') as listen_fifo:
data = listen_fifo.read()
joint_goal = json.loads(data)
#self.group.go(joint_goal, wait=True)
print(joint_goal)
with open(check_path, 'w') as check:
check.write('ok')
self.group.stop()
Можете ли вы поделиться минимальным проработанным примером кода вашего сокета и/или файла?