Haz una pregunta
  Foros de Electrónica » Diseño digital » Interfaces y Programación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

25/03/2015 #1

Avatar de Meta

Diseño interfaz con VB 6
Hola:

Estoy haciendo una Interfaz con VB 6 para Windwos 7 de 64 bits.


Como puedes o pueden ver, se inicia el puerto serie nada más ejecutar la aplicación o interfaz. Hay gente que lo quiere activar y desactivar el puerto con un botón.

¿Qué prefiere la mayoría de ustedes?

Por ahora, estoy terminando lo de recibir mensajes de texto por parte de los PIC y Arduino.

Saludos.
25/03/2015 #2
Moderador

Avatar de D@rkbytes

Meta dijo: Ver Mensaje
Como puedes o pueden ver, se inicia el puerto serie nada más ejecutar la aplicación o interfaz.
Hay gente que lo quiere activar y desactivar el puerto con un botón.

¿Qué prefiere la mayoría de ustedes?
Existen muchas aplicaciones que inician abriendo el puerto serie, pero se debe tener en cuenta algo muy importante.
No todas las computadoras actuales tienen puerto serial, y si lo tienen, puede ocurrir que se encuentre ocupado.
Por lo tanto es conveniente que la aplicación tenga una rutina de comprobación al iniciar.
Si no existen puertos se debe dar un aviso al usuario, y si existen puertos, se deben enumerar y descartar los que se encuentren ocupados.

Cuando no existen puertos serie y la aplicación intenta abrir alguno, se producirá un error que si no es depurado provocará el cierre de la misma. (En VB6)

Los puertos disponibles son los que se deben mostrar, y por ese motivo es más conveniente que el usuario sea quien tome la decisión de seleccionar el puerto.

Otro motivo de no iniciar el puerto serie cuando se ejecute la aplicación, es la selección de parámetros COM.
Si éstos ya han sido preestablecidos no hay problema, pero siempre puede haber cambios por mejoras y se tendría que reprogramar la aplicación.

Así que la decisión de abrir un puerto al iniciar la aplicación, depende de los criterios del programador.
25/03/2015 #3

Avatar de J2C

.



Opinión personal después de un año de haber actualizado (Marzo 2014) mi PC del Taller.


Cuesta un triunfo (muchos $$$) conseguir una PC con puertos COM !!!. Como que hay que empezar a realizar las cosas pensando en USB (aclare mi opinión personal).


Tanto es así que estoy tratando de conseguir una motherboard aunque sea algo antigua (Celeron 2.66) que posea puertos COM y ponerle un XP SP3.



Saludos, JuanKa.-
25/03/2015 #4


J2C dijo: Ver Mensaje
.



Opinión personal después de un año de haber actualizado (Marzo 2014) mi PC del Taller.


Cuesta un triunfo (muchos $$$) conseguir una PC con puertos COM !!!. Como que hay que empezar a realizar las cosas pensando en USB (aclare mi opinión personal).


Tanto es así que estoy tratando de conseguir una motherboard aunque sea algo antigua (Celeron 2.66) que posea puertos COM y ponerle un XP SP3.



Saludos, JuanKa.-
pero si hay tarjetas pci y pci express seriales solo necesitas una placa madre con los slot

por que incluso ya estan saliendo sin slot

y para el mensaje original del post
configurable con un archivo de configuracion


en caso de que no exista el archivo de configuracion
que la aplicacion lo cree con los parametros basicos o por defecto
25/03/2015 #5

Avatar de pandacba

Hay muchas placas no tan viejas que si bien no trae el conector en la placa estan los pines para poner el conector con cable, y como conectaror existen placas PCI, para agregarlo y funcionan muy bien
26/03/2015 #6

Avatar de Meta

Hola:

Hay tarjetas PCI de puerto serie y paralelo, precisamente no son caras.


En caso de que no tenga estar tarjetas ni en la propia placa base el puerto serie. Arduino crea uno virtual, he puesto Arduino UNO y Arduino Micro. Lo detecta como puerto serie.

Las ideas que me dan está bien presentada. Lo intentaré hacer como dicen. En Visual C#, más adelante lo haré con VB .net

Ejemplo: Detecta el puerto serie y lo añade al componente comboBox de Visual C# automáticamente.
Código:
protected override void WndProc(ref Message m)         
     {             
              if (m.Msg == 0x219)             
     {                
           combopuertos.DataSource = SerialPort.GetPortNames();            
     }     
            base.WndProc(ref m);        
      } // Detecta si hay cambios en el usb y si los hay los refleja
Gracias por las informaciones.

Pondré ejemplos por aquí cuando termine y me dirán sugerencias para hacerlo lo mejor posible.
26/03/2015 #7

Avatar de Meta

Registrar control RichTextBox de VB 6 para usarlo.
Hola:

He encontrado 6 cmd.exe en Windows 7 de 64 bits.



Ver zoom.

Lo ejecuto como administrador.



Ejecuto comando como indica abajo.



Me sale este mensaje.



Contento y emocionado, intento agregar el componente.



Le doy aplicar o aceptar y me aparece este mensaje.



Me pregunto. ¿Qué es lo que falla realmente?

Saludos.
26/03/2015 #8
Moderador

Avatar de D@rkbytes

Eso sucede cuando el componente ActiveX no es compatible con el sistema operativo.

El llamado a la función "DllRegisterServer" hace el correspondiente registro, pero por incompatibilidades con el sistema, el IDE no puede tener acceso al mismo.

Eso me ha pasado al actualizar la versión de Windows.
Pudiera no ser tu caso, pero te recomiendo que actualices el ActiveX por uno que sea compatible con tu sistema.
26/03/2015 #9

Avatar de Meta

Por lo que veo, mejor me conformo con un Text y pongo en modo Multiline. Llevo tiempo con la tontería esta.
26/03/2015 #10
Moderador

Avatar de D@rkbytes

Existen otros componentes alternativos al control ActiveX RichEdit32.dll.
Necesitas buscar por la red. Una buena página de ejemplos y componentes gratuitos, es vbAccelerator
Ahí puedes encontrar el componente (VBRichEdit.ctl)
Ese componente tal vez funcione en tu sistema por ser creado en el mismo entorno.
26/03/2015 #11
Moderador general

Avatar de Fogonazo

No abras un tema por cada duda que te aparece sobre lo mismo
26/03/2015 #12


Meta dijo: Ver Mensaje
Las ideas que me dan está bien presentada. Lo intentaré hacer como dicen. En Visual C#, más adelante lo haré con VB .net
c# y visualnet es practicamnete lo mismo
no existen mayores diferencias que el EGO
del programador

para vb.net el codigo seria

Código:
Me.comboBox1.DataSource=Me.serialPort1.GetPortNames

y del error en vb basic 6 quizas debas ejecutarlo como administrador tambien
26/03/2015 #13

Avatar de Meta

Lo he hecho como administrador y nada de nada. Qui´zas tenga que poner el objeto en el Widnows/System32 y no donde está para 64 bits.
26/03/2015 #14


Meta dijo: Ver Mensaje
Lo he hecho como administrador y nada de nada. Qui´zas tenga que poner el objeto en el Widnows/System32 y no donde está para 64 bits.
el system32 es de 64 bit
y el siswow64 es de 32 bit

http://www.samlogic.net/articles-spa...6-syswow64.htm
27/03/2015 #15

Avatar de Meta

analogico dijo: Ver Mensaje
c# y visualnet es practicamnete lo mismo
no existen mayores diferencias que el EGO
del programador

para vb.net el codigo seria

Código:
Me.comboBox1.DataSource=Me.serialPort1.GetPortNames
y del error en vb basic 6 quizas debas ejecutarlo como administrador tambien
Alguasn cosas son lo mismo otras no tanto. No se el motivo que Microsoft quiere que pasemos a C# y nos olvidemos de VB. En clases nos enseñaron VB .net, (no me gusta mucho este lenguaje) y que el mercado, al menos en España, estamos con C#, esos i, por encima el rey del mundo al menos en el empresarial es Java. Aunque muchos crean que no.


analogico dijo: Ver Mensaje
el system32 es de 64 bit
y el siswow64 es de 32 bit

http://www.samlogic.net/articles-spa...6-syswow64.htm
Me acabas de dejar las cosas muy claras, cosa que no sabía. Por lo que veo, aunque haga de todo, usaré solo el Text y en modo Multilinea. Ahora me toca aprender como se hace entradas de datos desde el puerto serie.

Saludos.
28/03/2015 #16

Avatar de Meta

Hola:

Siguiendo con el tema. Haber si diseño un poco mejor.



Consiste en tener un botón CONECTAR puerto o abrirlo. Si lo abres el puerto se abre y en el mismo botón dirá DESCONECTAR. Su código es este.

Código:
Private Sub Command_CONECTAR_Click()
    If Not MSComm1.PortOpen Then
       MSComm1.PortOpen = True
       Command_CONECTAR.Caption = "DESCONECTAR"
    Else
       MSComm1.PortOpen = False
       Command_CONECTAR.Caption = "CONECTAR"
    End If
End Sub
Aquí abajo tengo un código completo del programa pero que tiene muchos errores. El combobox detecta cuando hay puerto serie sea físico y virtual cuando ejecuta este programa. Así que debería funcionar eligiendo cualquier pueto que elijas del comobox.

Código:
Private Sub Command_CONECTAR_Click()
    If Not MSComm1.PortOpen Then
       MSComm1.PortOpen = True
       Command_CONECTAR.Caption = "DESCONECTAR"
    Else
       MSComm1.PortOpen = False
       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()
    MSComm1.PortOpen = True ' Habilitar el puerto serie.
       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
Cuando logre este objetivo, continuo la parte de recibir datos por el puerto serie.

Saludos.

PD: La verdad que no se parece nada al VB .net.
Imágenes Adjuntas
Tipo de Archivo: png re.png (9,3 KB (Kilobytes), 85 visitas)
28/03/2015 #17

Avatar de Scooter

Eso, a ver................
28/03/2015 #18

Avatar de Meta

Me señala siempre esta parte.
Código:
MSComm1.CommPort = ComboBoxCOM.ListIndex = 0
Error que no puede abrir el puerto.
28/03/2015 #19
Moderador

Avatar de D@rkbytes

Así no está bien. Combo1.ListIndex = 0, tiene el valor 0 y el puerto 0 no existe.
Podría ser: MSComm1.ComPort = ComboBoxCOM.ListIndex + 1

Acá ya está una interfaz completa y funcionando donde puedes ver cómo se hace.
Interfaz RS232 PIC PC (Proyecto Completo VB6)

Te recomiendo que mires la versión 2 que tiene algunas mejoras.

Ahora uso otro método para cargar los puertos disponibles al ComboBox:
Código:
    ' Buscar del COM1 al COM16 (El MSCOMM de VB6 sólo admite hasta 16 puertos)
    cmbPort.Clear
    ' Método sin API
    ' Este método reconoce todos los virtuales, pero si hay más de 16 virtuales
    ' el método falla agregando puertos falsos si el For es mayor a 16
    For i = 1 To 16
        frmMain.RS232.CommPort = i
        On Error Resume Next
        frmMain.RS232.PortOpen = True
        If Err = 0 Then
            frmMain.RS232.PortOpen = False
            cmbPort.AddItem "COM" & i
        End If
    Next i

    cmbPort.ListIndex = 0 ' Aquí yo establezco el indice desde un valor del registro.
Y para establecer el número del puerto al MSCOMM, lo hago de ésta forma:
Código:
    ' Obtener sólo el número del puerto seleccionado
    ComPort = CStr(Mid(cmbPort.Text, 4)) ' Al hacer ésto, se elimina "COM"
    MSCOMM1.CommPort = ComPort
28/03/2015 #20


Meta dijo: Ver Mensaje
Hola:


Saludos.

PD: La verdad que no se parece nada al VB .net.
se parece y mucho solo que el net es con objetos
y lo mejor que con el net es hasta mas facil

no tienen sentido hacer esto en vb6 a menos que lo vayas a usar en un pc antiguo
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Interfaces y Programación

Lenguajes de programación, gestión y manejo de puertos

Cerrar
Foros de Electrónica » Diseño digital » Interfaces y Programación

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.