Principales respuestas
Envio de datos en RED puerto COM C#

Pregunta
-
Buen día,
Tengo dos aplicaciones con windows forms en c# en dos maquinas independientes, y necesito mandar datos a través de un puerto COM. habrá alguna forma de que al mandar un código del cpu1 lo pueda cachar en el cpu2
martes, 31 de julio de 2018 23:02
Respuestas
-
Estoy trabajando con windows forms; Y lo que necesito es que mediante la red obtener los puertos com disponibles del otro pc y enviar datos.
- Marcado como respuesta Pablo RubioModerator lunes, 20 de agosto de 2018 14:38
miércoles, 1 de agosto de 2018 14:12 -
Entonces estás hablando de UDP.
http://electronica-pic.blogspot.com
- Marcado como respuesta Pablo RubioModerator lunes, 20 de agosto de 2018 14:38
miércoles, 1 de agosto de 2018 21:04
Todas las respuestas
-
Hola:
Si te refieres que si puedes enviar datos por el puerto COM desde un ordenador o PC a otro ordenador, claro que si.
No haz comentado con qué tecnología lo quieres hacer, modo Consola, Windows Form o WPF, en cualquier caso, aquí hay ejemplos de como lo hice pero desde Arduino, que es lo mismo.
Ejemplo código C# en modo consola:
using System; using System.IO; using System.IO.Ports; using System.Text; using System.Speech.Recognition; // No olvidar. Micro. using System.Speech.Synthesis; // No olvidar. Altavoz. namespace Arduino_Consola_Color_Voz_cs { class Program { static void Main(string[] args) { string COM = ""; // Título de la ventana. Console.Title = "Arduino Consola color y voz C#"; // Tamaño ventana consola. Console.WindowWidth = 55; // X. Ancho. Console.WindowHeight = 18; // Y. Alto. SerialPort Puerto_serie; // Crear un nuevo objeto SerialPort con la configuración predeterminada. Puerto_serie = new SerialPort(); // Configuración. Console.Write(@" Introduzca un número para seleccionar puerto COM. Por ejemplo el 4, sería COM4. Puerto: "); COM = Console.ReadLine(); // Escribir el número del puerto. Console.Clear(); Puerto_serie.PortName = "COM" + COM; // Número del puerto serie. Puerto_serie.BaudRate = 115200; // Baudios. Puerto_serie.Parity = Parity.None; // Paridad. Puerto_serie.DataBits = 8; // Bits de datos. Puerto_serie.StopBits = StopBits.Two; // Bits de parada. Puerto_serie.Handshake = Handshake.None; // Control de flujo. // Establecer la lectura / escritura de los tiempos de espera. Puerto_serie.ReadTimeout = 500; Puerto_serie.WriteTimeout = 500; try { Puerto_serie.Open(); // Abrir el puerto serie. } catch (IOException) { Console.ForegroundColor = ConsoleColor.Red; // Texto en rojo. Console.CursorVisible = false; Console.SetCursorPosition(16, 6); Console.WriteLine(@"El puerto " + Puerto_serie.PortName + @" no existe o no lo encuentra."); Console.ReadKey(); // Pulse cualquier tecla. Environment.Exit(1); // Salir de la aplicación. } // Detecta cualquier dato recibido. Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler); ConsoleKey tecla; Console.WriteLine("Pulse tecla 1 para encender, 2 para apagar y \n" + "Escape para salir. \n" + "--------------------------------------------------------------\n"); do { tecla = Console.ReadKey(true).Key; // Espera pulsación de teclas. // Inicializar una nueva instancia de SpeechSynthesizer. using (SpeechSynthesizer altavoz = new SpeechSynthesizer()) { // Configure la salida de audio. altavoz.SetOutputToDefaultAudioDevice(); // Velocidad de la voz. altavoz.Rate = -2; // Valores entre -10 a 10. // Volumen de la voz. altavoz.Volume = 100; // Valores entre 0 y 100. switch (tecla) { case ConsoleKey.D1: // Tecla 1 del teclado estandar. case ConsoleKey.NumPad1: // Tecla 1 del número del pad. byte[] miBuffer1 = Encoding.ASCII.GetBytes("Luz_ON"); // Codificación ASCII y guarda en la variable array tipo byte. Puerto_serie.Write(miBuffer1, 0, miBuffer1.Length); // Envía los datos del buffer todo su contenido. Console.ForegroundColor = ConsoleColor.Gray; Console.Write("Comando"); // Muestra en pantalla comandos enviado. Console.ForegroundColor = ConsoleColor.Green; Console.Write(" \"Luz_ON\" "); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("enviado."); Console.ForegroundColor = ConsoleColor.Gray; altavoz.Speak("Luz encendida."); break; case ConsoleKey.D2: case ConsoleKey.NumPad2: byte[] miBuffer2 = Encoding.ASCII.GetBytes("Luz_OFF"); Puerto_serie.Write(miBuffer2, 0, miBuffer2.Length); Console.ForegroundColor = ConsoleColor.Gray; Console.Write("Comando"); // Muestra en pantalla comandos enviado. Console.ForegroundColor = ConsoleColor.Green; Console.Write(" \"Luz_OFF\" "); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("enviado."); Console.ForegroundColor = ConsoleColor.Gray; altavoz.Speak("Luz apagada."); break; case ConsoleKey.Escape: Console.WriteLine("Saliendo..."); altavoz.Speak("Saliendo."); break; default: Console.WriteLine("Tecla el 1, el 2 y Escape para salir."); break; } } } while (tecla != ConsoleKey.Escape); // Pulsa Escape para salir del menú. Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine(); Console.WriteLine("╔═════════════════════════════════════════════════════╗"); Console.WriteLine("║ Electrónica PIC metaconta@gmail.com ║"); Console.WriteLine("║ ║"); Console.WriteLine("║ Ángel Acaymo M. G. ║"); Console.WriteLine("╚═════════════════════════════════════════════════════╝"); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("Pulse cualquier tecla para salir..."); Console.WriteLine(); Console.ReadKey(); // Espera pulsar una tecla cualquiera. Puerto_serie.Close(); // Cierra el puerto serie. } // Detecta cualquier dato entrante. private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) { SerialPort sp = (SerialPort)sender; string entradaDatos = sp.ReadExisting(); // Almacena los datos recibidos en la variable tipo string. Console.ForegroundColor = ConsoleColor.Gray; Console.Write("Dato recibido desde Arduino: "); // Muestra en pantalla los datos recibidos. Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(entradaDatos + "\n"); Console.ForegroundColor = ConsoleColor.Gray; } // Maneje el evento SpeechRecognized. static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) { Console.WriteLine("Texto reconocido: " + e.Result.Text); string palabras = e.Result.Text; } } }
Fuente:
https://www.slideshare.net/Metaconta/arduino-consola-y-puerto-serie
Código C# con Windows Form:
using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO.Ports; // No olvidar. namespace Arduino_Led { public partial class Form1 : Form { public Form1() { InitializeComponent(); // Abrir puerto mientras se ejecuta esta aplicación. if(!serialPort1.IsOpen) { try { serialPort1.Open(); } catch (System.Exception ex) { MessageBox.Show(ex.ToString()); } } } private void button_Encender_Click(object sender, EventArgs e) { byte[] mBuffer = Encoding.ASCII.GetBytes("Led_ON"); serialPort1.Write(mBuffer, 0, mBuffer.Length); } private void button_Apagar_Click(object sender, EventArgs e) { byte[] mBuffer = Encoding.ASCII.GetBytes("Led_OFF"); serialPort1.Write(mBuffer, 0, mBuffer.Length); } } }
Fuente:
https://es.slideshare.net/Metaconta2/apagar-y-encender-led-con-arduino-y-visual-studio-2015Otra cosa. Todo lo que sea comunicaciones del puerto COM o serie o USB, va en la sección del foro indicado aquí.
Saludos.
http://electronica-pic.blogspot.com
- Editado Metaconta miércoles, 1 de agosto de 2018 6:29
- Propuesto como respuesta Jorge TurradoMVP miércoles, 1 de agosto de 2018 11:01
miércoles, 1 de agosto de 2018 6:27 -
Estoy trabajando con windows forms; Y lo que necesito es que mediante la red obtener los puertos com disponibles del otro pc y enviar datos.
- Marcado como respuesta Pablo RubioModerator lunes, 20 de agosto de 2018 14:38
miércoles, 1 de agosto de 2018 14:12 -
Entonces estás hablando de UDP.
http://electronica-pic.blogspot.com
- Marcado como respuesta Pablo RubioModerator lunes, 20 de agosto de 2018 14:38
miércoles, 1 de agosto de 2018 21:04