pyqtdesigner değer güncelleme

Başlatan pax, 20 Nisan 2020, 15:57:21

pax

Arduino ve Raspberry Pi'yi usb ile haberleştiriyorum. Arduino ile ölçtüğüm sensor bilgilerini raspberry pi de pyqt5 ile alıp okuyabiliyorum.  Qtdesigner ile bir ara yüz tasarlamaya çalışıyorum. Arayüz programında sensor değerlerini okuyup yazdırıyorum.
   Problemim değerler güncellenmiyor. İşin bu kısmını başaramadım. bu konuda yardımcı olursanız sevinirim.
from PyQt5 import QtCore, QtGui, QtWidgets
import serial
from time import sleep
from PyQt5.QtCore import QTimer
ser = serial.Serial ("/dev/ttyUSB0", 38400,timeout=3)
gelen_bilgi = ser.read()

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(295, 302)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(245)
        sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
        MainWindow.setSizePolicy(sizePolicy)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label_sensor1 = QtWidgets.QLabel(self.centralwidget)
        self.label_sensor1.setGeometry(QtCore.QRect(20, 40, 81, 36))
        self.label_sensor1.setObjectName("label_sensor1")
        self.lcdNumber_sensor_1_deger = QtWidgets.QLCDNumber(self.centralwidget)
        self.lcdNumber_sensor_1_deger.setGeometry(QtCore.QRect(120, 20, 158, 78))
        self.lcdNumber_sensor_1_deger.setObjectName("lcdNumber_sensor_1_deger")
        self.label_sensor1_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_sensor1_2.setGeometry(QtCore.QRect(10, 160, 91, 36))
        self.label_sensor1_2.setObjectName("label_sensor1_2")
        self.lcdNumber_sensor_2_deger = QtWidgets.QLCDNumber(self.centralwidget)
        self.lcdNumber_sensor_2_deger.setGeometry(QtCore.QRect(120, 140, 158, 78))
        self.lcdNumber_sensor_2_deger.setObjectName("lcdNumber_sensor_2_deger")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 295, 34))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        
        """  
        self.qTimer = QTimer()
    
        self.qTimer.setInterval(1000) # 1000 ms = 1 s
   
        self.qTimer.timeout.connect(self.sensor1_oku)
      
        self.qTimer.start()
        """
        self.sensor1_oku(MainWindow)
        self.sensor2_oku(MainWindow)
        
    def sensor1_oku(self,MainWindow) :
       
        ser.write(b'g')
        sleep(0.03)
        gelen_bilgi = ser.read()
        bilgi_say = ser.inWaiting()
        gelen_bilgi_ek= ser.read(bilgi_say)
        gelen_bilgi += gelen_bilgi_ek
        gelen=int(gelen_bilgi)
        sleep(0.03)
        self.lcdNumber_sensor_1_deger.display(gelen)
        
    def sensor2_oku(self,MainWindow) :
        
        ser.write(b'o')
        sleep(0.03)
        gelen_bilgi = ser.read()
        bilgi_say = ser.inWaiting()
        gelen_bilgi_ek= ser.read(bilgi_say)
        gelen_bilgi += gelen_bilgi_ek
        gelen=int(gelen_bilgi)
        sleep(0.03)
        self.lcdNumber_sensor_2_deger.display(gelen)
        
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "sensor ölçüm"))
        self.label_sensor1.setText(_translate("MainWindow", "sensor 1"))
        self.label_sensor1_2.setText(_translate("MainWindow", "sensor 2"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

robikod

Timer kullanıyor musunuz ?
Timer kullandığınızda belirli sürelerle yazdırdığınız değerleri, gelen değerlere güncellemek için bir kontrol yapmanız gerekecek.Örneğin 30 sn'de bir Qlabel içerisindeki veriyi güncelleyeceksiniz. Her 30 sn de bir içerisindeki değeri güncelleyecek bir kod yazmanız gerekiyor kodlarınızda böyle bir kısım göremedim.