[Python-es] Control de tiempo entre conmutaciones de 0 y 1

Chema Cortes pych3m4 en gmail.com
Mar Mar 21 15:56:57 EDT 2017


El mar., 21 mar. 2017 a las 14:04, Rolando Paz (<flxpaz en gmail.com>)
escribió:

> Hola Ricardo
>
> Gracias por tu correo.
>
> De que otra forma se podria realizar esto?
> Otro lenguaje de programación?
>

Más importante que el lenguaje de programación sería la plataforma usada.
Para tener un control muy preciso de tiempos habría que usar sistemas de
tiempo real como RT-Linux.

En cuanto a lenguajes de programación, se usa C o ensamblador, aunque es
posible usar rust e incluso una versión de python modificada,
micropython.org, que funciona en su propio hardware, pyboard.

En cualquier caso, los sistemas operativos modernos tienen en cuenta las
interrupciones a la hora de calcular el tiempo real transcurrido. En lugar
de controlar tú mismo los tiempos de ejecución, delega en el sistema
operativo. Por ejemplo, creando un hilo que se ejecute a intérvalos fijos.

Pero me parece que lo que tienes entre manos es más un ejercicio teórico y
que nada importan las tolerancias en los tiempos de ejecución.



>
> Saludos
>
>
> El 21 de marzo de 2017, 0:48, Ricardo Cárdenes <ricardo.cardenes en gmail.com
> > escribió:
>
> Hola Rolando,
>
> Antes de corregirte el código... ¿Estás seguro de que quieres usar Python
> para esto? Si la tolerancia que tienes para los tiempos es grande, ok, pero
> si no, te recomendaría que usases otra cosa. Y sobre todo, no usar
> time.sleep, claro. Con eso puedes acumular unos retrasos enormes en el
> código.
>
> Saludos,
> Ricardo
>
> 2017-03-20 18:05 GMT-10:00 Rolando Paz <flxpaz en gmail.com>:
>
> Hola a todos de nuevo...
>
> Ahora regreso con un pequeño código:
>
> import time
>
> start_time = time.time()
> #tiempo total en segundos, como ejemplo 10.
> tiempo_total = 10
> #numero de conmutaciones generadas, como ejemplo 4.
> conmutaciones = 4
> for offset in range(tiempo_total):
>     while (time.time() - start_time) < offset:
>         time.sleep(0.01)
>         #lo siguiente realiza una conmutacion entre 0 y 1.
>         count = 0
>         for i in range(conmutaciones):
>             count = (count + 1) % 2
>              print count
>
> Lo que hace este código es conmutar entre 0 y 1, tantas veces como se
> defina en "conmutaciones", durante el tiempo establecido en "tiempo_total".
>
> La salida es la siguiente.
>
> 0
> 1
> 0
> 1
>
> Estoy tratando de entender cómo usar este código para controlar los
> tiempos que se definen en la imagen adjunta, es decir:
>
> T1 = tiempo durante el cual la conmutacion es 1
> T0 = tiempo durante el cual la conmutacion es 0
> Tiempo Total = tiempo total de las conmutaciones
>
> Agradecería cualquier comentario sobre como poder controlar los tiempos
> anteriores.
>
> Saludos y gracias
>
> Rolando P.
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>
-- 
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
http://blog.ch3m4.org <http://ch3m4.org/blog>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20170321/fb8d058e/attachment.html>


Más información sobre la lista de distribución Python-es