Tasker Para hablar de todo lo relacionado con la aplicación tasker

Respuesta
 
Herramientas
  #21  
Viejo 04/07/18, 14:01:48
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

Bueno, al probarla me funciona la primera versión, con el argumento 'torch'. No la que contiene 'flash_mode_torch'. Por lo que yo me decantaría por la primera.
Lo que no estoy seguro es la API, es decir, desconozco si habrá alguna diferencia en API 19 (KK), en el modo de funcionamiento. Pero, desde ya que en Nougat (API 25 = yo) funciona.

Nota: He probado esas acciones, transladadas a código Java en Android Studio, y en éste en cambio el parámetro que SÍ funciona es 'FLASH_MODE_TORCH' (mayúscula), pero 'TORCH/torch' NO. Por lo que me reafirma lo que un usuario en el foro de Tasker me explicó referente al uso de servicios (no es el caso, pero sí el formato en el que se llaman a los posibles parámetros extras) en Tasker, a diferencia de hacerlo en código nativo.

-> vibrator_service is the name of the constant. However, Tasker's Java functions require the value of the constant (vibrator) = + info en Android doc sobre ello -> Go!

Última edición por SmartPhoneLover Día 04/07/18 a las 14:10:42.
Responder Con Cita
Los siguientes 2 usuarios han agradecido a SmartPhoneLover su comentario:


  #22  
Viejo 04/07/18, 14:06:01
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,050
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
Aclarado. Muchas gracias campeón.

EDITO

Ahora que me doy cuenta. Yo tengo Oreo (v8.0.0). En lo que tenga un rato lo pruebo y te cuento.
__________________
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)

Última edición por WillyWeb Día 04/07/18 a las 14:09:02.
Responder Con Cita
  #23  
Viejo 04/07/18, 14:18:47
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

Por si a 'GraphicAdventure' le sigue sin funcionar ninguna de las tareas anteriores, ya encontré la app, con integración en Tasker, que solía usar tiempo atrás: TeslaLED Flight

Nota: si a alguien le sirve como referencia, de aquí obtuve los datos de las últimas acciones.

Última edición por SmartPhoneLover Día 04/07/18 a las 14:24:10.
Responder Con Cita
Los siguientes 2 usuarios han agradecido a SmartPhoneLover su comentario:
  #24  
Viejo 04/07/18, 21:42:26
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,050
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por SmartPhoneLover Ver Mensaje
Nota: He probado esas acciones, transladadas a código Java en Android Studio, y en éste en cambio el parámetro que SÍ funciona es 'FLASH_MODE_TORCH' (mayúscula), pero 'TORCH/torch' NO ...
Claro. Es que FLASH_MODE_TORCH = Constant Value: "torch"

https://developer.android.com/refere...ASH_MODE_TORCH

Seguro que si en Android Studio pasas "torch" (como cadena de texto) en vez de la constante predefinida también funciona.
__________________
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)
Responder Con Cita
  #25  
Viejo 05/07/18, 00:46:10
Array

[xs_avatar]
Caravantes Caravantes no está en línea
Usuario muy activo
· Votos compra/venta: (1)
 
Fecha de registro: feb 2011
Mensajes: 2,200
Modelo de smartphone: Samsung Galaxy S9
Tu operador: Lowi
Hola.
Me ha parecido un reto estupendo hacer esa tarea que emite un texto en morse. Más abajo va el código, pero os sugiero que comencéis viendo el vídeo para que os hagáis una idea de cómo funciona:
https://www.dropbox.com/s/bp7sx4yie0...Morse.MP4?dl=0

He hecho una tare que puede funcionar como una tarea simple, en cuyo caso emite el mensaje "HOLA MUNDO" que repite una y otra vez indefinidamente. La emisión morse se hace mediante destellos del luz (flash) y simultáneamente con pitidos (bip bip). Además puede funcionar como una subtarea. En el primer parámetro (%par1) se pone la palabra o frase a emitir en morse. En el segundo parámetro (%par2) se pueden poner las letras L (luz) y/o S (sonido) para elegir el canal o canales de salida; también se puede añadir una letra R para repetir indefinidamente la transmisión del mensaje, o bien la letra R seguida de un número para indicar el número de repeticiones (R25); todos estos parámetros se separan por comas. Por defecto el valor de %par2 es "L,S,R"

Por cierto, sin root yo no he tenido ningún problema con la acción ANTORCHA (encender/apagar), funciona perfectamente (S.Galaxy S7 con Android 8.0.0)

La tarea tiene dos matrices principales. La primera se llama %alfabeto y contiene los 46 caracteres que se pueden traducir a morse, más un último elemento que servirá para señalizar el final de la transmisión (en morse, al terminar una transmisión se añade un código especial para indicar que ya se acabó, no habrá continuación). Los elementos de esta matriz son los siguientes:
A|B|C|D|E|F|G|H|I|J|K|L|M|N|Ñ|O|P|Q|R|S|T|U|V|W|X| Y|Z|0|1|2|3|4|5|6|7|8|9|.|,|?|"|/|-|’|:| |-FIN

Se ha usado una separación por barras porque la coma es un carácter o elemento a utilizar.

De forma paralela hay otra matriz homóloga con los signos morse. Se llama %alfamorse y contiene el mismo alfabeto, en morse, con los siguientes elementos:
*-|-***|-*-*|-**|*|**-*|--*|****|**|*---|-*-|*-**|--|*|--*--|---|*--*|--*-|*-*|***|-|**-|***-|*--|-**-|-*--|--**|-----|*----|**---|***--|****-|*****|-****|--***|---**|----*|*-*-*-|-*-*--|--**--|*-**-*|-**-*|-****-|---***|*----*|silencio|*-*-*
Veréis que he sustituido los puntos por asteriscos, que son más visibles.

El proceso empieza cogiendo del texto inicial (HOLA MUNDO), el primer carácter (H). Localiza la posición de ese carácter en la primera matriz (8) y luego usa la segunda matriz para coger el elemento de la misma posición (8), que es la traducción a morse (****) de ese carácter (H).

Una vez que se tiene el grupo de puntos y rayas que corresponden al carácter, la tarea hace un segundo bucle para procesar cada uno de esos signos. Y luego se pasa al siguiente carácter de la frase.

Al terminar de procesar cada carácter, un Flash muestra la parte del texto que ya se ha emitido, para orientación de quienes no sabemos morse. De esta forma tenemos cierta constancia de lo que se está emitiendo. Hubiera sido mejor hacer esto con una escena, pero no he querido complicarme.

Tras emitir el texto completo, se añade el código de "fin-de-transmisión", que es el último elemento de la matriz ( *-*-* ). Actualmente está un poco en desuso, pero en la telegrafía clásica tenía mucho sentido, y yo lo he mantenido.

Luego, la tarea comprueba si hay que repetir la emisión, en cuyo caso vuelve a empezar.

En telegrafía clásica también se transmitía un encabezamiento o prólogo previo al mensaje. Ese encabezamiento indicaba la estación de destino a la que se dirigía el mensaje y también la estación remitente que lo enviaba. Esto no es aplicable en nuestro caso.

En la matriz morse, podéis ver que en el elemento penúltimo he puesto la palabra "silencio", lo cual es una anomalía que explico enseguida (luego he visto que Willy había usado un truco similar en su tarea).

El morse no es binario sino ternario. Hay puntos, rayas y silencios. Entre cada dos palabras escritas hay un espacio, que en morse se traduce como un silencio de una duración determinada. Resultaba un poco confuso chequear en la primera matriz el carácter espacio (porque es invisible) y he preferido chequear en la segunda matriz esta palabra bien llamativa para que la tarea sepa que -al encontrar esa palabra- debe hacer una espera sin emitir nada.

Después de haber completado la tarea, al ver la de Willy me he dado cuenta de que la suya es mejor en un concepto de diseño: Willy procesa todo el texto traduciendolo y preparando el código de salida (puntos y rayas), y luego de que ya ha completado la traducción es cuando empieza a emitir. Eso hace que la emisión sea más ágil, porque no necesita ir traduciendo al mismo tiempo que emite como he hecho yo. Por contra, mi sistema tiene la ventaja de que va mostrando por pantalla el texto simultáneo a la emisión morse.

La tarea es típica mía, mastodóntica (65 acciones), de las cuales hay algunas prescindibles, pero las he puesto porque me ayudan a organizarlo todo. Hay tres bloques de acciones bien diferenciados:
A) Acciones iniciales preparatorias.
B) Bucle principal que procesa los caracteres de la frase, los traduce y emite en morse.
C) Coletilla para añadir el código "fin-de-transmisión" y para controlar si hay que repetir.

Cada uno de estos bloques está dentro de un grupo Si (If) - Fin Si (End if). No están ahí para chequear el cumplimiento de una condición, no. Solo los he puesto porque en la parte derecha de la acción Si (If) hay un "pico" que permite replegar/ocultar todo el contenido de ese grupo de acciones, y si tocas de nuevo ahí vuelven a desplegarse/visualizarse todas las acciones que antes estaban ocultas. Creo que es una buena estrategia para tareas muy largas, como ésta, porque es una ventaja tener visible solo la parte en la que estás trabajando, y oculto el resto.

Seguramente Willy podría rehacer la tarea con la mitad de las acciones. Y supongo que también se podría mejorar mucho añadiendo expresiones regulares o javascript. O también exportándola como aplicación.

En la tarea he aprovechado muchas etiquetas para poner comentarios sobre las acciones. No os despistéis con eso, son líneas que comienzan con "<" y preceden a la acción a la que está asociado ese texto. Las acciones reales siempre tienen al principio de línea la letra A(acción) y un número.

Más detalles: el alfabeto morse no contiene todos los caracteres que usamos normalmente. Para empezar, no distingue entre mayúsculas y minúsculas. Carece de acentos, diéresis y otras zarandajas. Sí tiene los 10 dígitos y unos cuantos signos de puntuación, los más básicos. Recientemente se ha añadido la letra eñe, pero creo que su uso es todavía muy escaso incluso en entornos hispanos, y sigue habiendo quien no la considera como "letra oficial". La tarea incluye acciones para detectar los caracteres que no se pueden traducir a morse. El texto de entrada puede estar en mayúsculas o minúsculas, es indistinto.

En la wikipedia y otras páginas podéis informaros sobre lo que duran los puntos, las rayas, las pausas entre letras, y otras cuestiones técnicas o históricas. También hay páginas web en las que escribes un texto y te lo "traducen" a puntos y rayas. En algunas como la siguiente también puedes "emitir" eso mediante luces y/o sonidos.
https://morsecode.scphillips.com/translator.html
Ahí puedes poner tu frase favorita y descargarte el archivo de sonido o bien grabar un vídeo para enviárselo a tu cuñado. También puedes grabar un SOS para luego emitirlo en bucle con el reproductor multimedia.

Comparado con esa página, mi tarea es lenta y torpe, como si estuviera emitiendo un telegrafista principiante. Espero que funcione suficientemente bien para que pueda ser comprendido por un telegrafista. Hay páginas que traducen texto a morse e incluso hay alguna que traduce morse (puntos y rayas) a texto, pero no he encontrado ninguna que "escuche" morse, ni nada parecido. Tampoco conozco a ningún telegrafista que pueda escuchar y diga si se entiende algo.

Ha sido divertido como reto o ejercicio de verano, eso es todo. Si alguien quiere más explicaciones, o el fichero XML con la tarea exportada, que lo diga. Si alguien quiere mejorarla o adaptarla, me parecerá genial. Saludos.

MiscMorse (203)
<Esta tarea convierte un texto en código morse y lo emite por el flash de la cámara y/o mediante sonidos (bip). Primera parte: acciones preparatorias.>
A1: Si (if) [ 1 ~ 1 ]
<El primer parametro es el texto a procesar; si no se indica nada, se usar el texto "HOLA MUNDO".>
A2: Establecer variable [ Nombre:%par1 A:Hola Mundo Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %par1 No ajust. ]
A3: Convertir Variable [ Nombre:%par1 Función:A Mayúsculas Almacenar Resultado en: ]
<El segundo parametro define el modo de funcionamiento según algunos caracteres clave, separados por comas: L(luz);S(sonido); R35(repetir 35 veces el mensaje); R0(repetir indefinidamente); por omisin se usará "L, S,R0".>
A4: Establecer variable [ Nombre:%par2 A:L,S,R Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 No ajust. ]
A5: Establecer variable [ Nombre:%par2 A:L,S,%par2 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %par2 !~ *L* & %par2 !~ *S* ]
<Esta variable contiene la duración por defecto (en milisegundos) de un punto morse.>
A6: Establecer variable [ Nombre:%mspunto A:100 Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
<Las siguientes acciones averiguan el número de repeticiones del mensaje morse a emitir>
A7: Establece Array [ Matriz de Variables (array):%pardos Values:%par2 Separador:, ]
<indicativo de repeticiones?>
A8: Si (if) [ %pardos(#?R*) > 0 ]
<R seguido de algo?>
A9: Si (if) [ %pardos(#?R) = 0 ]
A10: Establecer variable [ Nombre:%repeticiones A:%pardos(#?R*) Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A11: Establecer variable [ Nombre:%repeticiones A:%pardos(%repeticiones) Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A12: Buscar y Reemplazar Contenido de Variable [ Variable:%repeticiones Buscar:R Ignorar Caso:Apagado Multilínea:Apagado Una sola coincidencia:Apagado Almacenar Coincidencias En: Reemplazar Coincidencias:Encendido Reemplazar Con: ]
A13: Establecer variable [ Nombre:%repeticiones A:%repeticiones Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
A14: Fin si (End if)
A15: Fin si (End if)
<A|B|C|D|E|F|G|H|I|J|K|L|M|N|Ñ|O|P|Q|R|S|T|U|V|W|X |Y|Z|0|1|2|3|4|5|6|7|8|9|.|,|?|"|/|-|’|:| |-FIN>
A16: Establece Array [ Matriz de Variables (array):%alfabeto Values:A|B|C|D|E|F|G|H|I|J|K|L|M|N|Ñ|O|P|Q|R|S|T|U |V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|.|,|?|"|/|-|’|:| |-FIN Separador:| ]
<*-|-***|-*-*|-**|*|**-*|--*|****|**|*---|-*-|*-**|--|*|--*--|---|*--*|--*-|*-*|***|-|**-|***-|*... etc>
A17: Establece Array [ Matriz de Variables (array):%alfamorse Values:*-|-***|-*-*|-**|*|**-*|--*|****|**|*---|-*-|*-**|--|*|--*--|---|*--*|--*-|*-*|***|-|**-|***-|*--|-**-|-*--|--**|-----|*----|**---|***--|****-|*****|-****|--***|---**|----*|*-*-*-|-*-*--|--**--|*-**-*|-**-*|-****-|---***|*----*|silencio|*-*-* Separador:| ]
A18: Probar Variable [ Tipo:Longitud Datos:%par1 Almacenar Resultado en:%longtexto ]
<Comienza a procesar el mensaje>
A19: Establecer variable [ Nombre:%numcaracter A:1 Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
A20: Establecer variable [ Nombre:%procesados A: Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A21: Establecer variable [ Nombre:%procesados A:%repeticiones - Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %repeticiones > 0 ]
A22: Fin si (End if)


<Segunda parte y principal: el bucle que procesa cada uno de los caracteres de la frase>
A23: Si (if) [ 1 ~ 1 ]
<Bucle caracteres>
A24: Sección de Variable [ Nombre:%par1 Desde:%numcaracter Longitud:1 Encajar:Apagado Almacenar Resultado en:%caracter ]
<Salto fin de mensaje>
A25: Establecer variable [ Nombre:%posarray A:%alfabeto(#?%caracter) Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A26: Establecer variable [ Nombre:%caracter A:# Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %posarray = 0 ]
A27: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:Fin del grupo morse y del caracter ] Si (if) [ %posarray = 0 ]
A28: Establecer variable [ Nombre:%morsegrupo A:%alfamorse(%posarray) Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
<Espacio entre palabras implica una pausa en la secuencia morse>
A29: Si (if) [ %morsegrupo ~ silencio ]
A30: Esperar [ MS:%mspunto*4 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A31: Else
A32: Probar Variable [ Tipo:Longitud Datos:%morsegrupo Almacenar Resultado en:%signosgrupo ]
A33: Establecer variable [ Nombre:%numsigno A:1 Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
<Bucle signos morse>
A34: Sección de Variable [ Nombre:%morsegrupo Desde:%numsigno Longitud:1 Encajar:Apagado Almacenar Resultado en:%signo ]
A35: Establecer variable [ Nombre:%duracionsigno A:0 Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
A36: Establecer variable [ Nombre:%duracionsigno A:%mspunto Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ %signo ~ * ]
A37: Establecer variable [ Nombre:%duracionsigno A:4*%mspunto Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ] Si (if) [ %signo ~ - ]
A38: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:Fin del grupo morse y del caracter ] Si (if) [ %duracionsigno = 0 ]
A39: Antorcha [ Establecer:Encendido ] Si (if) [ %pardos(#?L) > 0 ]
A40: Si (if) [ %pardos(#?S) > 0 ]
A41: Bip [ Frecuencia:8000 Duración:%duracionsigno Amplitud:50 Stream:3 ]
A42: Else
A43: Esperar [ MS:%duracionsigno Segundos:0 Minutos:0 Horas:0 Días:0 ]
A44: Fin si (End if)
A45: Antorcha [ Establecer:Apagado ] Si (if) [ %pardos(#?L) > 0 ]
A46: Esperar [ MS:%mspunto/2 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A47: Sumar a variable [ Nombre:%numsigno Valor:1 Módulo (wrap around):0 ]
A48: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:Bucle signos morse ] Si (if) [ %numsigno < %signosgrupo | %numsigno = %signosgrupo ]
A49: Esperar [ MS:%mspunto*2 Segundos:0 Minutos:0 Horas:0 Días:0 ]
A50: Fin si (End if)
<Fin del grupo morse y del caracter>
A51: Establecer variable [ Nombre:%procesados A:%procesados%caracter Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A52: Flash [ Texto:%procesados Largo:Apagado ]
A53: Sumar a variable [ Nombre:%numcaracter Valor:1 Módulo (wrap around):0 ]
A54: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:Bucle caracteres ] Si (if) [ %numcaracter < %longtexto | %numcaracter = %longtexto ]
A55: Fin si (End if)


<Tercera y última parte. Acciones finales tras el bucle principal.>
A56: Si (if) [ 1 ~ 1 ]
<Añadir la señal de "Fin de mensaje">
A57: Si (if) [ %numcaracter = %longtexto+1 ]
A58: Establecer variable [ Nombre:%caracter A:-FIN Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A59: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:Salto fin de mensaje ]
A60: Fin si (End if)
A61: Esperar [ MS:%mspunto*7 Segundos:0 Minutos:0 Horas:0 Días:0 ]
<Mirar a ver si hay que repetir el mensaje>
A62: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:Comienza a procesar el mensaje ] Si (if) [ %pardos(#?R) > 0 ]
A63: Restar de variable [ Nombre:%repeticiones Valor:1 Módulo (wrap around):0 ]
A64: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:Comienza a procesar el mensaje ] Si (if) [ %repeticiones > 0 ]
A65: Fin si (End if)
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker

Última edición por Caravantes Día 05/07/18 a las 04:09:39.
Responder Con Cita
Los siguientes 3 usuarios han agradecido a Caravantes su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]
  #26  
Viejo 05/07/18, 08:12:04
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,050
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
Decir que te lo has currado es quedarse muy corto.

Muy interesante el tema de los parámetros de la subtarea para ver/escuchar/repetir el mensaje. Gran idea que me apunto.

Tengo el morse muy oxidado (hace más de 20 años que no lo uso) pero yo diría que lo que sale de la tarea es razonablemente bueno. Si quieres una opinión no humana, en esa misma web que has puesto tienes un servicio de "escucha/traducción"...

https://morsecode.scphillips.com/lab...oder-adaptive

O puedes comparar, a oreja, con lo que hace la acción "Morse" de Tasker.
__________________
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)
Responder Con Cita
  #27  
Viejo 05/07/18, 11:39:56
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

 Cita: Originalmente Escrito por Caravantes Ver Mensaje
Hola.
Me ha parecido un reto estupendo hacer esa tarea que emite un texto en morse. Más abajo va el código, pero os sugiero que comencéis viendo el vídeo para que os hagáis una idea de cómo funciona:
https://www.dropbox.com/s/bp7sx4yie0...Morse.MP4?dl=0

(...)
Te me has adelantado Carvantes IMPRESIONANTE CURRO QUE TE HAS DADO COMPAÑERO!!!
Mira por donde, yo también he dividido mi tarea en 3 partes, o fases, y en general seguimos una metodología algo parecida, aunque cada uno tira por caminos distintos. Cuando la tenga lista os la paso!

Última edición por SmartPhoneLover Día 05/07/18 a las 11:51:51.
Responder Con Cita
  #28  
Viejo 05/07/18, 11:41:39
Array

[xs_avatar]
GraphicAdventure GraphicAdventure no está en línea
Miembro del foro
 
Fecha de registro: oct 2013
Localización: España
Mensajes: 277
Modelo de smartphone: S3 Mini I8190N
Tu operador: Movistar
 Cita: Originalmente Escrito por SmartPhoneLover Ver Mensaje
Bueno, al probarla me funciona la primera versión, con el argumento 'torch'.
Me funciona con la versión 1.
Responder Con Cita
  #29  
Viejo 05/07/18, 11:50:08
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

 Cita: Originalmente Escrito por GraphicAdventure Ver Mensaje
Me funciona con la versión 1.
Responder Con Cita
  #30  
Viejo 06/07/18, 01:22:29
Array

[xs_avatar]
Caravantes Caravantes no está en línea
Usuario muy activo
· Votos compra/venta: (1)
 
Fecha de registro: feb 2011
Mensajes: 2,200
Modelo de smartphone: Samsung Galaxy S9
Tu operador: Lowi
 Cita: Originalmente Escrito por WillyWeb Ver Mensaje
Si quieres una opinión no humana, en esa misma web que has puesto tienes un servicio de "escucha/traducción"...
https://morsecode.scphillips.com/lab...oder-adaptive
Excelente herramienta (yo había buscado algo así, pero no lo supe encontrar). Ahí he podido hacer muchas comprobaciones y ajustes finos para mejorar el ritmo de salida de las señales. Pero hay problemas que no puedo arreglar. Por ejemplo, he puesto la tarea emitiendo cincos sucesivos separados por espacios (5 5 5 5...). He elegido el 5 porque en morse son cinco puntos y eso genera un patrón fácil de controlar: ***** ***** ***** *****, etc. La web tiene una zona inferior donde muestra en verde el gráfico de sonido que va captando y en negro su traducción a señales (puntos/rayas). Ejemplo
MorseCinco.jpg
Podéis ver que la anchura de los puntos es bastante uniforme (bip de 100 milisegundos), pero los tiempos de pausa varían demasiado. El robot escuchador identifica el grupo de la izquierda como una secuencia de cinco puntos, que equivale a un número 5 (correcto), pero en el segundo grupo hay mayores anomalías. Quizá Android se entretuvo comprobando el wifi o recibiendo una señal de la antena de telefonía o cualquier otra cosa, el caso es que la tarea trataba de emitir otros cinco puntos seguidos, pero el robot escuchador ha interpretado eso como dos grupos separados (** ***) y por lo tanto lo ha traducido en las letras IS. En las pruebas que he hecho, errores de este tipo aparecen hasta en una de cada cinco letras, lo cual me parece inaceptable. Pero no todos los problemas están de mi lado. Ese robot escuchador es muy rígido; a veces incluso malinterpreta una pausa levemente más larga de lo debido, aunque sea por muy poca diferencia (bastante menos que en el gráfico mostrado); estoy seguro de que un telegrafista humano sería más tolerante con esas pequeñas desviaciones.

He intentado hacer una prueba en condiciones "optimas": modo avión y smartphone reiniciado 1 minuto antes. El resultado ha sido bastante mejor: el robot esuchador solo ha fallado en una letra de la última palabra
ABCD EFGH IJKL MNOP QRST UVW XYZ 12345 67890 EN UN LUGAR DE LA MANCHA DE CUYO NOMBRE NO QUIERO ACORDALME
R=*-*
L=*-**


Conclusión: Creo que Tasker no es la herramienta adecuada para hacer ésto seriamente, al menos no como tarea normal. Quizá funcione mejor compliando la tarea (exportarla como aplicación). Pero quien quiera directamente generar código morse desde el smartphone tiene otras opciones: hay unas cuantas apps que "traducen" a morse el texto que escribas, emitiendo por altavoces y/o linterna, y probablemente funcionen mejor. También, ya lo dije, hay páginas web como la siguiente que traducen el texto que quieras y puedes escucharlo y/o guardar el fichero de sonido para reproducirlo cuando quieras.
https://morsecode.scphillips.com/translator.html
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Responder Con Cita
Gracias de parte de:
  #31  
Viejo 06/07/18, 08:24:36
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,050
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
Parece que esas "orejas automáticas" son muy finas.

Seguramente conseguirás algo más de estabilidad en los tiempos entre signos si preparas la secuencia antes de comenzar la transmisión en vez de ir traduciendo al vuelo.
__________________
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)
Responder Con Cita
  #32  
Viejo 06/07/18, 15:40:08
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

Chicos, mirando entre las acciones de Decir, me he percatado que había una de Morse (audio). Me he enterado recién ahora que Tasker tenía esta acción, o ya la incluía de antes?
Responder Con Cita
  #33  
Viejo 06/07/18, 15:58:37
Array

[xs_avatar]
GraphicAdventure GraphicAdventure no está en línea
Miembro del foro
 
Fecha de registro: oct 2013
Localización: España
Mensajes: 277
Modelo de smartphone: S3 Mini I8190N
Tu operador: Movistar
Existe desde la versión 4.3.
Sabía pero ni me acordé.
Responder Con Cita
  #34  
Viejo 06/07/18, 15:58:56
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,050
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
Está, al menos, desde hace tres años.
__________________
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)
Responder Con Cita
  #35  
Viejo 06/07/18, 16:46:09
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

XD, vaya.
Bueno, pues ya tenemos algo nativo con lo que trabajar en cuanto al sonido, por lo menos.

Fff, ni me había fijado en esa acción. Nunca.
Responder Con Cita
  #36  
Viejo 06/07/18, 20:46:45
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,050
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por SmartPhoneLover Ver Mensaje
Fff, ni me había fijado en esa acción. Nunca.
Si te vale de consuelo, eso me ha pasado a mí con algunos contextos.
__________________
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)
Responder Con Cita
  #37  
Viejo 07/07/18, 17:59:40
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

Aquí os dejo mis tareas de código morse ;)

-PERFILES-
Código:
Profile: MC - Notificación
    Event: Notification Click [ Owner Application:Tasker Title:Morse Converter ]
Enter: MC - Detener
    A1: Stop [ With Error:On Task:MC - Sonido ] 
    A2: Java Function [ Return:(Vibrator) temp Class Or Object:CONTEXT Function:getSystemService
{Object} (String) Param:vibrator Param: Param: Param: Param: Param: Param: ] 
    A3: Java Function [ Return: Class Or Object:temp Function:cancel
{} () Param: Param: Param: Param: Param: Param: Param: Continue Task After Error:On ] 
    A4: Stop [ With Error:On Task:MC - Vibrador ] 
    A5: Stop [ With Error:On Task:MC - Luz Flash ] 
    A6: Torch [ Set:Off ] 
    A7: Notify Cancel [ Title:Morse Converter Warn Not Exist:Off ] 
    A8: Profile Status [ Name:MC - Notificación Set:Off ]
-TAREAS-
Código:
MC - Iniciar
    <• Escribir Contenido>
    A1: Variable Set [ Name:%temp1 To:sos sos Tasker Recurse Variables:Off Do Maths:Off Append:Off ] 
    <• Tipo Contenido>
    A2: Variable Set [ Name:%temp2 To:A/N/P Recurse Variables:Off Do Maths:Off Append:Off ] 
    A3: Perform Task [ Name:MC - Vibrador Priority:%priority Parameter 1 (%par1):%temp1 Parameter 2 (%par2):%temp2 Return Value Variable: Stop:Off ] 

MC - Detener
    A1: Stop [ With Error:On Task:MC - Sonido ] 
    A2: Java Function [ Return:(Vibrator) temp Class Or Object:CONTEXT Function:getSystemService
{Object} (String) Param:vibrator Param: Param: Param: Param: Param: Param: ] 
    A3: Java Function [ Return: Class Or Object:temp Function:cancel
{} () Param: Param: Param: Param: Param: Param: Param: Continue Task After Error:On ] 
    A4: Stop [ With Error:On Task:MC - Vibrador ] 
    A5: Stop [ With Error:On Task:MC - Luz Flash ] 
    A6: Torch [ Set:Off ] 
    A7: Notify Cancel [ Title:Morse Converter Warn Not Exist:Off ] 
    A8: Profile Status [ Name:MC - Notificación Set:Off ] 

MC - Sonido
    A1: Notify [ Title:Morse Converter Text:Procesando... Icon:mw_editor_linear_scale Number:0 Permanent:On Priority:5 ] 
    <->  FASE 1>
    A2: Anchor 
    <Abecedario>
    A3: Variable Set [ Name:%temp1 To:a|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *A* ]
    A4: Variable Set [ Name:%temp2 To:.-|-...|-.-.|-..|.|..-.|--.|....|..|.---|-.-|.-..|--|-.|--.--|---|.--.|--.-|.-.|...|-|..-|...-|.--|-..-|-.--|--..| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *A* ]
    <Números>
    A5: Variable Set [ Name:%temp1 To:1|2|3|4|5|6|7|8|9|0| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *N* ]
    A6: Variable Set [ Name:%temp2 To:.----|..---|...--|....-|.....|-....|--...|---..|----.|-----| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *N* ]
    <Puntuación>
    A7: Variable Set [ Name:%temp1 To:.|,|;|:|?|!|-|_|/|'|"|(|)|@|&|=|+|$|^| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *P* ]
    A8: Variable Set [ Name:%temp2 To:.-.-.-|--..--|-.-.-.|---...|..--..|-.-.--|-....-|..--.-|-..-.|.----.|.-..-.|-.--.|-.--.-|.--.-.|.-...|-...-|.-.-.|...-..-|^| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *P* ]
    A9: Array Set [ Variable Array:%temp1 Values:%temp1 Splitter:| ] 
    A10: Array Set [ Variable Array:%temp2 Values:%temp2 Splitter:| ] 
    <-> FASE 2>
    A11: Anchor 
    A12: Variable Convert [ Name:%par1 Function:To Lower Case Store Result In:%par1 ] 
    A13: Test Variable [ Type:Length Data:%par1 Store Result In:%tempa ] 
    A14: Variable Set [ Name:%tempb To:  Recurse Variables:Off Do Maths:Off Append:Off ] 
    A15: Variable Search Replace [ Variable:%par1 Search:%tempb Ignore Case:Off Multi-Line:Off One Match Only:Off Store Matches In: Replace Matches:On Replace With:^ ] 
    A16: Variable Clear [ Name:%tempb Pattern Matching:Off Local Variables Only:Off ] 
    A17: Variable Set [ Name:%tempb To:(%tempb)+1 Recurse Variables:Off Do Maths:On Append:Off ] 
    A18: Variable Section [ Name:%par1 From:%tempb Length:1 Adapt To Fit:Off Store Result In:%tempc ] 
    A19: For [ Variable:%tempd Items:%temp1() ] 
    A20: Variable Set [ Name:%tempe To:(%tempe)+1 Recurse Variables:Off Do Maths:On Append:Off ] 
    A21: If [ %tempd ~ %tempc ]
    A22: Variable Set [ Name:%tempf To:%temp2(%tempe) Recurse Variables:Off Do Maths:Off Append:On ] 
    A23: Goto [ Type:Action Number Number:30 Label: ] 
    A24: End If 
    A25: End For 
    A26: If [ %tempe ~ %temp1(#) ]
    A27: Flash [ Text:Elemento '%tempc' no reconocido, posición (%tempb) Long:On ] 
    A28: Stop [ With Error:Off Task: ] 
    A29: End If 
    A30: Variable Clear [ Name:%tempe Pattern Matching:Off Local Variables Only:Off ] 
    A31: Goto [ Type:Action Number Number:17 Label: ] If [ %tempb !~ %tempa ]
    <-> FASE 3>
    A32: Anchor 
    A33: Test Variable [ Type:Length Data:%tempf Store Result In:%tempa ] 
    A34: Profile Status [ Name:MC - Notificación Set:On ] 
    A35: Notify [ Title:Morse Converter Text:Reproduciendo... (tocar para detener) Icon:mw_editor_linear_scale Number:0 Permanent:On Priority:5 ] 
    A36: For [ Variable:%tempb Items:1:%tempa ] 
    A37: Variable Section [ Name:%tempf From:%tempb Length:1 Adapt To Fit:Off Store Result In:%tempc ] 
    A38: Beep [ Frequency:6000 Duration:100 Amplitude:50 Stream:3 ] If [ %tempc ~ . ]
    A39: Beep [ Frequency:6000 Duration:300 Amplitude:50 Stream:3 ] If [ %tempc ~ - ]
    A40: Wait [ MS:100 Seconds:0 Minutes:0 Hours:0 Days:0 ] If [ %tempc ~ ./- ]
    A41: Wait [ MS:700 Seconds:0 Minutes:0 Hours:0 Days:0 ] If [ %tempc ~ ^ ]
    A42: End For 
    A43: Notify Cancel [ Title:Morse Converter Warn Not Exist:Off ] 
    A44: Profile Status [ Name:MC - Notificación Set:Off ] 

MC - Vibrador
    A1: Notify [ Title:Morse Converter Text:Procesando... Icon:mw_editor_linear_scale Number:0 Permanent:On Priority:5 ] 
    <->  FASE 1>
    A2: Anchor 
    <Abecedario>
    A3: Variable Set [ Name:%temp1 To:a|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *A* ]
    A4: Variable Set [ Name:%temp2 To:.-|-...|-.-.|-..|.|..-.|--.|....|..|.---|-.-|.-..|--|-.|--.--|---|.--.|--.-|.-.|...|-|..-|...-|.--|-..-|-.--|--..| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *A* ]
    <Números>
    A5: Variable Set [ Name:%temp1 To:1|2|3|4|5|6|7|8|9|0| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *N* ]
    A6: Variable Set [ Name:%temp2 To:.----|..---|...--|....-|.....|-....|--...|---..|----.|-----| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *N* ]
    <Puntuación>
    A7: Variable Set [ Name:%temp1 To:.|,|;|:|?|!|-|_|/|'|"|(|)|@|&|=|+|$|^| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *P* ]
    A8: Variable Set [ Name:%temp2 To:.-.-.-|--..--|-.-.-.|---...|..--..|-.-.--|-....-|..--.-|-..-.|.----.|.-..-.|-.--.|-.--.-|.--.-.|.-...|-...-|.-.-.|...-..-|^| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *P* ]
    A9: Array Set [ Variable Array:%temp1 Values:%temp1 Splitter:| ] 
    A10: Array Set [ Variable Array:%temp2 Values:%temp2 Splitter:| ] 
    <-> FASE 2>
    A11: Anchor 
    A12: Variable Convert [ Name:%par1 Function:To Lower Case Store Result In:%par1 ] 
    A13: Test Variable [ Type:Length Data:%par1 Store Result In:%tempa ] 
    A14: Variable Set [ Name:%tempb To:  Recurse Variables:Off Do Maths:Off Append:Off ] 
    A15: Variable Search Replace [ Variable:%par1 Search:%tempb Ignore Case:Off Multi-Line:Off One Match Only:Off Store Matches In: Replace Matches:On Replace With:^ ] 
    A16: Variable Clear [ Name:%tempb Pattern Matching:Off Local Variables Only:Off ] 
    A17: Variable Set [ Name:%tempb To:(%tempb)+1 Recurse Variables:Off Do Maths:On Append:Off ] 
    A18: Variable Section [ Name:%par1 From:%tempb Length:1 Adapt To Fit:Off Store Result In:%tempc ] 
    A19: For [ Variable:%tempd Items:%temp1() ] 
    A20: Variable Set [ Name:%tempe To:(%tempe)+1 Recurse Variables:Off Do Maths:On Append:Off ] 
    A21: If [ %tempd ~ %tempc ]
    A22: Variable Set [ Name:%tempf To:%temp2(%tempe) Recurse Variables:Off Do Maths:Off Append:On ] 
    A23: Goto [ Type:Action Number Number:30 Label: ] 
    A24: End If 
    A25: End For 
    A26: If [ %tempe ~ %temp1(#) ]
    A27: Flash [ Text:Elemento '%tempc' no reconocido, posición (%tempb) Long:On ] 
    A28: Stop [ With Error:Off Task: ] 
    A29: End If 
    A30: Variable Clear [ Name:%tempe Pattern Matching:Off Local Variables Only:Off ] 
    A31: Goto [ Type:Action Number Number:17 Label: ] If [ %tempb !~ %tempa ]
    <-> FASE 3>
    A32: Anchor 
    A33: Test Variable [ Type:Length Data:%tempf Store Result In:%tempa ] 
    A34: Variable Set [ Name:%tempd To:0, Recurse Variables:Off Do Maths:Off Append:Off ] 
    A35: For [ Variable:%tempb Items:1:%tempa ] 
    A36: Variable Section [ Name:%tempf From:%tempb Length:1 Adapt To Fit:Off Store Result In:%tempc ] 
    A37: Variable Set [ Name:%tempd To:100,100, Recurse Variables:Off Do Maths:Off Append:On ] If [ %tempc ~ . ]
    A38: Variable Set [ Name:%tempd To:300,100, Recurse Variables:Off Do Maths:Off Append:On ] If [ %tempc ~ - ]
    A39: Variable Set [ Name:%tempd To:0,700, Recurse Variables:Off Do Maths:Off Append:On ] If [ %tempc ~ ^ ]
    A40: End For 
    A41: Variable Clear [ Name:%tempc Pattern Matching:Off Local Variables Only:Off ] 
    A42: Array Set [ Variable Array:%tempd Values:%tempd Splitter:, ] 
    A43: For [ Variable:%tempb Items:1:%tempd(#) ] 
    A44: Variable Set [ Name:%tempc To:%tempd(%tempb) Recurse Variables:Off Do Maths:Off Append:On ] 
    A45: Variable Set [ Name:%tempc To:+ Recurse Variables:Off Do Maths:Off Append:On ] If [ %tempb !~ %tempd(#) ]
    A46: End For 
    A47: Variable Set [ Name:%tempc To:%tempc Recurse Variables:Off Do Maths:On Append:Off ] 
    A48: Profile Status [ Name:MC - Notificación Set:On ] 
    A49: Notify [ Title:Morse Converter Text:Reproduciendo... (tocar para detener) Icon:mw_editor_linear_scale Number:0 Permanent:On Priority:5 ] 
    A50: Java Function [ Return:(Vibrator) temp Class Or Object:CONTEXT Function:getSystemService
{Object} (String) Param:vibrator Param: Param: Param: Param: Param: Param: ] 
    A51: Java Function [ Return: Class Or Object:temp Function:vibrate
{} (long[], int) Param:%tempd Param:-1 Param: Param: Param: Param: Param: ] 
    A52: Wait [ MS:%tempc Seconds:0 Minutes:0 Hours:0 Days:0 ] 
    A53: Notify Cancel [ Title:Morse Converter Warn Not Exist:Off ] 
    A54: Profile Status [ Name:MC - Notificación Set:Off ] 

MC - Luz Flash
    A1: Notify [ Title:Morse Converter Text:Procesando... Icon:mw_editor_linear_scale Number:0 Permanent:On Priority:5 ] 
    <->  FASE 1>
    A2: Anchor 
    <Abecedario>
    A3: Variable Set [ Name:%temp1 To:a|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *A* ]
    A4: Variable Set [ Name:%temp2 To:.-|-...|-.-.|-..|.|..-.|--.|....|..|.---|-.-|.-..|--|-.|--.--|---|.--.|--.-|.-.|...|-|..-|...-|.--|-..-|-.--|--..| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *A* ]
    <Números>
    A5: Variable Set [ Name:%temp1 To:1|2|3|4|5|6|7|8|9|0| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *N* ]
    A6: Variable Set [ Name:%temp2 To:.----|..---|...--|....-|.....|-....|--...|---..|----.|-----| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *N* ]
    <Puntuación>
    A7: Variable Set [ Name:%temp1 To:.|,|;|:|?|!|-|_|/|'|"|(|)|@|&|=|+|$|^| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *P* ]
    A8: Variable Set [ Name:%temp2 To:.-.-.-|--..--|-.-.-.|---...|..--..|-.-.--|-....-|..--.-|-..-.|.----.|.-..-.|-.--.|-.--.-|.--.-.|.-...|-...-|.-.-.|...-..-|^| Recurse Variables:Off Do Maths:Off Append:On ] If [ %par2 ~ *P* ]
    A9: Array Set [ Variable Array:%temp1 Values:%temp1 Splitter:| ] 
    A10: Array Set [ Variable Array:%temp2 Values:%temp2 Splitter:| ] 
    <-> FASE 2>
    A11: Anchor 
    A12: Variable Convert [ Name:%par1 Function:To Lower Case Store Result In:%par1 ] 
    A13: Test Variable [ Type:Length Data:%par1 Store Result In:%tempa ] 
    A14: Variable Set [ Name:%tempb To:  Recurse Variables:Off Do Maths:Off Append:Off ] 
    A15: Variable Search Replace [ Variable:%par1 Search:%tempb Ignore Case:Off Multi-Line:Off One Match Only:Off Store Matches In: Replace Matches:On Replace With:^ ] 
    A16: Variable Clear [ Name:%tempb Pattern Matching:Off Local Variables Only:Off ] 
    A17: Variable Set [ Name:%tempb To:(%tempb)+1 Recurse Variables:Off Do Maths:On Append:Off ] 
    A18: Variable Section [ Name:%par1 From:%tempb Length:1 Adapt To Fit:Off Store Result In:%tempc ] 
    A19: For [ Variable:%tempd Items:%temp1() ] 
    A20: Variable Set [ Name:%tempe To:(%tempe)+1 Recurse Variables:Off Do Maths:On Append:Off ] 
    A21: If [ %tempd ~ %tempc ]
    A22: Variable Set [ Name:%tempf To:%temp2(%tempe) Recurse Variables:Off Do Maths:Off Append:On ] 
    A23: Goto [ Type:Action Number Number:30 Label: ] 
    A24: End If 
    A25: End For 
    A26: If [ %tempe ~ %temp1(#) ]
    A27: Flash [ Text:Elemento '%tempc' no reconocido, posición (%tempb) Long:On ] 
    A28: Stop [ With Error:Off Task: ] 
    A29: End If 
    A30: Variable Clear [ Name:%tempe Pattern Matching:Off Local Variables Only:Off ] 
    A31: Goto [ Type:Action Number Number:17 Label: ] If [ %tempb !~ %tempa ]
    <-> FASE 3>
    A32: Anchor 
    A33: Test Variable [ Type:Length Data:%tempf Store Result In:%tempa ] 
    A34: Variable Set [ Name:%tempd To:0, Recurse Variables:Off Do Maths:Off Append:Off ] 
    A35: Profile Status [ Name:MC - Notificación Set:On ] 
    A36: Notify [ Title:Morse Converter Text:Reproduciendo... (tocar para detener) Icon:mw_editor_linear_scale Number:0 Permanent:On Priority:5 ] 
    A37: For [ Variable:%tempb Items:1:%tempa ] 
    A38: Variable Section [ Name:%tempf From:%tempb Length:1 Adapt To Fit:Off Store Result In:%tempc ] 
    A39: Torch [ Set:On ] 
    A40: Wait [ MS:100 Seconds:0 Minutes:0 Hours:0 Days:0 ] If [ %tempc ~ . ]
    A41: Wait [ MS:300 Seconds:0 Minutes:0 Hours:0 Days:0 ] If [ %tempc ~ - ]
    A42: Torch [ Set:Off ] 
    A43: Wait [ MS:100 Seconds:0 Minutes:0 Hours:0 Days:0 ] If [ %tempc ~ ./- ]
    A44: Wait [ MS:700 Seconds:0 Minutes:0 Hours:0 Days:0 ] If [ %tempc ~ ^ ]
    A45: End For 
    A46: Notify Cancel [ Title:Morse Converter Warn Not Exist:Off ]
Os explico...
A ver, lo primero que veis es un perfil, pues ese perfil lo uso en una notificación que se genera recién en la 3ª fase de cada tarea, el cual estará a la escucha de un toque en dicha notificación. Ésta servirá para detener manualmente la reproducción del mensaje a morse cuando nosotros queramos, ejecutando su tarea asociada: 'MC - Detener'. Así de simple.

En cuanto a las tareas, ¿por qué tengo tantas? Pues...
Las tareas llamadas: 'MC - Sonido', 'MC - Vibrador' y 'MC - Luz Flash', hacen exactamente lo mismo, es decir, traducir cualquier cadena de texto, o números a código morse. Pero cada una la interpretará de un modo distinto, según queramos en cada caso. (con un poquito de trabajo extra se podría mezclar, pudiendo interpretar el código de salida con sonido y luz al mismo tiempo, por ejemplo)

Por otro lado, las tareas: 'MC - Iniciar' y 'MC - Detener', son las encargadas de pasar los datos necesarios a ser procesados y traducidos, y detener x tarea manualmente, respectivamente.
Responder Con Cita
Los siguientes 2 usuarios han agradecido a SmartPhoneLover su comentario:
  #38  
Viejo 07/07/18, 18:09:00
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

Más preguntas que os podais hacer...

- ¿Por qué has creado 3 acciones distintas para el alfabeto, números y signos de puntuación, si podrías haberlos puestos todos en una sola acción (o Array Set)?
Pues, puede que no se de el caso, pero si nuestro texto no incluye ningún signo de puntuación, o ningún número, pues la tarea tardaría menos en finalizar, ya que tendría menos elementos que buscar. Por lo tanto, se comportaría de manera más eficiente, al buscar solo aquellos elementos que sabemos que se encuentran en nuestro "input". (los valores son pasados por la variable %par2, desde 'MC - Iniciar'.

- ¿Por qué el signo '^' para sustituirlo por los espacios entre palabras, si en morse los espacios se indican con '|' o '/'?
Pues quize hacer la entrada de texto lo más simplicada posible, evitando incluir cualquier otro signo extra para hacerle saber a Tasker que ahí hay algo que debe tener en cuenta. De esta forma, tendremos que escribir las cadenas tal y como las escribiríamos de manera natural.

Última edición por SmartPhoneLover Día 07/07/18 a las 18:11:50.
Responder Con Cita
Gracias de parte de:
  #39  
Viejo 07/07/18, 18:33:45
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,050
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
Me has dejado ...

Usar la expresión "te lo has currado" no hace justicia al tremendo trabajo que te has dado.

Me pica la curiosidad ...

¿Cuánto tiempo te ha llevado todo eso?

¿Por qué unas veces haces la vibración con JF y otras con la acción de Tasker?

¿Por qué un perfil para detectar la pulsación en la notificación y no acciones directas en la misma?

¿Tanto se nota en el tiempo de proceso como para hacer lo de %par2=A/N/P y todo lo que conlleva?

Por favor, no interpretes mis preguntas como críticas. Simplemente has optado por planteamientos y/o soluciones en las que no había pensado y quiero entenderlas.
__________________
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)
Responder Con Cita


  #40  
Viejo 07/07/18, 19:15:56
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

 Cita: Originalmente Escrito por WillyWeb Ver Mensaje
Me has dejado ...

Usar la expresión "te lo has currado" no hace justicia al tremendo trabajo que te has dado.

Me pica la curiosidad ... .
No hay problema, te explico...

- ¿Cuánto tiempo te ha llevado todo eso?
En realidad lo finalizé el martes de esta misma semana, pero me estaba peleando con cómo poder agregarle también los comandos en la conversación. Bueno, yo los decidí llamar en las tareas así, pero son las 'señales de procedimiento' (Prosigns).
Al final decidí eliminarlas temporalemente ya que no encontraba la manera correcta, y sobretodo eficiente, de hacer que Tasker las detecte y las interprete. Más adelante veré como incluirlas, ya que me parece que son bastante útiles.

- ¿Por qué unas veces haces la vibración con JF y otras con la acción de Tasker?
Imagino que te referirás en otras ocaciones, no en las tareas que acabo de dejar arriba.
Bueno, en este caso decidí hacer uso de funciones porque entre los métodos ofrecidos (públicos), está el de vibrar en base a un patrón, cosa que Tasker no lo tiene. Y dejando de lado los plugins, me pareció más eficiente generar los tiempos de ésta manera, y reproducirlos todos de una, aunque la tarea, en específica ésta, se demore unos instantes más en finalizar el procesado del código.

- ¿Por qué un perfil para detectar la pulsación en la notificación y no acciones directas en la misma?
Ya había pensado en incluirle un butón para pulsar, y de éste modo ahorrarme el perfil; pero, aún teniendo el máximo de prioridad (5), a veces otras notificaciones de otras apps pasan a primer puesto, y ocultan el botón de acción. Por lo que debería de cerrar esas notificaciones para poder volver a ver el botón de Tasker. Además, me gustan las notificaciones limpias, sin botones. (manias mías)

- ¿Tanto se nota en el tiempo de proceso como para hacer lo de %par2=A/N/P y todo lo que conlleva?
Al procesar 2, 5 o 10 carácteres, no o casi no. Sobretodo si esos carácteres se encuentran al inicio de la array: a, b, c, d... y no r, s, t (..) z.
Pero si la cadena que le pasamos es una frase completa como por ejemplo, la pregunta que me acabas de hacer, con 96 caracteres, sí que se demoraría unos cuantos segundos en procesarla entera. Y más, si le indicamos que busque también números y signos.
Responder Con Cita
Gracias de parte de:
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Otro software para Android > Tasker



Hora actual: 07:27:44 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /