Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Tokes

#111
Hola a toda la gente del foro:

Tengo un pequeño problema en Visual Basic 6. Verán: Estoy haciendo un sistema de adquisición de datos con un microcontrolador ATMEGA16, el cual se conecta a una PC mediante el puerto serie RS232. La interfaz de la PC la hice en Visual Basic 6.0, utilizando el control MSComm.

Al ejecutar el programa en el IDE todo funciona correctamente. Si lo compilo y ejecuto el archivo .EXE todo funciona correctamente. El problema viene cuando trato de ejecutar el archivo .EXE en una computadora que no tiene instalado Visual Basic (repito, el archivo .EXE, el compilado). Si trato de ejecutarlo me manda un mensaje de error, especificando que no se reconoce el componente MSComm1.

En este caso ¿Es forzoso que la PC deba tener instalado Visual Basic para que el programa se ejecute? ¿O sólo hay que instalar algún driver o algo así?


                     Gracias por su atención.

PD: Les informo que el problema lo solucioné instalando Visual Basic en la PC. Pero sería fastidioso instalar Visual Basic en cada una de las computadoras donde se tenga que ejecutar el programa. Por eso quisiera saber si hay alguna otra manera.
#112
Buen día, muchacho(a):

Prueba con este sencillo código y si no te sirve (o no te gusta), lo siento, no puedo hacer más por tí.

Para correrlo necesitas un Combo1 y un Text1. En el combo seleccionas la comida o bebida y en el Text te muestra el precio.

Option Explicit

Dim precios As New Collection

Private Sub Combo1_Click()
    Text1.Text = precios.Item(Combo1.ListIndex + 1)
    If Val(Text1.Text) = 0 Then
        Text1.Text = " - "
    End If
End Sub

Private Sub Form_Load()
    Text1.Text = ""
    Combo1.AddItem ("----comidas----")
    precios.Add ""
    Combo1.AddItem ("pizza")
    precios.Add 110
    Combo1.AddItem ("pollo")
    precios.Add 65
    Combo1.AddItem ("choripan")
    precios.Add 20
    Combo1.AddItem ("----bebidas----")
    precios.Add ""
    Combo1.AddItem ("agua")
    precios.Add 8.5
    Combo1.AddItem ("cerveza")
    precios.Add 15
    Combo1.AddItem ("gaseosa")
    precios.Add 10.5
    Combo1.AddItem ("vino")
    precios.Add 30

    Combo1.ListIndex = 0
End Sub


                  Saludos.
#113
¡Ja, ja! Soy un imbécil. Pero bueno, gracias, PsYkE1.
#114
Disculpen, es cierto. Según yo ya devuelvo numero final en este código.

Private Function EsNumLychrel5b(ByVal num As Long, ByRef numeroFinal As Double, Optional ByVal iteraciones As Long = 50) As Boolean
Dim n As Double, nrev As Double
    If num And &H80000000 Then Exit Function
    n = num
    Do While iteraciones > 0
        nrev = dblReverse(n)
        If n = nrev Then
            numeroFinal = n
            Exit Function
        End If
        n = n + nrev
        iteraciones = iteraciones - 1
    Loop
    nrev = dblReverse(n)
    If n = nrev Then Exit Function
    EsNumLychrel5b = True
    numeroFinal = n


Si alguien gusta hacerle alguna modiicación ¡Adelante!
#115
Disculpen, hace rato puse mi código pero con instrucciones basura que nada que ver con el proceso (era para probar ciertas funciones). Aquí se los dejo corregido. Tiene prácticamente la misma velocidad de antes, pero sin ese código basura.

Private Function EsNumLychrel5(ByVal num As Long, ByRef numeroFinal As Double, Optional ByVal iteraciones As Long = 50) As Boolean
Dim n As Double, nrev As Double
    If num And &H80000000 Then Exit Function
    n = num
    Do While iteraciones > 0
        nrev = dblReverse(n)
        If n = nrev Then Exit Function
        n = n + nrev
        iteraciones = iteraciones - 1
    Loop
    nrev = dblReverse(n)
    If n = nrev Then Exit Function
    EsNumLychrel5 = True
    numeroFinal = n
End Function
#116
Aquí dejo un nuevo código, basado en la función que nos mostró Karcrack.

Private Function EsNumLychrel5(ByVal num As Long, ByRef numeroFinal, Optional ByVal iteraciones As Long = 50) As Boolean
Dim n As Double, nrev As Double, sp As String
    If num And &H80000000 Then Exit Function
    n = num
    sp = "1234"
    Do While iteraciones > 1
        nrev = dblReverse(n)
        If n = nrev Then Exit Function
        n = n + nrev
        iteraciones = iteraciones - 1
    Loop
    nrev = dblReverse(n)
    If n = nrev Then Exit Function
    EsNumLychrel5 = True
    numeroFinal = n
End Function


Y la función de Karcrack (modificada para que pueda manejar doubles y no sólo longs):

Public Function dblReverse(ByVal lDbl As Double) As Double
    Do
        dblReverse = dblReverse * 10 + (lDbl - (10 * Fix(lDbl / 10)))
        lDbl = Fix(lDbl / 10)
    Loop While lDbl > 0
End Function


     Efectivamente es más rápido.

     Saludos....
     Y muchas gracias Karcrack.
#117
Aquí les dejo otra versión que según yo es más rápida.

Private Function EsNumLychrel5(ByVal num As Long, ByRef numeroFinal, Optional ByVal iteraciones As Long = 50) As Boolean
Dim n As Double, nrev As Double
    If num And &H80000000 Then Exit Function
    n = num
    Do While iteraciones > 1
        nrev = CDbl(StrReverse(n))
        If n = nrev Then Exit Function
        n = n + nrev
        iteraciones = iteraciones - 1
    Loop
    nrev = CDbl(StrReverse(n))
    If n = nrev Then Exit Function
    EsNumLychrel5 = True
    numeroFinal = n
End Function


          ¡Buen día!
#118
Buen día, gente. Aquí les dejo mi aporte:

Private Function EsNumLychrel4(ByVal num As Long, ByRef numeroFinal, Optional ByVal iteraciones As Long = 50) As Boolean
Dim n As Double, snrev As String
    If num And &H80000000 Then Exit Function
    n = num
    Do While iteraciones > 1
        snrev = StrReverse(n)
        If CStr(n) = snrev Then Exit Function
        n = n + CDbl(snrev)
        iteraciones = iteraciones - 1
    Loop
    snrev = StrReverse(n)
    If CStr(n) = snrev Then Exit Function
    EsNumLychrel4 = True
    numeroFinal = n
End Function


Por el momento es todo. Saludos.
#119
Citarmuchas gracias por ayudar, pero la fuente secundaria que alimenta mi circuito es de 5V-450mA podriais decidme un chip que haga lo mismo pero a 5V

Tengo entendido que ese integrado no sólo funciona con 12 V. Igual te puede funcionar con 5 V (Al fín y al cabo sólo son transistores).

En mi humilde opinión, si sólo vas a usar un relevador, no tiene caso que lo utilices. Puedes hacerlo con un simple transistor (y su diodo de protección, claro).

             Saludos.
#120
Oye BlackZerox:

Gracias por el proyecto general. Te voy a molestar con una pregunta:

El módulo que contiene las funciones del timer, si yo no lo tuviera, ¿Tengo que crearlo, o ya hay una librería o algo así?

       Por tu atención, gracias.