Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: jenju302 en 30 Octubre 2016, 02:01 AM

Título: [Python] leer puerto serie desde PyQt5 y arduino y mostrase interfaz grafica
Publicado por: jenju302 en 30 Octubre 2016, 02:01 AM
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.

Código (python) [Seleccionar]
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.

Título: Re: Comunicar PyQt5 con arduino puerto serial interfas grafica
Publicado por: tincopasan en 30 Octubre 2016, 06:23 AM
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:
Código (python) [Seleccionar]

ex.show()
Título: Re: Comunicar PyQt5 con arduino puerto serial interfas grafica
Publicado por: jenju302 en 31 Octubre 2016, 18:22 PM
Deseo que la lectura del arduino se muestre en el campo ldt_sensor...eso seria todo pero no lo he logrado.
Título: Re: [Python] leer puerto serie desde PyQt5 y arduino y mostrase interfaz grafica
Publicado por: tincopasan en 1 Noviembre 2016, 00:44 AM
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.
Título: Re: [Python] leer puerto serie desde PyQt5 y arduino y mostrase interfaz grafica
Publicado por: Once en 5 Noviembre 2016, 04:03 AM
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!