Этот фрагмент кода получает данные от последовательного COM-порта и вставляет их в виджет в виде строки, работает нормально. Не могу разобрать строку из ThreadWithReturnValue. Когда я пытаюсь twrv.join (), программа просто останавливается. Помогите разобрать строку, пожалуйста.
import serial
import sys
from threading import Thread
def OnReceiveSerialData(message):
str_message = message.decode("utf-8")
textbox.insert('1.0', str_message)
return str_message
def RegisterReceiveCallback(self, aReceiveCallback):
class ThreadWithReturnValue(Thread):
def __init__(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None):
Thread.__init__(self, group, target, name, args, kwargs, daemon=daemon)
self._return = None
def run(self):
if self._target is not None:
self._return = self._target(*self._args, **self._kwargs)
def join(self):
Thread.join(self)
return self._return
self.ReceiveCallback = aReceiveCallback
try:
twrv=ThreadWithReturnValue(target=self.SerialReadlineThread, args=(), daemon=True)
twrv.start()
print(type(twrv.join()))
except:
print("Error starting Read thread: ", sys.exc_info()[0])
def SerialReadlineThread(self):
while True:
try:
if self.isopen: #если ком порт открыт
self.receivedMessage = self.serialport.readline()
if self.receivedMessage != "":
self.ReceiveCallback(self.receivedMessage)
except:
print("Error reading COM port: ", sys.exc_info()[0])
RegisterReceiveCallback(OnReceiveSerialData)