Autor
|
Tema: Encontrar error de código. (Leído 3,794 veces)
|
Meta
|
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. Private Sub Command_Led_8_OFF_Click() MSComm1.Output = "Led_8_OFF" End Sub Private Sub Command_Led_8_ON_Click() MSComm1.Output = "Led_8_ON" End Sub Private Sub Form_Load() Form1.ComboBoxCOM.Clear MSComm1.CommPort = ComboBoxCOM MSComm1.PortOpen = True ' Habilitar el puerto serie. Timer1.Interval = 1 ' Correr el timer a 1 mls. Set WMIObjectSet = GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("SELECT * FROM Win32_PnPEntity") 'Win32_SerialPort") For Each wmiobject In WMIObjectSet If InStr(wmiobject.Name, "COM") Then ' Form1.ComboBoxCOM.AddItem wmiobject.Name End If Next Set WMIObjectSet = Nothing End Sub
El error dice: No coincide los tipos.
|
|
|
En línea
|
|
|
|
HdM
Desconectado
Mensajes: 1.674
|
Hola. Form1.ComboBoxCOM.Clear 'estas vaciando el cb MSComm1.CommPort = ComboBoxCOM 'estas asignando a una prop. numerica entera, un valor vacio, por tanto, no coinciden los tipos.
Saludos.
|
|
|
En línea
|
- Nice to see you again -
|
|
|
Meta
|
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 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
Mensajes: 1.674
|
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
|
Hola: Intenté con esto: 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
Mensajes: 1.674
|
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
|
Buenas: Todavía me sale error por aquí. 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
|
Puse un botón nuevo que este es su código. Private Sub Command_CONECTAR_Click() If Not MSComm1.PortOpen Then MSComm1.PortOpen = True ' Abrir puerto serie. Command_CONECTAR.Caption = "DESCONECTAR" Else MSComm1.PortOpen = False ' Cerrar puerto serie. Command_CONECTAR.Caption = "CONECTAR" End If End Sub
El código completo es este: Private Sub Command_CONECTAR_Click() If Not MSComm1.PortOpen Then MSComm1.PortOpen = True ' Abrir puerto serie. Command_CONECTAR.Caption = "DESCONECTAR" Else MSComm1.PortOpen = False ' Cerrar puerto serie. Command_CONECTAR.Caption = "CONECTAR" End If End Sub Private Sub Command_Led_8_OFF_Click() MSComm1.Output = "Led_8_OFF" End Sub Private Sub Command_Led_8_ON_Click() MSComm1.Output = "Led_8_ON" End Sub Private Sub Form_Load() 'Form1.ComboBoxCOM.Clear ' Limpiar comboBox. MSComm1.CommPort = ComboBoxCOM.ListIndex = 0 Timer1.Interval = 1 ' Correr el timer a 1 mls. Set WMIObjectSet = GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("SELECT * FROM Win32_PnPEntity") 'Win32_SerialPort") For Each wmiobject In WMIObjectSet If InStr(wmiobject.Name, "COM") Then ' Form1.ComboBoxCOM.AddItem wmiobject.Name End If Next Set WMIObjectSet = Nothing End Sub
Todavía me da problemas aquí. MSComm1.CommPort = ComboBoxCOM.ListIndex = 0
|
|
|
En línea
|
|
|
|
seba123neo
|
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. Option Explicit Dim vPuertos() As String 'Para almacenar el verdadero nombre de los puertos, sin la descripocion. Private Sub Form_Load() Dim i As Integer For i = 1 To 10 Combo1.AddItem "Arduino (COM" & i & ")" ' cargo el combo con descripcion y el numero del puerto ReDim Preserve vPuertos(Combo1.ListCount - 1) vPuertos(Combo1.ListCount - 1) = "COM" & i Next End Sub Private Sub Combo1_Click() MsgBox vPuertos(Combo1.ListIndex) ' te muestra solo el nombre real del puerto, sin la descripcion End Sub
saludos.
|
|
|
En línea
|
|
|
|
HdM
Desconectado
Mensajes: 1.674
|
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 -
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Encontrar Codigo y Comparacion.
Ingeniería Inversa
|
pelu11
|
1
|
2,380
|
18 Abril 2008, 10:14 am
por Shaddy
|
|
|
Necesito ayuda encontrar codigo/programa
Programación Visual Basic
|
Goldmoon
|
3
|
2,384
|
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,985
|
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,115
|
1 Mayo 2014, 00:54 am
por binario010101
|
|
|
Encontrar error en el código
Java
|
Meta
|
3
|
4,353
|
18 Agosto 2017, 15:52 pm
por ivancea96
|
|