none
Desmontar dispositivos hardware ( puertos serie ) desde código en C# RRS feed

  • Pregunta


  • Buenos días foreros,

         Estoy teniendo un problema con un equipo que está leyendo constantemente de una antena RFID y pierde la conexión puntualmente. He probado algo mediante devcon, pero no me parece una buena opción, ( debo instalarlo, ejecutar comandos mediante shell, etc.... )

    Objetivo:   Me gustaría poder desmontar un puerto serie ( desde hardware, no sólo cerrarlo ), y poder volver a montarlo.


    Pasos que llevaron a reproducir el error:  Tengo una aplicación, que está constantemente leyendo de un puerto serie ( conecta por USB directamente desde una antena RFID ). La aplicación no se cierra nunca, y esporádicamente deja de leer, cierro el puerto, lo vuelvo a abrir. Pero nada, no responde, lo único que puedo hacer es reiniciar el equipo, o, ir al administrador de dispositivos, desmontar el puerto y volverlo a montar. Entonces funciona.


    Resultados esperados:  Me gustaría poder realizar la operación de desmontar el puerto y volverlo a montar, desde código, cuando detecto que no puedo leer de la antena. Para que sea transparente para el usuario.


    Resultados actuales:tengo que ejecutar un reinicio del PC por código, pero no queda muy elegante, la verdad.

    Entorno: Visual Studio 2010, Windows 10  

    Mencionar el lenguaje con que que se esta programando,  C#, VB.Net

    se os ocurre alguna sugerencia de como avanzar.?

    un saludo,

    Rául

    dispensadora ropa

    alquiler ropa laboral

    lunes, 8 de abril de 2019 9:16

Todas las respuestas

  • Hola  

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te hago la recomendación de ingresar al siguiente enlace en donde puedes encontrar una posible solución para tu problema.

    https://www.todavianose.com/como-manejar-el-puerto-serie-en-c/

    Gracias por usar los foros de MSDN.

    Carlos Ruiz
     ____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    lunes, 8 de abril de 2019 19:07
  • Hola Carlos,

        En primer lugar, gracias por tu sugerencia.

        La he leído ,pero habla sólo de abrir y/o cerrar puertos, nada respecto al montar y/o desmontar.

        Alguna otra sugerencia??

    gracias de antemano.

    lunes, 8 de abril de 2019 19:55
  • Hola rlcobos en primer momento tienes que tener en cuenta que desde C#, VB .NET no vas a tener acceso de ningún tipo a los Puertos en un sistema operativo, esto es por el nivel y contexto en que cada lenguaje se ejecuta como ejemplo C# ejecuta sobre .NET Framework y a su vez .NET Framework se ejecuta sobre el kernel de Windows.

    Desde C#(hasta donde sé) no tienes métodos directos para invocar el nivel donde están los dispositivos de hardware.

    Resultado de imagen de

    Necesitas un lenguaje de más bajo nivel tan solo para llegar a la capa donde es posible manejar los puertos(invocar sus métodos Y si en teoría contaran con métodos para montar o desmontar), la sugerencia es C(el cual casi se ejecuta en el kernel) sin embargo utilizando Visual Studio ya cuentas con C++, el cual cuenta con librerías para el manejo de puertos en un sistema operativo de nuevo suponiendo que existan métodos para montar o desmontar como tú indicas que lo deseas.

    En C++ tienes la libertad de poder crear tus librerías para ejecutar casi al nivel donde existiría un método para montar un puerto. Ahora en C# es quizá posible pero no vas a tener la libertad de evocar los métodos del Kernel.

    Quizá tengas mejor guía revisando el Hardware Developer center

    https://social.msdn.microsoft.com/search/en-US/windows/hardware?query=Port&refinement=182

    Para adentrarte en c++

    https://blogs.msdn.microsoft.com/vcblog/ ​

    Saludos

    Gracias por usar los foros de MSDN.
    Carlos Ruiz
     ____
    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. 
    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.





    miércoles, 10 de abril de 2019 18:48