У меня сложная проблема, которую нужно исправить.
У меня есть два python файла: первый main.py - это серверный скрипт te lnet, который считывает данные из программного обеспечения для сбора данных. Мне удалось прочитать программное обеспечение для входного сигнала (сила или крутящий момент) и использовать его в моем файле python. У меня есть второй файл ( second.py ), ведьма - это скрипт на основе OpenCV, который делает измерения в реальном времени с помощью веб-камеры / камеры с замедленным движением
Мне не удается использовать ### data_val = [] ### из main.py в файл second.py Если я вызову second.py в main.py, процессы не будут одновременными (сначала запускается second.py, а после остановки он продолжает работать с main. py)
Мне нужно использовать в main.py data_val = [] (динамически изменяющийся / обновляемый) в second.py (как динамически изменяющееся значение, которое будет использоваться в математическом уравнении который выглядит как size = data_val = [] / a_variable_from_second.py) Я думаю, что это подразумевает также запуск и запуск процессов одновременно.
Пожалуйста, смотрите изображения.
main .py структура:
сокет импорта
import sys
threading
import struct
import copy
импорт matplotlib.pyplot как plt
импорт matplo tlib.animation как анимация
import numpy as np
время импорта
................... .......................................
..... .................................................. ...
......................................... .................
class MyThread(threading.Thread):
def __init__(self, ready, list_of_used_ch):
threading.Thread.__init__(self)
self.ready = ready
self.list_of_used_ch = list_of_used_ch
self.buffer_data = b''
def run(self):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('Socket created')
global data_val
# Bind socket to local host and port
try:
s.bind((HOST, PORT))
except socket.error as msg:
print('Bind failed. Error Code : ' + str(msg.args[0]) + ' Message ' + msg.args[1])
s.close()
sys.exit()
print('Socket bind complete')
# Start listening on socket
s.listen(10)
print('Socket now listening')
# now keep talking with the client
# wait to accept a connection - blocking call
conn, addr = s.accept()
print('Connected with ' + addr[0] + ':' + str(addr[1]))
self.ready.set()
while True:
self.buffer_data += conn.recv(2000) # size 2000 is default size of dewesoft packages
#print(format(self.buffer_data))
if not self.buffer_data:
break
current_package = Package(self.buffer_data)
if not current_package.full_package:
continue
else:
self.buffer_data = self.buffer_data[current_package.end_index + 8:]
for i in range(0, len(self.list_of_used_ch)):
if self.list_of_used_ch[i].async_ch:
channel_data, timestamp = current_package.read_data_as_async(self.list_of_used_ch[i].data_type, self.list_of_used_ch[i].data_type_size)
data_val = []
data_val.append(channel_data)
print(str(data_val).lstrip('[').rstrip(']'))
time_val = []
time_val.append(timestamp)
#print(str(time_val).lstrip('[').rstrip(']'))
if len(channel_data) > 0:
self.list_of_used_ch[i].channel_data.append(channel_data)
self.list_of_used_ch[i].timestamp.append(timestamp)
elif self.list_of_used_ch[i].single_value:
self.list_of_used_ch[i].channel_data = current_package.read_data_as_single_value(self.list_of_used_ch[i].data_type, self.list_of_used_ch[i].data_type_size)
else:
self.list_of_used_ch[i].channel_data = current_package.read_data_as_sync(self.list_of_used_ch[i].data_type, self.list_of_used_ch[i].data_type_size)
s.close()
Спасибо