elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Encontrar error de código.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Encontrar error de código.  (Leído 3,776 veces)
Meta


Desconectado Desconectado

Mensajes: 3.499



Ver Perfil WWW
Encontrar error de código.
« en: 27 Marzo 2015, 12:40 pm »

Hola:

Al programar con VB 6 bajo Winwdows 7 de 64 bits, he hecho esto.


Quiero seleccionar el puerto serie que me detecta automáticamente el comboBox. Algo no tengo bien qu em e da error y al pulsar depurar me indica este error.

Código
  1. Private Sub Command_Led_8_OFF_Click()
  2. MSComm1.Output = "Led_8_OFF"
  3. End Sub
  4.  
  5. Private Sub Command_Led_8_ON_Click()
  6. MSComm1.Output = "Led_8_ON"
  7. End Sub
  8.  
  9. Private Sub Form_Load()
  10.    Form1.ComboBoxCOM.Clear
  11.       MSComm1.CommPort = ComboBoxCOM
  12. MSComm1.PortOpen = True   ' Habilitar el puerto serie.
  13. Timer1.Interval = 1       ' Correr el timer a 1 mls.
  14.    Set WMIObjectSet = GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("SELECT * FROM Win32_PnPEntity") 'Win32_SerialPort")
  15.    For Each wmiobject In WMIObjectSet
  16.        If InStr(wmiobject.Name, "COM") Then   '
  17.          Form1.ComboBoxCOM.AddItem wmiobject.Name
  18.        End If
  19.         Next
  20.    Set WMIObjectSet = Nothing
  21. End Sub

El error dice:
No coincide los tipos.


En línea

HdM


Desconectado Desconectado

Mensajes: 1.674



Ver Perfil
Re: Encontrar error de código.
« Respuesta #1 en: 27 Marzo 2015, 13:08 pm »

Hola.

Código
  1. Form1.ComboBoxCOM.Clear 'estas vaciando el cb
  2. MSComm1.CommPort = ComboBoxCOM 'estas asignando a una prop. numerica entera, un valor vacio, por tanto, no coinciden los tipos.
  3.  

Saludos.


En línea

- Nice to see you again -
Meta


Desconectado Desconectado

Mensajes: 3.499



Ver Perfil WWW
Re: Encontrar error de código.
« Respuesta #2 en: 27 Marzo 2015, 14:43 pm »

Buenas:

Cuando detecte algún puerto serie físico o virtual, que se ponga en el comboBox directamente, no dejarlo en blanco como puse. No logro hacerlo.

En cuanto a
Código
  1. MSComm1.CommPort = ComboBoxCOM

¿Qué hay que hacer aquí?

Lo que quiero es que cuando no encuentre ningún puerto serie sea físico o virtual, en el combobox se muestre en blanco o diga que no encuentra puertos o lo que sea.
En cuanto a que detecte puertos serie, añada una lista en el comboBox y el primero queda seleccionado.

Luego elijo el puerto que quiera usar del comobox, por lo que veo, parece que falta un botón que diga CONECTAR/DESCONECTAR puerto seleccionado en el comboBox.

Saludos.
En línea

HdM


Desconectado Desconectado

Mensajes: 1.674



Ver Perfil
Re: Encontrar error de código.
« Respuesta #3 en: 27 Marzo 2015, 15:02 pm »

Lo que tienes que asignar es el nº de puerto, no el nombre del puerto. Si tienes el "COM4", entonces al commport le tendrás que asignar 4. Si no se encuentran puertos serie, entonces no asignes nada, no trates de abrir ningún com, puedes mostrar un aviso y salir del sub.
En línea

- Nice to see you again -
Meta


Desconectado Desconectado

Mensajes: 3.499



Ver Perfil WWW
Re: Encontrar error de código.
« Respuesta #4 en: 27 Marzo 2015, 15:46 pm »

Hola:

Intenté con esto:
Código
  1. MSComm1.CommPort = ComboBoxCOM.Index = 1

Cuando cargue una lista en el comboBox, hay que escoger el índice o item o como se llame con el primer puerto que detecte. Luego tengo la posibilidad de elegir el que quiera.

Saludos.
En línea

HdM


Desconectado Desconectado

Mensajes: 1.674



Ver Perfil
Re: Encontrar error de código.
« Respuesta #5 en: 27 Marzo 2015, 16:55 pm »

Hola.

1º En el load del form cargas el cb con todos los com disponibles con un sub, o directamente. Tras finalizar si hay puertos disponibles, entonces haces la asignación cb.listindex=0 (lanzará el click del cb), para que deje seleccionado el 1er item (com encontrado).

2º En el click del cb, codea para que al msc.commport, se le asigne el puerto del com seleccionado en el cb. Ej: Si se ha seleccionado el "COM4", de esa string, tendrás que extraer el "4" y asignarlo al commport.

Básicamente es eso, aunque se podría optimizar un poco.

Saludos.
En línea

- Nice to see you again -
Meta


Desconectado Desconectado

Mensajes: 3.499



Ver Perfil WWW
Re: Encontrar error de código.
« Respuesta #6 en: 27 Marzo 2015, 19:23 pm »

Buenas:

Todavía me sale error por aquí.
Código
  1. MSComm1.CommPort = ComboBoxCOM.ListIndex = 0

Si se puede optimizar un poco depende del programador. No se me da optimizar.

En cuanto el string del que me hablas, estoy en ello para conseguir el 4.
En línea

Meta


Desconectado Desconectado

Mensajes: 3.499



Ver Perfil WWW
Re: Encontrar error de código.
« Respuesta #7 en: 28 Marzo 2015, 14:44 pm »

Puse un botón nuevo que este es su código.

Código
  1. Private Sub Command_CONECTAR_Click()
  2.    If Not MSComm1.PortOpen Then
  3.       MSComm1.PortOpen = True ' Abrir puerto serie.
  4.       Command_CONECTAR.Caption = "DESCONECTAR"
  5.    Else
  6.       MSComm1.PortOpen = False ' Cerrar puerto serie.
  7.       Command_CONECTAR.Caption = "CONECTAR"
  8.    End If
  9. End Sub

El código completo es este:
Código
  1. Private Sub Command_CONECTAR_Click()
  2.    If Not MSComm1.PortOpen Then
  3.       MSComm1.PortOpen = True ' Abrir puerto serie.
  4.       Command_CONECTAR.Caption = "DESCONECTAR"
  5.    Else
  6.       MSComm1.PortOpen = False ' Cerrar puerto serie.
  7.       Command_CONECTAR.Caption = "CONECTAR"
  8.    End If
  9. End Sub
  10.  
  11.    Private Sub Command_Led_8_OFF_Click()
  12.    MSComm1.Output = "Led_8_OFF"
  13.    End Sub
  14.  
  15.    Private Sub Command_Led_8_ON_Click()
  16.    MSComm1.Output = "Led_8_ON"
  17.    End Sub
  18.  
  19.    Private Sub Form_Load()
  20.       'Form1.ComboBoxCOM.Clear ' Limpiar comboBox.
  21.          MSComm1.CommPort = ComboBoxCOM.ListIndex = 0
  22.    Timer1.Interval = 1       ' Correr el timer a 1 mls.
  23.       Set WMIObjectSet = GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("SELECT * FROM Win32_PnPEntity") 'Win32_SerialPort")
  24.       For Each wmiobject In WMIObjectSet
  25.           If InStr(wmiobject.Name, "COM") Then   '
  26.             Form1.ComboBoxCOM.AddItem wmiobject.Name
  27.           End If
  28.            Next
  29.       Set WMIObjectSet = Nothing
  30.    End Sub
  31.  

Todavía me da problemas aquí.
Código
  1. MSComm1.CommPort = ComboBoxCOM.ListIndex = 0
En línea

seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Encontrar error de código.
« Respuesta #8 en: 29 Marzo 2015, 19:28 pm »

Hola, la propiedad CommPort acepta solo puertos validos.

Si queres conectarte al puerto que esta seleccionado en el combobox, simplemente toma solo la parte que dice "COM4" la otra parte del texto es invalida, no se te va a conectar nunca.

la propiedad solo toma puertos "COM1", "COM2"..etc...si vos le pones "Arduino (COM4)" no te va a funcionar.

El problema aca es que vos estas mostrando en el combobox la descripcion del puerto, pero el mscomm necesita solo el numero del puerto, no la descripcion.

entonces tenes 2 opciones:

1 - extraes del texto la parte que dice "COM4", sacando el texto que esta entre parentesis (no lo recomiendo ya que puede venir algun texto que haga que esto no funcione).

2 - cuando llenas el combo usar un array para almacenar solo el nombre del puerto, sin la descripcion.

aca te dejo un simple ejemplo de como llenar un combobox con texto  el nombre del puerto y luego al hacer clic en algun item, te muestra solo el nombre del puerto, sin la descripcion, que es lo que necesitas para conectarte al mscomm.

Código
  1. Option Explicit
  2.  
  3. Dim vPuertos() As String 'Para almacenar el verdadero nombre de los puertos, sin la descripocion.
  4.  
  5. Private Sub Form_Load()
  6.    Dim i As Integer
  7.    For i = 1 To 10
  8.        Combo1.AddItem "Arduino (COM" & i & ")" ' cargo el combo con descripcion y el numero del puerto
  9.  
  10.        ReDim Preserve vPuertos(Combo1.ListCount - 1)
  11.        vPuertos(Combo1.ListCount - 1) = "COM" & i
  12.    Next
  13. End Sub
  14.  
  15. Private Sub Combo1_Click()
  16.    MsgBox vPuertos(Combo1.ListIndex) '  te muestra solo el nombre real del puerto, sin la descripcion
  17. End Sub

saludos.
En línea

HdM


Desconectado Desconectado

Mensajes: 1.674



Ver Perfil
Re: Encontrar error de código.
« Respuesta #9 en: 6 Abril 2015, 20:33 pm »

A la propiedad commport, se le asigna el nº de puerto, no el nombre del puerto. Asignarle por ejemplo "COM4", no sería válido. Por otro lado, en el sistema los COM puede que no vengan numerados desde el 1 (ej. podría tener un único com, que fuese el COM4).
En línea

- Nice to see you again -
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Encontrar Codigo y Comparacion.
Ingeniería Inversa
pelu11 1 2,372 Último mensaje 18 Abril 2008, 10:14 am
por Shaddy
Necesito ayuda encontrar codigo/programa
Programación Visual Basic
Goldmoon 3 2,370 Último mensaje 19 Mayo 2008, 19:15 pm
por Karcrack
es posible encontrar un jmp esp en el codigo fuente de linux?
Bugs y Exploits
black_flowers 3 3,975 Último mensaje 28 Abril 2011, 18:36 pm
por Garfield07
error ejecutar vbs desde tarea programada error el sistema no puede encontrar el
Scripting
binario010101 2 8,074 Último mensaje 1 Mayo 2014, 00:54 am
por binario010101
Encontrar error en el código
Java
Meta 3 4,316 Último mensaje 18 Agosto 2017, 15:52 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines