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

2017-03-21 Por tema Ricardo Cárdenes
Según la presentación del problema, es un ciclo de: "imprimir 0", "esperar
T0 segundos", "imprimir 1", "esperar T1 segundos"

2017-03-21 10:07 GMT-10:00 Carlos Zuniga :

> 2017-03-20 23:05 GMT-05:00 Rolando Paz :
> > 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.
> >
>
> Tu intención es que espere un tiempo tras cada print de 0 o 1? o que
> imprima 0/1 4 veces y luego esperar?
>
> import time
> from itertools import cycle
> conmutador = cycle((0,1))
>
> tiempo_total = 10
> conmutaciones = 4
>
> start = time.time()
> end = start + tiempo_total
> time_per_pulse = tiempo_total / conmutaciones
> while end > time.time():
> pulse_start = time.time()
> print(next(conmutador))
> pulse_end = time.time()
> time.sleep(time_per_pulse - (pulse_end - pulse_start))
>
>
> Ahora, time.sleep no es exacto, el tiempo va a ser normalmente mayor
> al que especificas, depende del sistema. También hay
> threading.Event.wait que puede ser más exacto.
>
>
> Saludos
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


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

2017-03-21 Por tema Carlos Zuniga
2017-03-20 23:05 GMT-05:00 Rolando Paz :
> 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.
>

Tu intención es que espere un tiempo tras cada print de 0 o 1? o que
imprima 0/1 4 veces y luego esperar?

import time
from itertools import cycle
conmutador = cycle((0,1))

tiempo_total = 10
conmutaciones = 4

start = time.time()
end = start + tiempo_total
time_per_pulse = tiempo_total / conmutaciones
while end > time.time():
pulse_start = time.time()
print(next(conmutador))
pulse_end = time.time()
time.sleep(time_per_pulse - (pulse_end - pulse_start))


Ahora, time.sleep no es exacto, el tiempo va a ser normalmente mayor
al que especificas, depende del sistema. También hay
threading.Event.wait que puede ser más exacto.


Saludos
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


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

2017-03-21 Por tema Chema Cortes
El mar., 21 mar. 2017 a las 14:04, Rolando Paz ()
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  > 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 :
>
> 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@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
-- 
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
http://blog.ch3m4.org 
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


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

2017-03-21 Por tema Rolando Paz
Hola Ricardo

Gracias por tu correo.

De que otra forma se podria realizar esto?
Otro lenguaje de programación?

Saludos


El 21 de marzo de 2017, 0:48, Ricardo Cárdenes 
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 :
>
>> 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@python.org
>> https://mail.python.org/mailman/listinfo/python-es
>>
>>
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


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

2017-03-21 Por tema Ricardo Cárdenes
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 :

> 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@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es


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

2017-03-21 Por tema Mario R. Osorio
Yo creo que acá nadie hace la tarea de otro...

On Mar 21, 2017 12:06 AM, "Rolando Paz"  wrote:

> 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@python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es