en teoría solo tendrías que cambiar COM1 por /dev/ttySX
y verificar los nombres de las librerías que utilizas o si tienen su equivalente en Linux.
Saludos.
Hola:
Tengo un programa hecho en C# que es un mini chat por puerto serie bajo Windows 10. Quiero adaptar este código a Script de openSource o Linux. No se nada de Script de Linux.
¿Se puede transformar o adaptar este código de C# a un Script?
Código C#:
Saludos.Código:using System; using System.IO.Ports; using System.Threading; namespace Introducir_datos_puerto_serie_consola_02 { class Program { static bool _continue; // Cree un nuevo objeto SerialPort con la configuración predeterminada. static SerialPort Puerto_serie = new SerialPort("COM1"); static void Main(string[] args) { string nombre; string mensaje; StringComparer comparaString = StringComparer.OrdinalIgnoreCase; Thread readThread = new Thread(Leer); // Título de la ventana. Console.Title = "Enviar datos al puerto serie"; // Tamaño de la ventana, x, y. Console.SetWindowSize(70, 25); // Color de fondo. Console.BackgroundColor = ConsoleColor.Blue; // Color de las letras. Console.ForegroundColor = ConsoleColor.Yellow; // Limpiar pantalla y dejarlo todo gris. Console.Clear(); // Visible el cursor. Console.CursorVisible = true; Puerto_serie.BaudRate = 115200; Puerto_serie.Parity = Parity.None; Puerto_serie.StopBits = StopBits.One; Puerto_serie.DataBits = 8; Puerto_serie.Handshake = Handshake.None; Puerto_serie.RtsEnable = true; // Establecer los tiempos de espera de lectura / escritura. Puerto_serie.ReadTimeout = 500; // 500 // Milisegundos. Puerto_serie.WriteTimeout = 500; // 500 // Abrir puerto serie. Puerto_serie.Open(); _continue = true; readThread.Start(); // Mostrar texto Nombre y se Console.Write("Nombre: "); // guarda en la variable nombre. nombre = Console.ReadLine(); Console.WriteLine("Escriba salir para salir"); while (_continue) { // Cualquier caracter recibido se guarda en la variable mensaje. mensaje = Console.ReadLine(); // Compara salir con el mensaje salir si lo haz escrito igual. // ¿Escribiste la palabra salir? if (comparaString.Equals("salir", mensaje)) { // Sí. Entonces, pone esta variable _continue en false. _continue = false; } // No. Entonces, envía por el puerto serie tu nick // y mensaje que haz escrito. else { Puerto_serie.WriteLine( String.Format("<{0}>: {1}", nombre, mensaje)); } } // Bloquea el subproceso. readThread.Join(); // Cierra el puerto serie. Puerto_serie.Close(); } // Lee mensaje recibido. public static void Leer() { // Si _continue es true se ejecuta todas las instrucciones dentro de while. while (_continue) { try { // Almacena en la variable mensaje cualquier caracter o mensaje recibido. string mensaje = Puerto_serie.ReadLine(); // Muestra en pantalla mensaje recibido. Console.WriteLine(mensaje); } catch (TimeoutException) { } } } } }
en teoría solo tendrías que cambiar COM1 por /dev/ttySX
y verificar los nombres de las librerías que utilizas o si tienen su equivalente en Linux.
Saludos.
__________________________________________________
Mi Blog:
http://elblogdedarkspark.blogspot.mx/
Canales de Youtube:
http://www.youtube.com/user/DarkSpark2099
http://www.youtube.com/user/defton En des-uso
Buenas:
Entiendo la parte de /dev/ttySX.
¿Cómo sería de C# a Script de Linux?
Aunque sea en una Raspberry Pi.
Saludos.
C/C++ son lenguajes de programacion multiplataforma por lo que puedes hacer programas en C/C++ y ejecutarlos tanto en windows como en linux la única diferencia es que algunas librerías cambian de nombre o son equivalentes a alguna otra librería de otro SO (windows por ejemplo).
Ahora que si te refieres a convertir tu programa/script que esta en C a Bash/SH entonces si, tendrás que volver a re-escribir tu código en Bash, aunque a mi punto de vista seria trabajar el doble pues ya lo tienes en C. pero si lo que quieres es aprender, yo no se mucho de bash, aquí en el foro hay varios compañeros que si y que con gusto podrán ayudarte mejor, yo solo podría decirte que para poder usar el puerto serie, tu usuario debe pertenecer a los grupos "tty" y "dialout" (se puede hacer desde Yast) y no se si olvidare alguno otro.
Y puedes probar fácilmente en una consola/terminal con los comandos:
Aunque supongo que habrá mejores maneras de hacerlo ya que es muy burdo y de memoriaCódigo:echo "texto a enviar" >> /dev/ttyS0 #para enviar texto cat /dev/ttyS0 #para estar recibiendo y se detiene con CTRL+C
Saludos.
__________________________________________________
Mi Blog:
http://elblogdedarkspark.blogspot.mx/
Canales de Youtube:
http://www.youtube.com/user/DarkSpark2099
http://www.youtube.com/user/defton En des-uso
There are currently 1 users browsing this thread. (0 members and 1 guests)
Marcadores