Hola a todos, soy nuevo aqui y programando y me estoy iniciando con python.

 

Tengo un pequeño proyecto mocap que combina blender, python y un 
microcontrolador con sus respectivos sensores.

 

El microcontrolador moniorea el estado de los sensores, carga un string con 
estos datos, lo manda via serial, ahora bien, tengo el codigo que modifica mi 
esqueleto frame por frame controlado, pero tengo un problema con la recepcion 
de los datos, con pyserial puedo leer todo lo que llegue al puerto, pero en si 
yo necesito un manejo de eventos, me explico: 

 

Un evento que me avise que llegó la señal al puerto y a partir de ahi yo llamo 
una función, que es precisamente la que actualiza la pose de mi armature.

 

Yo puedo hacer un bucle que haga esto, es decir, que lea los datos recibidos y 
luego actualice mi armature, pero existe un inconveniente, no puedo poner mi 
funcion de actualizacion dentro de un bucle, porque blender cuando entra en un 
bucle hace el trabajo, pero como que se frisa y no muestra los movimientos en 
la ventana 3d hasta que salgo del script, y la idea es que yo pueda ver el 
movimiento de mi personaje en tiempo real, por eso necesito que se haga esto 
con eventos que esperen la señal y cuando llegue que llamen mi funcion.

 

Tengo aqui un ejemplo que combina eventos con comunicacion serial hecho en 
Visual Basic, este lo utilicé en un proyecto similar y me funcionó, pero ahora 
lo necesito en python y no se como traducirlo:

 

Imports System.IO
Imports System.IO.Ports
 
Public Class Form2
    Dim Recibidos As String
    Public Sub New()
         InitializeComponent()
         SerialPort1.PortName = "COM6"
         ' Abrir puerto mientra se ejecute la aplicación
         If Not SerialPort1.IsOpen Then
              Try
                    SerialPort1.Open()
              Catch ex As System.Exception
                    MessageBox.Show(ex.ToString())
              End Try
         End If
         ' Ejecutar la funcion Recepcion por disparo del Evento 'DataReived'
         AddHandler SerialPort1.DataReceived, AddressOf Recepcion
     End Sub

     Private Sub Recepcion(ByVal sender As Object, ByVal e As  
System.IO.Ports.SerialDataReceivedEventArgs)
     ' Acumular los carácteres recibidos a nuestro 'buffer' (string)
         Recibidos += serialPort1.ReadExisting()
     End Sub
End Class

No les dejo mi codigo porque no está terminado, pues me falta esata parte.
Muchas gracias por anticipado.                                    
_________________________________________________________________
¿Cuánto espacio necesitas para guardar tus emails? Con Hotmail tienes 5GB y 
puede ampliarse a más.
http://www.descubrewindowslive.com/hotmail/almacenamiento.asp
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a