функция не добавляет элемент data1 или data2 (python наследование) - PullRequest
0 голосов
/ 08 марта 2020

Я пытаюсь добраться до добавленного массива data1, но когда я запустил py-файл, результатом data1 является нулевой массив. Также я пробовал, чтобы вызвать функцию drawit в def init в это время py файл не дает мне никакого результата

import matplotlib
import matplotlib.pyplot as plt
import serial
import matplotlib.pyplot as plt


arduino = serial.Serial('COM8', 9600,timeout=.1)

class serial_class():
    def __init__(self):
        self.data1=[]
        self.data2=[]

    def drawit(self):
        while True:
            while (arduino.inWaiting() == 0):
                pass
            data = arduino.readline().decode('UTF-8')[:-2]
            tempdata = data.split(",")
            self.data1.append(tempdata[0])
            self.data2.append(tempdata[1])


print(serial_class().data1)

1 Ответ

0 голосов
/ 08 марта 2020

Ваш drawit является бесконечной функцией блокировки l oop, поэтому вы никогда не сможете получить доступ к его данным после основного процесса, который был запущен.

Я предлагаю вам использовать потоки:

from threading import Thread
import time


data_1 = []
stop_it = False


def threaded_collector():
  global stop_it 
  i = 0
  while True:
    if stop_it:
        break
    # collect your Arduino data here
    data_1.append(i)
    i = i + 1
    time.sleep(1)


collect_data_thread = Thread(target=threaded_collector)
collect_data_thread.start()

# do you computations here
print(data_1)
time.sleep(5)
print(data_1)

# kill the thread and exit the program
stop_it = True
collect_data_thread.join() 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...