Autor Tema: En VB6 como detectar cuantos puertos COM estan disponibles en el PC??  (Leído 34110 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Hola a todos, como se puede hacer en visual basic 6.0 para detectar los puertos COM que estan instalados en el PC, ocurre que estoy diseñando un modulo que convierte de USB a RF.

para ello usare el CHIP CP2102 que convierte de USB -> RS232.


y a este le conecto el Modulo Xbee que convierte de RS232->RF

Entonces estoy programando en Visual Basic para hacer las pruebas.


Y quiero que el programa de Visual Basic detecte cuales puertos COM estan instalados en el PC. No los que estan libres, ni tampoco detectar el RF, solo detectar cuales puertos COM estan instalados, para que asi el usuario pueda seleccionar cual de esos es el que corresponde al RF.

Gracias!

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: En VB6 como detectar cuantos puertos COM estan disponibles en el PC??
« Respuesta #1 en: 29 de Mayo de 2007, 16:05:04 »
Es como esto:

Si miramos en el administrador de dispositivos, aparecen los puertos COM disponibles en el PC (marcados en rojo). Algo asi es lo que intento hacer.



Gracias!

« Última modificación: 29 de Mayo de 2007, 16:17:56 por PICmouse »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: En VB6 como detectar cuantos puertos COM estan disponibles en el PC??
« Respuesta #2 en: 29 de Mayo de 2007, 16:08:51 »
SerialPort.GetPortNames (Método) 

Obtiene una matriz con los nombres de los puertos serie del equipo actual.

Visual Basic (Declaración)
Public Shared Function GetPortNames As String()

Código: Visual Basic
  1. Imports System
  2. Imports System.IO.Ports
  3.  
  4.  
  5.  
  6. Module SerialPortExample
  7.  
  8.     Sub Main()
  9.         ' Get a list of serial port names.
  10.        Dim ports As String() = SerialPort.GetPortNames()
  11.  
  12.         Console.WriteLine("The following serial ports were found:")
  13.  
  14.         ' Display each port name to the console.
  15.        Dim port As String
  16.         For Each port In ports
  17.             Console.WriteLine(port)
  18.         Next port
  19.  
  20.         Console.ReadLine()
  21.  
  22.     End Sub
  23. End Module

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: En VB6 como detectar cuantos puertos COM estan disponibles en el PC??
« Respuesta #3 en: 29 de Mayo de 2007, 16:21:28 »
Perfecto Nocturno, ya la pruebo y comento como ma va.

Gracias!!!

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: En VB6 como detectar cuantos puertos COM estan disponibles en el PC??
« Respuesta #4 en: 29 de Mayo de 2007, 16:32:38 »
¡impresionante Manolo!

¿esa es una api de una dll externa? ó ¿ya viene referenciada en el propio VB?

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: En VB6 como detectar cuantos puertos COM estan disponibles en el PC??
« Respuesta #5 en: 29 de Mayo de 2007, 16:39:44 »
Es una gozada este VB nuevo. Viene dentro de Systems.io

Desconectado c4_esp_VR

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
    • www.muchotrasto.com
Re: En VB6 como detectar cuantos puertos COM estan disponibles en el PC??
« Respuesta #6 en: 29 de Mayo de 2007, 17:05:36 »
Otra forma de hacerlo es mediante el módulo FT232BM y un módulo de radio de easy radio.

Es muy sencillo de hacer, vamos que tardas 2 días en hacerlo, en mi caso hice dos módulos de RF por usb e implementé un chat en C++, los módulos de RF con la caña ya que sin antena y alimentados del propio usb se comunicaba con mi vecino que vive en el segundo y yo en el cuarto y teniendo en cuenta las "malas ondas" :P :P :P :P que hay con el vecino del tercero y las interferencias que tiene que haber...pues alcanza la polla  :D :D :D :D

Aqui os dejo una fotitos de los dós componentes que he utilizado.

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: En VB6 como detectar cuantos puertos COM estan disponibles en el PC??
« Respuesta #7 en: 29 de Mayo de 2007, 17:43:02 »
Pero no me funciona. :( Sera que la estoy usando mal?? Como se usa?

c4_esp_VR, ta bonito ese modulo RF!!  :-)

Desconectado c4_esp_VR

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
    • www.muchotrasto.com
Re: En VB6 como detectar cuantos puertos COM estan disponibles en el PC??
« Respuesta #8 en: 29 de Mayo de 2007, 19:06:06 »
Has intentado a hacerlo en un programita sólo, es decir a hacer el típico chorraprograma para verificar que eso sale...

Con el código que te ha puesto Nocturno recojido de las MSDN te debería de funcionar o no...

Lo acabo de probar en un exe estandar y no funciona porque las librerias que tiene añadidas mi VB no las tiene ya que creo que esas librerías sólo estan en los compiladores de .net o 2005 de todas maneras que te las pase alguien o te las bajas y lo pruebas, eso es al menor el porqué a mi no me funciona  :D :D :D :D :D

Un saludete.

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: En VB6 como detectar cuantos puertos COM estan disponibles en el PC??
« Respuesta #9 en: 29 de Mayo de 2007, 19:41:37 »
Eso era lo que presentia, mire en google, y si me mostraba que era MSDN pero yo tengo VB6.0 y como que no es compatible.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: En VB6 como detectar cuantos puertos COM estan disponibles en el PC??
« Respuesta #10 en: 30 de Mayo de 2007, 01:31:46 »
Yo tengo instalado el Visual Basic 2005 Express Edition, que es de descarga gratuita desde la web de Microsoft.
Tuve instalado el VB6.0 y la verdad es que el nuevo le da unas pocas vueltas, así que te recomiendo te actualices.

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: En VB6 como detectar cuantos puertos COM estan disponibles en el PC??
« Respuesta #11 en: 30 de Mayo de 2007, 15:33:01 »
Yo tengo instalado el Visual Basic 2005 Express Edition, que es de descarga gratuita desde la web de Microsoft.
Tuve instalado el VB6.0 y la verdad es que el nuevo le da unas pocas vueltas, así que te recomiendo te actualices.

ah ya me sonaba extraño, pensé que el código se ejecutaba en la versión 6.0
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado odukec

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 174
Re: En VB6 como detectar cuantos puertos COM estan disponibles en el PC??
« Respuesta #12 en: 03 de Junio de 2007, 23:43:10 »
Hola

Creo que esto te puede ayudar:

creas un modulo clase e insertas el siguiente codigo, claro como para hacerlo mas comodo..

Código: [Seleccionar]
Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Public Type SECURITY_ATTRIBUTES
    nLength As Long
    lpSecurityDescriptor As Long
    bInheritHandle As Long
End Type


Public Const FILE_SHARE_READ = &H1
Public Const FILE_SHARE_WRITE = &H2
Public Const OPEN_EXISTING = 3
Public Const FILE_ATTRIBUTE_NORMAL = &H80
 
'// Retorna TRUE si el puerto existe o esta disponible, FAlse en otro caso
Public Function COMAvailable(COMNum As Integer) As Boolean
    Dim hCOM As Long
    Dim ret As Long
    Dim sec As SECURITY_ATTRIBUTES


    hCOM = CreateFile("\.\COM" & COMNum & "", 0, FILE_SHARE_READ + _
        FILE_SHARE_WRITE, sec, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
    If hCOM = -1 Then
        COMAvailable = False
    Else
        COMAvailable = True
        ret = CloseHandle(hCOM)
    End If
End Function

y luego para comprobar un puerto este seria un ejemplo que rellena un combobox con los puertos disponibles:

Código: [Seleccionar]
    For i = 1 To 16
        If COMAvailable(i) Then
            cboComm.AddItem "COMM" & i
        End If
    Next

Saludos

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: En VB6 como detectar cuantos puertos COM estan disponibles en el PC??
« Respuesta #13 en: 03 de Junio de 2007, 23:48:58 »
odukec Gracias!!!!!!!!!!!, ahora me falta arreglar el disco Duro de mi PC y lo pruebo, Muchas Gracias!!!

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: En VB6 como detectar cuantos puertos COM estan disponibles en el PC??
« Respuesta #14 en: 04 de Junio de 2007, 16:47:00 »
un 'truco' para detectar el puerto que interesa, es que el programa los detecte todos, y que deseche los que no estan siempre, y por supuesto que ese que aparezca como nuevo, es que necesitas, de hecho es el que crea la clase.

digo esto porque puede dase el caso que tengas muchos puertos disponibles ¿y cuál de todos es? ese mismo que se conecte en ese instante,

otra idea sería hurgar en la clase (o donde se crea los puertos) y tratar de modificarlo para que nos dé un puerto conocido de antemano y que el programa tenga la certeza cual es.
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek


 

anything