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.
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
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
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
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
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