QTimer Verständnisproblem
Verfasst: Montag 19. Oktober 2020, 15:22
Hallo zusammen,
ich möchte einen String von einem Mikrocontroller in einer sehr einfachen GUI Anwendung(nur ein Label) angezeigt bekommen.
Timer.isActive = True, aber er springt nicht nach einlesen().
Kann mir bitte jemand auf die Sprünge helfen?
ich möchte einen String von einem Mikrocontroller in einer sehr einfachen GUI Anwendung(nur ein Label) angezeigt bekommen.
Code: Alles auswählen
import sys
import PyQt5.QtCore as core
import PyQt5.QtWidgets as widgets
import PyQt5.QtGui as gui
import PyQt5.uic as uic
from PyQt5.QtWidgets import QMessageBox
from PyQt5.QtCore import QObject, QTimer
import time
import serial
timer = QTimer()
app = widgets.QApplication(sys.argv)
win = uic.loadUi("AM2320.ui")
def msgButtonClick():
pass
def SerialFehler():
msg = QMessageBox()
msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
msg.setIcon(QMessageBox.Critical)
msg.setWindowTitle("FEHLER!")
msg.setText("COM nicht vorhanden!")
msg.setInformativeText("Kann nicht verbinden!")
msg.setStandardButtons(QMessageBox.Ok)
msg.buttonClicked.connect(msgButtonClick)
returnValue = msg.exec()
if returnValue == QMessageBox.Ok:
exit()
try:
ser = serial.Serial('COM11',19200, timeout=1)
ser.close()
win.statusBar.showMessage(ser.name + " VERBUNDEN") #STATUSBAR!!!!
except serial.serialutil.SerialException:
win.statusBar.showMessage(">> COM NICHT VERBUNDEN! <<") #STATUSBAR!!!!
SerialFehler()
def einlesen():
if ser.is_open:
ser.close()
ser.open()
x = ser.in_waiting
if x > 0:
s = ser.read(x)
print(s)
s = str(s)
print(s)
print(s.rfind("F"))
n = (s.rfind("F"))
if n == 2:
win.label_1.setText(s[3:8])
if n == 3:
win.label_2.setText(s[4:9])
ser.close()
timer.timeout.connect(einlesen)
timer.start(1000)
print(timer.isActive())
win.show()
sys.exit(app.exec_())
Kann mir bitte jemand auf die Sprünge helfen?