Python 3 разбора данных с последовательного COM-порта - PullRequest
0 голосов
/ 20 апреля 2020

Этот фрагмент кода получает данные от последовательного 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)
...