|
||
|
|
|
|||||||
| Tasker Para hablar de todo lo relacionado con la aplicación tasker |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Lo que estoy intentado es saber la diferencia en el formato (H:M:S) del tiempo transcurrido desde un x de INICIO, hasta otro x de FIN.
Esta es la tarea en cuestión: Código:
A1: Establecer variable [ Nombre:%start A:%TIMES Calcular:Apagado Añadir:Apagado ]
A2: Esperar [ MS:0 Segundos:x Minutos:x Horas:x Días:0 ]
A3: Establecer variable [ Nombre:%end A:%TIMES Calcular:Apagado Añadir:Apagado ]
A4: Establecer variable [ Nombre:%calc A:%end-%start Calcular:Encendido Añadir:Apagado ]
A5: Establecer variable [ Nombre:%hhh A:floor(%calc/3600) Calcular:Encendido Añadir:Apagado ]
A6: Establecer variable [ Nombre:%mmm A:floor((%calc % 3600)/60) Calcular:Encendido Añadir:Apagado ]
A7: Establecer variable [ Nombre:%sss A:%calc % 60 Calcular:Encendido Añadir:Apagado ]
A8: Establecer variable [ Nombre:%hhh A:0%hhh Calcular:Apagado Añadir:Apagado ] Si (if) [ %hhh < 10 & %hhh > 0 ]
A9: Establecer variable [ Nombre:%hhh A:00 Calcular:Apagado Añadir:Apagado ] Si (if) [ %hhh = 0 ]
A10: Establecer variable [ Nombre:%mmm A:0%min Calcular:Apagado Añadir:Apagado ] Si (if) [ %mmm < 10 & %mmm > 0 ]
A11: Establecer variable [ Nombre:%mmm A:00 Calcular:Apagado Añadir:Apagado ] Si (if) [ %mmm = 0 ]
A12: Establecer variable [ Nombre:%sss A:0%sss Calcular:Apagado Añadir:Apagado ] Si (if) [ %sss < 10 & %sss > 0 ]
A13: Establecer variable [ Nombre:%sss A:00 Calcular:Apagado Añadir:Apagado ] Si (if) [ %sss = 0 ]
A14: Flash [ Texto:%hhh:%mmm:%sss Largo:Encendido ]
Nota: x = tiempo de espera simulado entre tiempo INICIO Y FIN. Última edición por SmartPhoneLover Día 08/12/16 a las 13:04:04. |
|
|
|
#2
|
||||
|
||||
|
No me queda muy claro el planteamiento. ¿Qué formato tienen %start y %end?.
Si %start y %end son horas en formato H:M:S la resta que haces en A4 (%end-%start) puede dar como resultado cualquier cosa. Ten en cuenta que en ese caso estarías restando dos cadenas de caracteres convertidas a números sin contemplaciones. Si esos valores de entrada tienen formato H:M:S lo mejor para "simplificar" el asunto es convertir ambos valores a segundos, hacer la resta, y luego convertir los segundos de diferencia al formato que quieras/necesites. Para la conversión H:M:S a SEG tienes una acción de Tasker que lo hace directamente, aunque me suena que no tiene en cuenta los segundos, en cuyo caso los tendrás que sumar tú después. Esto me ha recordado de nuevo que tengo pendiente publicar una tarea para convertir segundos a cualquier otra cosa.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#3
|
||||
|
||||
|
Hola , ya se ha tratado, fijate si te sirve algo de esto
http://www.htcmania.com/showthread.php?t=739807 http://www.htcmania.com/showthread.php?t=571609 http://www.htcmania.com/showthread.php?t=637972 Saludos |
| Los siguientes 2 usuarios han agradecido a leromaro su comentario: | ||
|
#4
|
||||
|
||||
|
No me queda muy claro el planteamiento. ¿Qué formato tienen %start y %end?.
Si %start y %end son horas en formato H:M:S la resta que haces en A4 (%end-%start) puede dar como resultado cualquier cosa. Ten en cuenta que en ese caso estarías restando dos cadenas de caracteres convertidas a números sin contemplaciones. Si esos valores de entrada tienen formato H:M:S lo mejor para "simplificar" el asunto es convertir ambos valores a segundos, hacer la resta, y luego convertir los segundos de diferencia al formato que quieras/necesites. Para la conversión H:M:S a SEG tienes una acción de Tasker que lo hace directamente, aunque me suena que no tiene en cuenta los segundos, en cuyo caso los tendrás que sumar tú después. Esto me ha recordado de nuevo que tengo pendiente publicar una tarea para convertir segundos a cualquier otra cosa. ![]() ![]() - La resta que realizo en la A4 la hago para restar los segundos de anteriormente obtenidos. De este modo seguría trabajando con segundos. Luego pasaría de segunfos a HH:MM:SS. - Es lo que hago, o no? Utilizo %TIMES para trabajar con los tiempos iniciales directamente en segundos, de esta manera me evito el convertir de h-m-s a segundos. - Ya pero tendría que sincronizar los segundos de la formula [%TIMES-(60*floor(%TIMES/60))], con el tiempo convertido a segundos de la variable %TME. - Mmmm, me gustaría verlo. Estoy impaciente por ver tu trabajo. ;) |
|
#5
|
||||
|
||||
|
Hola , ya se ha tratado, fijate si te sirve algo de esto
http://www.htcmania.com/showthread.php?t=739807 http://www.htcmania.com/showthread.php?t=571609 http://www.htcmania.com/showthread.php?t=637972 Saludos ![]() A partir de ahora antes de preguntar, me mataré buscando por aquí, por la web y debajo de las piedras. Luego, si REALMENTE no encuentro nada, ni siquiera en chino mandarín, preguntaré
|
|
#6
|
||||
|
||||
|
Buscando antes probablemente habrías dado incluso con scripts completos, pero mucho más importante que eso o que saber crear bien la tarea a la primera es la metodología a la hora de depurar código. Tendrías que haber metido lineas de debug (mostrar resultados parciales de cálculos con acciones flash o popups) para averiguar donde falla, en qué linea los cálculos se desvían de lo que deberían ser (si es necesario usar datos iniciales fake para mayor facilidad) y vista esa linea concreta, si no sabes por qué falla entonces buscar.
|
| Gracias de parte de: | ||
|
#7
|
||||
|
||||
|
Me he quedado con la descripción que has hecho y no he prestado atención a las primeras acciones de la tarea. ![]() Estando claro que manejas segundos desde el primer momento el problema tiene que estar en las operaciones posteriores. ![]() Las operaciones de las acciones A5/A6/A7 son correctas y hacen lo que se espera de ellas. En las acciones A8 a A13 (para poner el cero a la izquierda) está el fallo. En A10 has usado %min en vez de %mmm. Por cierto, podías hacer lo mismo sólo con tres acciones.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
| Gracias de parte de: | ||
|
#8
|
||||
|
||||
|
Buscando antes probablemente habrías dado incluso con scripts completos, pero mucho más importante que eso o que saber crear bien la tarea a la primera es la metodología a la hora de depurar código. Tendrías que haber metido lineas de debug (mostrar resultados parciales de cálculos con acciones flash o popups) para averiguar donde falla, en qué linea los cálculos se desvían de lo que deberían ser (si es necesario usar datos iniciales fake para mayor facilidad) y vista esa linea concreta, si no sabes por qué falla entonces buscar.
![]() |
|
#9
|
||||
|
||||
|
Tienes que dar por hecho que la primera vez que ejecutes una tarea muy larga y complicada muy posiblemente no va a funcionar correctamente, debes estar preparado para ello. Incluso mientras creas la tarea puedes ir pensando qué alertas te pueden resultar útiles para depurar después el código o incluso crearlas de antemano y si luego resulta que no hacen falta (porque funciona a la primera), dejarlas (desactivadas) para facilitar posibles modificaciones posteriores que puedas querer hacer en el futuro. También es muy recomendable en la depuración tener comentado el código. Y se me olvidaba, también en lugar de popups/flash puedes copiar al clipboard, cuando el contenido es muy extenso o escribir a un archivo cuando sea todavía más extenso, con sonidos, tts, led, etc... |
| Los siguientes 2 usuarios han agradecido a danko9696 su comentario: | ||
|
#10
|
||||
|
||||
|
A8: Establecer variable [ Nombre:%hhh A:0%hhh Calcular:Apagado Añadir:Apagado ] Si (if) [ %hhh < 10 ] y de esta forma puedes suprimir la acción A9, que deja de ser necesaria. Más simple y más eficiente. Aplica la misma estrategia para las acciones 10 (minutos) y 12 (segundos), y de ese modo puedes suprimir las acciones 11 y 13. Igualmente, creo que Danko te está dando consejos excelentes. Muchos de nosotros pensamos que está bien ayudar a un compañero para resolver un problema puntual, pero también es válido dar a otro las indicaciones para que aprenda a resolver muchos problemas por sí mismo. Darte un pez está bien pero enseñarte a pescar es aún mejor. Y también parece que te estás tomando a mal las sugerencias de Danko, sin motivo. Es mi opinión.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
| Los siguientes 4 usuarios han agradecido a Caravantes su comentario: | ||
|
#11
|
||||
|
||||
|
No es que sea mi metodología. Si el error no resulta obvio fijándose en él no queda otra que ir ejecutando paso a paso y/o meter alertas. Resulta muy fácil cometer errores y si una tarea muy lineal como esta no eres capaz de depurarla cuando no sale bien a la primera imagina qué ocurrirá cuanto te pongas con una tarea que tenga varios bucles uno dentro de otro, arrays y llamadas a otras tareas, que puede que por el tiempo que lleve desanime a otros a echarte un cable.
Tienes que dar por hecho que la primera vez que ejecutes una tarea muy larga y complicada muy posiblemente no va a funcionar correctamente, debes estar preparado para ello. Incluso mientras creas la tarea puedes ir pensando qué alertas te pueden resultar útiles para depurar después el código o incluso crearlas de antemano y si luego resulta que no hacen falta (porque funciona a la primera), dejarlas (desactivadas) para facilitar posibles modificaciones posteriores que puedas querer hacer en el futuro. También es muy recomendable en la depuración tener comentado el código. Y se me olvidaba, también en lugar de popups/flash puedes copiar al clipboard, cuando el contenido es muy extenso o escribir a un archivo cuando sea todavía más extenso, con sonidos, tts, led, etc... ![]() Gracias por las recomendaciones de introducir avisos dentro de una tarea. Ahora he incluido esa forma de trabajar en mis proyectos y la verdad me facilita bastante las cosas, ya que ahora soy capaz de visualizar un poco mejor las posibles causas de mis errores al crear una tarea, aunque haya veces que tenga que recurrir a vuestra experiencia. |
|
#12
|
||||
|
||||
|
Puedes simplificar de esta forma:
A8: Establecer variable [ Nombre:%hhh A:0%hhh Calcular:Apagado Añadir:Apagado ] Si (if) [ %hhh < 10 ] y de esta forma puedes suprimir la acción A9, que deja de ser necesaria. Más simple y más eficiente. Aplica la misma estrategia para las acciones 10 (minutos) y 12 (segundos), y de ese modo puedes suprimir las acciones 11 y 13. ![]() Dicha tarea la uso para volcar (y escribir) la hora en un archivo TXT, pero como quería que Tasker me escribiese la hora correctamente por eso puse las demás acciones. Por defecto he visto que me lo pone como 0:01:00, pero yo prefiero que se vea: 00:01:00, por eso añadí esas tres tareas extras de establecer la variable a '00' cuando éstas coincidan con lo dicho. No exageres. Te hubiera bastado con hacer un par de intentos con el buscador del foro. Te diré algo: Leromaro no se sabe las URLs de memoria. Él las ha puesto después de haber usado el buscador del foro. Y no te las ha dado como reproche ni nada parecido, solo te ha aportado pistas para que puedas tener mejor información sobre el tema. No hay ningún motivo para que le respondas como si te hubiera dicho algo negativo.
Igualmente, creo que Danko te está dando consejos excelentes. Muchos de nosotros pensamos que está bien ayudar a un compañero para resolver un problema puntual, pero también es válido dar a otro las indicaciones para que aprenda a resolver muchos problemas por sí mismo. Darte un pez está bien pero enseñarte a pescar es aún mejor. Y también parece que te estás tomando a mal las sugerencias de Danko, sin motivo. Es mi opinión. ![]() Perdón si mi comentario tuvo un tono un tanto descarado, pero repito que no fue mi intención. Siempre agradezco vuestras réplicas y ayudas. Y bueno, como ya he logrado solucionar el problema marco el tema como solucionado. --> La tarea esta en el proyecto 'Grabador de Llamadas', encargada de volcar los registros al TXT de hora de la llamada, y duración de la misma. |
|
#13
|
||||
|
||||
|
Mmm gracias por la idea, pero mi cometido no era el que creo estas pensando.
Dicha tarea la uso para volcar (y escribir) la hora en un archivo TXT, pero como quería que Tasker me escribiese la hora correctamente por eso puse las demás acciones. Por defecto he visto que me lo pone como 0:01:00, pero yo prefiero que se vea: 00:01:00, por eso añadí esas tres tareas extras de establecer la variable a '00' cuando éstas coincidan con lo dicho. ![]() A8: Establecer variable [ Nombre:%hhh A:0%hhh Calcular:Apagado Añadir:Apagado ] Si (if) [ %hhh < 10 & %hhh > 0 ]Puedes simplificar de esta forma: A8: Establecer variable [ Nombre:%hhh A:0%hhh Calcular:Apagado Añadir:Apagado ] Si (if) [ %hhh < 10 ] y de esta forma puedes suprimir la acción A9, que deja de ser necesaria. Más simple y más eficiente. Aplica la misma estrategia para las acciones 10 (minutos) y 12 (segundos), y de ese modo puedes suprimir las acciones 11 y 13. ![]()
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
|
#14
|
||||
|
||||
|
Vaya, ahora capto lo que dices. No lo miré con toda la atención. Thanks!
|
|
#15
|
||||
|
||||
|
Con el uso de alertas sigue siendo ensayo-error, solo que ahora tienes una idea de por donde está el error para poder hacer un cambio que tenga una buena oportunidad de dar resultado. Si no, ¿que vas a hacer, cambios al azar hasta que funcione?
|
![]() |
Estás aquí
|
||||||
|
||||||