Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/04/2021, 04:57
REHome
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 16 años, 11 meses
Puntos: 8
Control puerto serie modo servicio

Tengo un SAI o UPS, en el cual tiene un puerto serie y otro USB. Estoy usando el puerto serie porque me dieron el fabricante un documento en PDF sobre los comandos y respuestas del SAI. Se puede controlar.

Pruebo los comandos del en el Hyper Terminal de Windows o otro similar y me funciona. He hecho un poco mi propio programa en Windows Form y controlado el puerto serie en el cual puedo con botones apagar y encender el zumbador o pitido del SAI o UPS.

El programa que incluye es por Web local. La ruta para acceder es con un archivo que se llama agent.cmd y en su interior tiene este código.

start http://localhost:3052/local/



Lo curioso que la forma de controlar el puerto serie el programa oficial, es con un programa modo servicio, que lo puedo detener o arrancar como dice abajo.



La pregunta del millón.

¿Cómo hacer un programa sencillo Web y Servicio que controle el puerto serie? Me basta con tener dos botones en la Web para enviar comandos, el puerto serie enví y reciba conmandos.

Parece una tarea complicada a pesar de intentar hacer algo supuestamente básico.

El ejemplo que tengo hecho aquí con Windows Form, programa de escritorio es este. introducir la descripción de la imagen aquí.


Código:
using System;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports; // No olvidar y añadir en referencia.

namespace Puerto_serie_con_Net_50
{
    public partial class Form1 : Form
    {
        SerialPort serialPort1 = new SerialPort();

        public Form1()
        {
            InitializeComponent();
            Configuracion();
        }

        void Configuracion()
        {
            // Configuramos el puerto serie.
            serialPort1.BaudRate = 9600;            // Baudios. 115200
            serialPort1.PortName = "COM2";          // Nombre del puerto serie.
            serialPort1.Parity = Parity.None;       // Sin paridad.
            serialPort1.DataBits = 8;               // 8 Bits.
            serialPort1.StopBits = StopBits.Two;    // Bits de parada.
            serialPort1.ReadBufferSize = 4096;      // Tamaño del Búffer de lectura en Bytes.
            serialPort1.WriteBufferSize = 2048;     // Tamaño del Búffer de escritura en Bytes.
            serialPort1.ReadTimeout = 500;
            serialPort1.WriteTimeout = 500;
            serialPort1.DtrEnable = false;
            serialPort1.RtsEnable = false;

            // Abrir puerto mientras se ejecuta la palicación.
            if (!serialPort1.IsOpen)
            {
                try
                {
                    serialPort1.Open(); // Abrir puerto.
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
        }


        private void button_ON_Click(object sender, EventArgs e)
        {
            byte[] mBuffer = Encoding.ASCII.GetBytes("Led_ON");
            serialPort1.Write(mBuffer, 0, mBuffer.Length);
        }

        private void button_OFF_Click(object sender, EventArgs e)
        {
            // Variable tipo arreglo codificado en ASCII.
            byte[] mBuffer = Encoding.ASCII.GetBytes("Led_OFF");

            // Envía en la variable mBuffer "Led_OFF" al puerto serie.
            serialPort1.Write(mBuffer, 0, mBuffer.Length);
        }

        // Al cerrar la ventana o el formulario
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            try
            {
                serialPort1.Close(); // Cerrar puerto.
            }

            catch (Exception error)
            {
                MessageBox.Show(error.Message, "Aviso:",
                MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
    }
}
En modo servico para controlar perto serie no tengo idea, ni en páginas Web.

¿Hay alguien que sepa hacer algo así?
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar