import sys
from PyQt5.QtWidgets import (
    QApplication, QWidget, QVBoxLayout, QLabel, QPushButton, QSlider
)
from PyQt5.QtCore import Qt
import serial

# Inicializa el puerto serial (ajusta el nombre y velocidad según tu sistema)
try:
    ser = serial.Serial('COM3', 9600)  # Cambia 'COM3' por tu puerto (Linux: '/dev/ttyUSB0')
except serial.SerialException as e:
    print(f"No se pudo abrir el puerto serial: {e}")
    ser = None

class SerialSliderApp(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Control Serial con Slider")

        self.slider = QSlider(Qt.Horizontal)
        self.slider.setMinimum(0)
        self.slider.setMaximum(255)
        self.slider.setValue(0)

        self.label = QLabel("Valor: 0")

        self.button = QPushButton("Enviar por Serial")

        layout = QVBoxLayout()
        layout.addWidget(self.label)
        layout.addWidget(self.slider)
        layout.addWidget(self.button)
        self.setLayout(layout)

        # Conexiones de señales
        self.slider.valueChanged.connect(self.actualizar_valor)
        self.button.clicked.connect(self.enviar_serial)

    def actualizar_valor(self, value):
        self.label.setText(f"Valor: {value}")

    def enviar_serial(self):
        if ser and ser.is_open:
            value = self.slider.value()
            try:
                ser.write(bytes([value]))  # Enviamos como byte
                print(f"Enviado: {value}")
            except serial.SerialException as e:
                print(f"Error al enviar datos: {e}")
        else:
            print("Puerto serial no disponible.")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = SerialSliderApp()
    window.show()
    sys.exit(app.exec_())