Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQT5-如何在QLCD小部件中显示从串行发送的信号的一部分?_Python_Arduino_Raspberry Pi_Pyqt5_Pyserial - Fatal编程技术网

Python PyQT5-如何在QLCD小部件中显示从串行发送的信号的一部分?

Python PyQT5-如何在QLCD小部件中显示从串行发送的信号的一部分?,python,arduino,raspberry-pi,pyqt5,pyserial,Python,Arduino,Raspberry Pi,Pyqt5,Pyserial,我已经将Arduino连接到RPi,Arduino不断地一行一行地发送关于实际温度的信息(此时,仅从一个传感器发送,稍后我将添加更多传感器)。现在只接收一个信息是没有问题的,但稍后我将从Arduino发送更多数据,如下面的示例所示: 1213141516 其中:12是第一个传感器的温度,13是第二个传感器的温度,等等 我的线程代码: #Worker class SerialThreadClass(QThread): signal = pyqtSignal(str) def _

我已经将Arduino连接到RPi,Arduino不断地一行一行地发送关于实际温度的信息(此时,仅从一个传感器发送,稍后我将添加更多传感器)。现在只接收一个信息是没有问题的,但稍后我将从Arduino发送更多数据,如下面的示例所示:

1213141516
其中:12是第一个传感器的温度,13是第二个传感器的温度,等等

我的线程代码:

#Worker
class SerialThreadClass(QThread):
    signal = pyqtSignal(str)

    def __init__(self, parent=None):
        super(SerialThreadClass, self).__init__(parent)
        self.serialport = serial.Serial()
        self.serialport.baudrate = 9600
        self.serialport.port='/dev/cu.usbmodem14101'
        self.serialport.open()

    def run(self):
        while True:
            rdln = self.serialport.readline().decode('utf-8').rstrip()
            self.signal.emit(str(rdln))  # pipe
            print(rdln)
主窗口中的我的代码:

#MainWindow 
        self.mySerial = SerialThreadClass()
        self.mySerial.start()
        self.mySerial.signal.connect(self.ui.average_temp.display)
我不知道如何在多个qlcd小部件之间分割这个字符串?! 对不起我的英语;)

编辑: 我发现了一个想法,也许这不是正确的方法,但它起作用了:

self.signal.emit(str(rdln[0:2]))

但问题并没有100%解决,因为我可以读取“信号块”,但如何基于这部分信号进行平均?

这与QLCD无关,而是与字符串处理有关

如果确定数据总是成对的,则可以按如下方式拆分字符串:

values = [rdln[i:i+2] for i in range(0, len(rdln), 2)]
但是,既然您说过需要平均值,那么这些字符串必须转换为数字,所以您最好这样做:

    total = 0
    for i in range(0, len(rdln), 2):
        total += (int(rdln[i:i+2]))
    average = total / len(rdln)

非常感谢你,我确信每个传感器的数字量——这是由一些错误决定的,我收到这样的信息:
['73','62','12']1698231440
请澄清,“我收到这样的信息”是完全没有用的,除非你至少说明你是如何得到结果的,以及从什么获得结果的。