Buenos dias, estoy realizando pruebas con un sensor de temperatura en arduino, estoy utilizando la libreria PySerial para mostrar los datos en python. Pero estos datos son muy planos. Y quiero mostrarlos en una interfas grafica de PyQt5, pero no lo he logrado.En el campo ldt_sensor debo mostrar el dato leído por el sensor. Si alguien me pudiera dicir que estoy haciendo mal le agradeceria. Este es el codigo en PyQt5. Gracias.
import sys
import serial
import time
import pylab
from PyQt5.QtWidgets import (QApplication, QWidget,QToolTip,
QPushButton, QMessageBox, QLabel, QLineEdit)
from PyQt5.QtGui import QIcon, QFont
from PyQt5.QtCore import QCoreApplication
serie = serial.Serial('COM3', 9600, timeout = 1)
class Ejemplo(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
QToolTip.setFont(QFont('Arial', 10))
self.setToolTip('Es un mensaje de prueba <b>QWidget</b> widget')
# En este ejemplo, creamos un botón de salida. Al hacer clic en el botón, la aplicación termina.
qbtn = QPushButton('Salir', self)
qbtn.clicked.connect(QCoreApplication.instance().quit)
qbtn.resize(qbtn.sizeHint())
qbtn.move(50, 50)
#Colocamos un mensaje en el boton
btn = QPushButton('Boton', self)
btn.setToolTip('Boton de prueba <b>QPushButton</b> widget')
btn.resize(btn.sizeHint())
btn.move(50, 80)
#Creamos un Label para escribir testo
lbl = QLabel('Prueba label 1', self)
lbl.resize(lbl.sizeHint())
lbl.move(45, 120)
#creamos un cajon para ingresar datos
ldt = QLineEdit('Prueba Texto 1', self)
ldt.resize(ldt.sizeHint())
ldt.move(120, 120)
#Segundo label
lbl_sensor = QLabel('Prueba Sensor', self)
lbl_sensor.resize(lbl_sensor.sizeHint())
lbl_sensor.move(45, 170)
#segundo cajon
def sensor(): # Funcion para mostrar los datos en la interfas grafica
while True:
dato = serie.readline()# comunicacion serial.
ldt_sensor = QLineEdit(self) # caja donde se muestra el dato enviado por el sensor.
ldt_sensor.resize(ldt_sensor.sizeHint())
ldt_sensor.move(120, 165)
ldt_sensor = dato
#definimos la ventana medidas, Titulo de la ventana, colocamos un icono.
self.setGeometry(300, 300, 300, 220)# X y Y situan la ventana metodo setGeometry
self.setWindowTitle("Mostrar icono en la ventana") #muestra el titulo en la ventana
self.setWindowIcon(QIcon('F:\PyQt\ventana_icono\pyserial.png'))#muestra un icono en la parte izquierda de la ventana
self.show()
#definimos una clase para crear un mensaje de confirmacion si queremos salir
def closeEvent(self, event):
reply = QMessageBox.question(self, 'Mensaje',
"Deseas Salir de la aplicacion?", QMessageBox.Yes |
QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__=='__main__':
app = QApplication(sys.argv)
ex = Ejemplo()
sys.exit(app.exec_())
MOD: etiqueta GeSHi.
la verdad que no entiendo bien que querés saber, pero mirando a vuelo de pájaro tu código, aún te falta algo importante entre la línea 77 y 78:
ex.show()
Deseo que la lectura del arduino se muestre en el campo ldt_sensor...eso seria todo pero no lo he logrado.
el problema para mi es que no tengo ni uso arduino, por lo tanto no se como lee los datos, ahora si sabes como toma los datos y de que forma los recupera, si querés ponelos en un archivo de texto y a partir de ahí vemos como mostrarlos. Lo siento por no disponer de otra forma de ayudarte.
Hola, justo también estoy trabajando con Python y Arduino aunque no majeno QT. Lo que veo es que no estás llamando en ninguna parte a la función sensor()
Saludos!