Я пытаюсь реализовать root.after в функции, чтобы дать сенсору немного времени для чтения, но я не могу заставить его работать. Вот код функции, который я не могу заставить его работать:
def read_wifi():
global graph_data
try:
del graph_data
except:
pass
graph_data=np.array([0])
flag = True
while graph_data.shape[0] < 64:
while flag == True:
texto='LX'
connection.send(texto.encode())
def callback_after():
global graph_data
print('a')
graph_data=connection.recv(1024).decode()
connection.settimeout(3)
graph_data=graph_data[:-2]
graph_data=graph_data[0:]
graph_data=graph_data[:].split()
graph_data = np.nan_to_num(graph_data)
try:
graph_data = np.array([float(q) for q in graph_data])
flag = False
except:
print('Error de lectura del sensor. Reintentando leer...')
if graph_data.shape[0]<64:
print('Error de lectura del sensor. Reintentando leer...')
root.after(500,callback_after)
try:
graph_data = graph_data*m+b
except:
pass
graph_data = np.reshape(graph_data,[4,16])
Как вы можете видеть, я добавил строку для вывода 'a', чтобы проверить, входит ли код в функцию callback_after, но она никогда не печатается, поэтому я думаю, что проблема в root.after (500, callback_after ) строка.
Если я не реализую функцию обратного вызова, кажется, что root после работает, но мое окно tk зависает каждый раз, когда оно читает с датчика. Я также попытался поместить функцию read_wifi в новую ветку, но она продолжает зависать.
Надеюсь, я ясно дал понять.
С уважением.