Control puerto serie modo servicio
Publicado por Meta (4 intervenciones) el 08/04/2021 12:59:43
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í.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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í?
Valora esta pregunta


0