我已经将Arduino连接到RPi,在Arduino上,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中的代码:
#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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句