Gracias Gracias:  0
Me Gusta Me Gusta:  0
No me Gusta No me Gusta:  0
Mostrando resultados del 1 al 4 de 4

Tema: Puerto serie

  1. #1
    Fecha de Ingreso
    28-julio-2006
    Mensajes
    142
    Post Thanks / Like
    Poder de Credibilidad
    15

    Puerto serie

    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#:
    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) { }
                }
            }
        }
    }
    Saludos.

  2. #2
    Fecha de Ingreso
    03-abril-2007
    Ubicación
    Mexico/SanLuisPotosi
    Mensajes
    913
    Post Thanks / Like
    Poder de Credibilidad
    14
    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

  3. #3
    Fecha de Ingreso
    28-julio-2006
    Mensajes
    142
    Post Thanks / Like
    Poder de Credibilidad
    15
    Buenas:

    Entiendo la parte de /dev/ttySX.

    ¿Cómo sería de C# a Script de Linux?
    Aunque sea en una Raspberry Pi.

    Saludos.

  4. #4
    Fecha de Ingreso
    03-abril-2007
    Ubicación
    Mexico/SanLuisPotosi
    Mensajes
    913
    Post Thanks / Like
    Poder de Credibilidad
    14
    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:
    Código:
    echo "texto a enviar" >> /dev/ttyS0 #para enviar texto 
    cat  /dev/ttyS0  #para estar recibiendo y se detiene con CTRL+C
    Aunque supongo que habrá mejores maneras de hacerlo ya que es muy burdo y de memoria
    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

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Temas Similares

  1. Herramienta live para leer puerto serie
    By surrender in forum GNU/Linux y otras Distros
    Respuestas: 7
    Último mensaje: 26-sep-2013, 07:21
  2. problema con puerto de serie
    By El_pelosss in forum Virtualización
    Respuestas: 6
    Último mensaje: 16-nov-2012, 18:59
  3. Respuestas: 2
    Último mensaje: 20-ago-2009, 23:43
  4. Como configurar IRQ de puerto Serie
    By figuxxi in forum Hardware
    Respuestas: 3
    Último mensaje: 22-sep-2007, 09:26
  5. Puerto Serie
    By mreko in forum Software
    Respuestas: 4
    Último mensaje: 23-jul-2007, 18:34

Marcadores

Normas de Publicación

  • No puedes crear nuevos temas
  • No puedes responder mensajes
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •