none
Detectar dispositivos que se conectan al puerto serie con Visual Basic

    Pregunta

  • Buen día!!!
    Estoy haciendo una aplicación con Visual Basic y en la aplicación se conecta un dispositivo por el puerto serie; yo puedo detectar todos los dispositivos que se encuentran conectados, pero quiero poder identificar el dispositivo ya que cuando conecto el dispositivo le asigna un "COM" que depende del puerto en que lo conecte y estoy cambiando el PortName de la aplicación cada vez que conecto el dispositivo en un puerto diferente.

    Gracias.

     

     

    martes, 06 de octubre de 2009 21:06

Todas las respuestas

  • Hola JAG,
    Me temo que la unica manera de saber cuando se conecta un dispositivo, es interrogandolo. Por lo tanto, la unica posibilidad aunque a mi forma de ver "NADA RECOMENDABLE" es scanear los puertos en busqueda de si el dispositivo esta conectado o no.

    Espero que la explicacion te sirva.
    Pep Lluis.
    MVP - Visual Developer
    martes, 20 de octubre de 2009 17:58
    Moderador
  • Hola Pep Lluis

    Gracias por tu atención;
    Mi duda es como lo podrías interrogar y por qué no sería recomendable?

    Gracias!!!
    lunes, 26 de octubre de 2009 1:50
  • Hola Jag,

    Para interrogarlos, deberías abrir los puertos uno a uno, enviando una trama o acción concreta de la que con antemano conoces la respuesta, pero eso dependerá del dispositivo y el protocolo implementado por el fabricante. Por ejemplo, puedo identificar el fabricante o modelo de Modem utilizando secuencias de interrogación "ATI".

    No es recomendable, supongo que dependiendo del escenario e imaginando una situación en la que los dispositivos serie no se acostumbran a conectar/desconectar constantemente, en condiciones normales se conecta el dispositivo y es probable que termine su vida útil en ese equipo en el mismo puerto donde se conecto inicialmente... así que no acostumbran a ser equipos que van conectándose dinámicamente, por lo que un programa de esas características podría ser útil en una fase inicial, pero poco más.

    Espero que esto contraste mi opinión.
    Saludos,
    Pep Lluis,


    MVP - Visual Developer
    lunes, 26 de octubre de 2009 7:38
    Moderador
  • Ok muchas gracias Pep Lluis; me queda muy clara tu explicación.

    En este caso yo estoy haciendo el equipo que se conectará a la pc y el programa de la pc que lo controlará. Entiendo que se puede dañar otro dispositivo si le envío información inadecuada o cosas así.
    martes, 27 de octubre de 2009 3:22
  • Jag,
    Tanto como dañar no, pero esta claro que sera inocuo, pues como te digo una vez conectado lo mas provable esque siempre permanezca ahi.

    Salud,

    MVP - Visual Developer
    miércoles, 28 de octubre de 2009 12:18
    Moderador
  • Bajo mi punto se vista si se puede interrogar. Lo haría si el dispositivo es un PIC, envío señal o tramas que el PIC conozca en cada puerto y si lo conoce que responda con tramas o mensaje de texto desde dentro del PIC hacia el ordenador.

  • Hola PepLluis.

    Aqui con un nuevo problema; resulta que hice una aplicación en visual basic 2008 y me pidieron que la aplicación se arrancara cuando windows xp sp2 arrancara; lo cale en mi pc y funcionó; el problema que al instalarlo en la otra pc que ademas le instalé el framework 3.5 no inicia cuando inicia windows, pero si lo arranco desde su acceso directo si funciona bien. Lo que hice para que inicie es poner un acceso directo en inicio.
    El error que me marca es Excepción no controlada en la aplicación. Referencia a objeto no establecida como instancia de un objeto.


    Gracias...
    JAG_Franco
    lunes, 07 de diciembre de 2009 3:24
  • Buen Dia Jab_Franco. Necesito conectar un dispositivo a travez del puerto serie y de algun modo leer los datos tal como tu lo estas haciendo. Me puedes comentar como lo estas haciendo. Muhcas Gracias
    jueves, 31 de diciembre de 2009 14:38
  • Buen Día Fep32

    Mira tengo un PIC que envía información de eventos físicos a la pc, uso con es la comunicación serial, y me envía la información con los valores de envío estándar. Lo primero que hago es ver que a la pc llegue la información, eto lo puedes hacer checando con Hiperterminal. Luego cuando ya estés seguro que llegan hice un programa en visual basic o c# en el que uso un objeto llamado serial port que maneja la conexion; el evento que se desvorda al recibir datos es el datareceiver o algo asi, nada mas consultas lo que hay en el puerto en ese momento.

    Jag_Franco
    viernes, 01 de enero de 2010 16:19
  • Puedes usar las funciones de acceso al registro de windows para ponerlo en auto-arranque la primer vez que inicies el programa

    Intenta con las clases:

     

            Const Ruta As String = "HKEY_LOCAL_MACHINE \SOFTWARE \Microsoft \Windows \CurrentVersion \Run "        My.Computer.Registry.SetValue (Ruta, "Nombreclave", "Valor", RegistryValueKind.string)

    intenta nadamas cambiando los valores hacia donde se guarda la clave de inicio


    lunes, 06 de diciembre de 2010 19:37