FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Recibir dos tramas por RS232 diferentes.
Hola:
Puedo recibir tramas de bytes por el puerto serie, una es esta si envía este comando: Código:
serialPort1.Write("B\r"); y la otra es esta si envías este otro comando diferente: Código:
serialPort1.Write("X72\r"); En la primera tengo el código hecho en Windows Form y funciona. Código:
using System; using System.IO.Ports; using System.Threading; using System.Windows.Forms; namespace Termite_SAI_04 { public partial class Form1 : Form { private delegate void DelegadoAcceso(String accion); public Form1() { InitializeComponent(); } private void button_Ver_datos_Click(object sender, EventArgs e) { serialPort1.Write("B\r"); } private void button_Ver_Tabla_Click(object sender, EventArgs e) { serialPort1.Write("X72\r"); } private void Form1_Load(object sender, EventArgs e) { try { serialPort1 = new SerialPort("COM3", 2400, Parity.None, 8, StopBits.One); serialPort1.Handshake = Handshake.None; serialPort1.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived); serialPort1.ReadTimeout = 500; serialPort1.WriteTimeout = 500; serialPort1.Open(); serialPort1.Write("B\r"); } catch (Exception ex) { MessageBox.Show(ex.Message); } } void sp_DataReceived(object sender, SerialDataReceivedEventArgs e) { if (this.Enabled == true) { Thread.Sleep(500); string entrada = serialPort1.ReadExisting(); this.BeginInvoke(new DelegadoAcceso(si_DataReceived), new object[] { entrada }); //serialPort1.Write("B\r"); // Envía comando. } } private void si_DataReceived(string accion) { try { char[] separadores = { '#', 'I', 'O', 'L', 'B', 'V', 'F', 'H', 'R', 'S' }; string[] salida = accion.Split(separadores, StringSplitOptions.RemoveEmptyEntries); label_I.Text = salida[0] + " Vac"; label_O.Text = salida[1] + " Vac"; label_L.Text = salida[2].TrimStart('0') + " %"; // Quita los ceros de la izquierda. label_B.Text = salida[3] + " %"; label_V.Text = salida[4] + " Vdc"; label_F.Text = salida[5].PadRight(5, '0') + " Hz"; // Añade ceros a la derecha. label_H.Text = salida[6].PadRight(5, '0') + " Hz"; // Convertir variable tipo string a tipo int, es decir, la variable tipo string "salida[7]" // se convierte en tipo int "resultadoSalida7". int resultadoSalida7 = Int32.Parse(salida[7]); // ¿Es igual a 1 minuto? if ((resultadoSalida7 % 60) == 1) { label_R.Text = resultadoSalida7 / 60 + " hora y " + resultadoSalida7 % 60 + " minuto."; } // ¿Es mayor a 60 segundos o 1 minuto? if ((resultadoSalida7 % 60) > 1) { label_R.Text = resultadoSalida7 / 60 + " hora y " + resultadoSalida7 % 60 + " minutos."; } // ¿Es igual a 60 segundos o 1 minuto? if ((resultadoSalida7 % 60) == 0) { label_R.Text = resultadoSalida7 / 60 + " hora y " + resultadoSalida7 % 60 + " minutos."; } } catch (IndexOutOfRangeException ex) { Console.Write("Índice fuera de los límites de la matriz."); MessageBox.Show(ex.Message); } catch (FormatException ex) { Console.Write("La cadena de entrada no tiene el formato correcto."); MessageBox.Show(ex.Message, "Error"); } } } } Código:
char[] separadores2 = { '#', ',' }; string[] salida2 = entrada2.Split(separadores2, StringSplitOptions.RemoveEmptyEntries); label_Resultado_valores_nonimales_de_alimentacion.Text = salida2[0] + " VA / " + salida2[1] + " W"; label_Resultado_voltaje_nominal.Text = salida2[2] + " Vac"; label_Resultado_corriente_nominal.Text = salida2[5] + " A"; label_Resultado_valores_nominales_de_frecuencia.Text = salida2[3] + " ~ " + salida2[4] + " Hz"; Gracias.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Detectar tramas de bytes | REHome | .NET | 2 | 21-11-2023 03:40:13 |
Lectura de tramas en puerto serie | vejerf | OOP | 1 | 04-02-2010 20:07:11 |
Lectura de tramas: <SYN><DLE><STX> ... <DLE><ETX> | vejerf | Varios | 17 | 30-06-2008 15:20:26 |
Documentacion para Generar Tramas TCP | bastardo10 | Varios | 0 | 07-06-2007 17:31:38 |
enviar y recibir capturar rs232 | pipecato | Varios | 3 | 17-10-2005 22:17:45 |
|