Animacion grafica con VB

Iniciado por freddymaila, 22 Enero 2007, 22:37 PM

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

freddymaila

Hola necesito que me ayuden por favor.
Deseo  realizar la animacin de los movimientos de los dedos
de la mano en tiempo real con VB.
Tengo el Hardware que es un guante que envia un estream de bit cuando los dedos se mueven entoces deseo tomar estos bit por el puerto serial y mostrar el movimiento de los dedos de la mano en el pc,como lo ago si alguien me puede ayudar le estare agredecido.

Sancho.Mazorka

Man te agregue al msn, y te puedo ayudar estoy en el tema, pero x puerto paralelo te puedo ayudar mejor que por el serial. Dsp aclaramos bien las cosas ;)


Sancho.Mazorka    :P
Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html



Hans el Topo

Cita de: Sancho.Mazorka en 23 Enero 2007, 08:48 AM
Man te agregue al msn, y te puedo ayudar estoy en el tema, pero x puerto paralelo te puedo ayudar mejor que por el serial. Dsp aclaramos bien las cosas ;)


Sancho.Mazorka    :P

esto no es un chat de ligue eh!!

suena interesante lo que planteas freddymaila xD

ya nos contarás
 

Sancho.Mazorka

jajjaja que buen chiste Topo! Si kieren se los comparto por aca, pero yo decia por msn porque es mejor, y el Dsp aclaramos bien las cosas fue para aclarar el tema del paralelo, mal pensado :P

Si kieren avisen, a vos tmb Topo ;)


Sancho.Mazorka    :P
Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html



mdg

Hola!

Encontre una funcion para manipular byts, no se si te sirva pero ahi te va:

KB de Microsoft. Article ID: Q185554

Rutinas :

- BitMask : devuelve una máscara empleada por las otras rutinas.
- BitSet : Pone un bit a uno o a cero.
- BitFlip : Cambia el estado de un bit.
- BitTest : Devuelve el estado de un bit.
- ArrayBitSet : Pone un bit a uno o a cero.
- ArrayBitFlip : Cambia el estado de un bit.
- ArrayBitTest : Devuelve el estado de un bit.

Las rutinas Array asumen 32 bits por elemento, comenzando con los bits del 0 al 31 en el primero, del 32 al 63 en el segundo, etc. La matriz no necesita comenzar en el elemento cero.

Estas rutinas tienen uno a más de los siguientes parámetros :
- X : un long que contiene los 32 bits a manipular.
- A() : una matriz conteniendo los bits a manipular.
- Value : TRUE para poner un bit a uno y FALSE para ponerlo a cero.
- N : número que indica el bit a manipular. En el caso de una variable long va desde el 0 al 31. En el caso de una matriz va desde el 0 hasta el (numero de elementos * 32) -1. Si el valor de N está fuera del rango se ignora. En el caso de una función se devuelve FALSE.

Las funciones BitTest y ArrayBitTest devuelven TRUE (-1) si el bit está a 1 y FALSE (0) si está a 0.

Function BitMask(ByVal N As Long) As Long
Dim I As Long, Mask As Long

If N < 0 Or N > 31 Then
    BitMask = 0
    ElseIf N = 31 Then
        BitMask = &H80000000
    Else: Mask = 1
            For I = 1 To N
                Mask = Mask + Mask
            Next I
            BitMask = Mask
End If
End Function

Sub BitSet(X As Long, ByVal N As Long, ByVal Value As Boolean)
If Value Then
    X = X Or BitMask(N)
Else: X = X And Not BitMask(N)
End If
End Sub

Sub BitFlip(X As Long, ByVal N As Long)
X = X Xor BitMask(N)
End Sub

Function BitTest(X As Long, ByVal N As Long) As Boolean ' Return False if invalid N
BitTest = (X And BitMask(N)) <> 0
End Function

Sub ArrayBitSet(A() As Long, ByVal N As Long, ByVal Value As Boolean)
Dim Element As Integer
Element = N \ 32 + LBound(A)
If Element <= UBound(A) And N >= 0 Then
    BitSet A(Element), N Mod 32, Value
End If
End Sub

Sub ArrayBitFlip(A() As Long, ByVal N As Long)
Dim Element As Integer
Element = N \ 32 + LBound(A)
If Element <= UBound(A) And N >= 0 Then
    BitFlip A(Element), N Mod 32
End If
End Sub

Function ArrayBitTest(A() As Long, ByVal N As Long) As Boolean ' Returns False if invalid N.
Dim Element As Integer
Element = N \ 32 + LBound(A)
If Element <= UBound(A) And N >= 0 Then
    ArrayBitTest = BitTest(A(Element), N Mod 32)
Else
    ArrayBitTest = False
End If
End Function


Basándonos en estas rutinas de Microsoft es sencillo crearnos una para desplazar bits a la izquierda y a la derecha, similar a los operadores << y >> de C.

Function DesplazaLongIzda(ByVal numero As Long, pos As Long) As Long
Dim i As Long

For i = 31 To pos Step -1
   BitSet numero, i, BitTest(numero, i - pos)
Next i
For i = pos - 1 To 0 Step -1
    BitSet numero, i, False
Next i
DesplazaLongIzda = numero
End Function

Function DesplazaLongDcha(ByVal numero As Long, pos As Long) As Long
Dim i As Long

For i = 0 To 31 - pos
   BitSet numero, i, BitTest(numero, i + pos)
Next i
For i = 31 - pos To 31
    BitSet numero, i, False
Next i
DesplazaLongDcha = numero
End Function




Sancho.Mazorka

mdg en que parte dice como mandar o recibir bits por el puerto serial ? y freddymaila creo que te puedo ayudar igual, solo cambio los puertos y los bits que envio, y funcionaria igual que con el paralelo



Sancho.Mazorka    :P
Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html