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:
En modo servico para controlar perto serie no tengo idea, ni en páginas Web.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); } } } }
¿Hay alguien que sepa hacer algo así?