Fecha y hora actual: Miércoles 19 Feb 2020 19:03
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Puertos seriales- Duda SerialDataReceivedEventHandler

Responder al Tema

Índice del Foro > C, C#, Visual C++ > Puertos seriales- Duda SerialDataReceivedEventHandler

Autor Mensaje
velkanlonut



Registrado: 02 May 2015
Mensajes: 1

Mensaje Publicado: Sábado 02 May 2015 22:18

Título del mensaje: Puertos seriales- Duda SerialDataReceivedEventHandler

Responder citando

Saludos, soy un tanto nuevo en programación, estoy trabajando con puertos seriales y tengo la siguiente duda:

¿ Como podría hacer uso del método SerialDataReceivedEventHandler(DataReceivedHandler) desde otra clase ? ya que lo he estado intentando y al parecer este evento no se ejecuta, me explico: creé un clase que funciona como controlador del puerto serial (ControladorSerial), ésta es utilizada por una clase principal (Program)cuya utilidad es mostrar los datos capturados en consola, he verificado y el evento SerialDataReceivedEventHandler no es disparado cuando la clase ControladorSerial es utilazada por mi clase principal.

Sin embargo cree una aplicación de consola y utilicé este método en la clase principal de la consola (program.cs) y funciona perfecto, lee los datos del puerto serial.

Si alguien ayudarme a solucionar este problema se lo agradecería enormemente.

Clase controlador puerto serial

Código:
  1.  
  2.  
  3.  
  4.  
  5. namespace ConsoleApplication1
  6. {
  7. class ControladorSerial
  8. {
  9. /*
  10.   * Declaración de variables
  11.   * */
  12.  
  13. //Interfaz Serial
  14. private static SerialPort puertoSerial;
  15.  
  16. //Variables de velocidad y nivel de giro
  17. private static int DIR_VERTICAL;
  18. private static int DIR_HORIZONTAL;
  19. public static bool estate;
  20.  
  21.  
  22. public static int GET_DIR_VERTICAL
  23. {
  24. get { return ControladorSerial.DIR_VERTICAL; }
  25. set { ControladorSerial.DIR_VERTICAL = value; }
  26. }
  27.  
  28. public static int GET_DIR_HORIZONTAL
  29. {
  30. get { return ControladorSerial.DIR_HORIZONTAL; }
  31. set { ControladorSerial.DIR_HORIZONTAL = value; }
  32. }
  33.  
  34. /*
  35.   * Método que inicializa el purto COM
  36.   * */
  37. public static void InitSerialInterface(string puerto, int baudios)
  38. {
  39. puertoSerial = new SerialPort(puerto,baudios);
  40. puertoSerial.DtrEnable = true;
  41. try
  42. {
  43. puertoSerial.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
  44. puertoSerial.Open();
  45. puertoSerial.ReadTimeout = 5;
  46. }
  47.  
  48. catch(Exception e)
  49. {
  50. throw new Exception("Se ha producido el siguiente error:"+e.Message);
  51. }
  52. }
  53.  
  54. public static string cerrarpuerto()
  55. {
  56. try
  57. {
  58. puertoSerial.Close();
  59. return "Puerto cerrado correctmente";
  60. }
  61. catch(Exception ex)
  62. {
  63.  
  64. return "ADVERTENCIA: "+ex.Message.ToString();
  65. }
  66. }
  67.  
  68. /*
  69.   * Método DataReceivedHandler
  70.   * Representa el método que controlará los datos recibidos del objeto SerialPort
  71.   * */
  72.  
  73. private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
  74. {
  75. estate = true;
  76. SerialPort puertoSerial = (SerialPort)sender;
  77. string indata = puertoSerial.ReadExisting();
  78. string CadenaFormateada = indata.ToString().Trim();
  79.  
  80. if (CadenaFormateada.Length == 7)
  81. {
  82. //Asigna los valores capturados del puerto COM
  83. DIR_VERTICAL = int.Parse(CadenaFormateada.Substring(0, 3));
  84. DIR_HORIZONTAL = int.Parse(CadenaFormateada.Substring(4, 3));
  85. }
  86. }
  87.  
  88. }
  89. }
  90.  
  91.  
  92.  


Clase Principal

Código:



namespace ConsoleApplication1
{
    class Program
    {

        private static int DIR_VERTICAL;
        private static int DIR_HORIZONTAL;

        static void Main(string[] args)
        {
            Console.WriteLine("************* ACCESO A DATOS SERIALES *****************");
            Console.WriteLine("\n");
            Console.WriteLine("*****PRESIONE CUALQUIER TECLA PARA CONTINUAR*****");
            Console.WriteLine("\n");

            ControladorSerial.InitSerialInterface("COM7",9600);
            DIR_VERTICAL = ControladorSerial.GET_DIR_VERTICAL;
            DIR_HORIZONTAL = ControladorSerial.GET_DIR_HORIZONTAL;

            Console.WriteLine("DIRECCION VERTCAL: "+ DIR_VERTICAL);
            Console.WriteLine("DIRECCION VERTCAL: " + DIR_HORIZONTAL);


        }

       
    }
}


[/list]

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

PRESENTACIÓN Y DUDA

j0z3 Programación en general 1 Miércoles 22 Ene 2020 20:58 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Duda de codigo para programa

Marco V Python 0 Sábado 23 Nov 2019 21:36 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Duda con porcentaje SQL Oracle

Tartanboi SQL - Lenguaje SQL 0 Lunes 02 Sep 2019 10:20 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Duda de optimización de datos con VBA

Maugarni Visual Basic y VBA 0 Jueves 22 Ago 2019 13:49 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Usar "programa" sin tener que descarg...

phoenix Programación Web en general 1 Viernes 01 Mar 2019 03:15 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,