|
||
|
|
|
|||||||
| Tasker Para hablar de todo lo relacionado con la aplicación tasker |
![]() |
|
|
Herramientas |
|
#41
|
||||
|
||||
![]()
__________________
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) |
|
|
|
#42
|
||||
|
||||
|
- Tasker tiene dos acciones para controlar la vibración y una es con patrón
Madre mía, si es verdad! Otro despite a la lista XD - Tal vez la traducción requiera otra estrategia para mejorar el tiempo de ejecución Volveré a revisar las tareas anteriores que habeis pasado. Mmm, esto es un pique en toda regla
|
|
#43
|
||||
|
||||
|
Muchísimas gracias, está genial.
Smart, porfa, haznos un poquito de vídeo para que veamos cómo luce y cómo suena eso. Y también hazte un test de audición en https://morsecode.scphillips.com/lab...oder-adaptive y nos cuentas qué tal te ha ido. Gracias.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
|
#44
|
||||
|
||||
|
Muchísimas gracias, está genial.
Smart, porfa, haznos un poquito de vídeo para que veamos cómo luce y cómo suena eso. Y también hazte un test de audición en https://morsecode.scphillips.com/lab...oder-adaptive y nos cuentas qué tal te ha ido. Gracias. ![]() Os comunico que me puse a modificar el conjunto de tareas para realizar las siguientes modificaciones/mejoras: - Condensación de los tres modos de interpretación de mensaje, en una única tarea. (el rendimiento a la hora de reproducir el mensaje no se verá afectado, pero la tarea aumentará en nº de acciones considerablemente) - Permitir la traducción de Morse a Alfa. - Permitir la encriptación del mensaje de salida a 'Morse', teniendo una generación aleatoria cada vez que se le pase el mismo mensaje a Tasker. (por ahora me basaré en el sistema Cesar con una ligera modificación en su funcionamiento original, que aunque es un método de encriptación muy básico, será suficiente para empezar) Nota: evitaré por el momento añadir escenas, que si bien serían una gran ayuda a la hora de organizar todo, pero por ahora considero que es mejor centrarse en las tripas del proyecto. Cuando todo listo, haré el video y la prueba que comentas Caravantes ;) Última edición por SmartPhoneLover Día 10/07/18 a las 22:27:25. |
| Gracias de parte de: | ||
|
#45
|
||||
|
||||
|
Hola compañeros,
Comentaros que ya tengo todo listo para montar, y como adición, he sustituido las acciones de encriptación en método cesar por Cipher (AES), por lo que será más seguro, aunque requiera más tiempo de procesado y la cadena de texto generada posterior sea más larga. Pero, me ha surgido un problema en la tarea principal, específicamente en la siguiente sección de código: Código:
A1: Notify [ Title:Morse Converter Text:Procesando... Icon:mw_editor_linear_scale Number:0 Permanent:On Priority:5 ]
A2: Variable Split [ Name:%par2 Splitter:. Delete Base:Off ]
<Alfa > Morse>
A3: If [ %par21 ~ A-M ]
<-> FASE 1>
A4: Anchor
<Abecedario>
A5: Array Set [ Variable Array:%temp1a 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| Splitter:| ]
A6: Array Set [ Variable Array:%temp1b Values:.-|-...|-.-.|-..|.|..-.|--.|....|..|.---|-.-|.-..|--|-.|--.--|---|.--.|--.-|.-.|...|-|..-|...-|.--|-..-|-.--|--..| Splitter:| ]
<Números>
A7: Array Set [ Variable Array:%temp2a Values:1|2|3|4|5|6|7|8|9|0| Splitter:| ]
A8: Array Set [ Variable Array:%temp2b Values:.----|..---|...--|....-|.....|-....|--...|---..|----.|-----| Splitter:| ]
<Puntuación>
A9: Array Set [ Variable Array:%temp3a Values:.|,|;|:|?|!|-|_|/|'|"|(|)|@|&|=|+|$|^| Splitter:| ]
A10: Array Set [ Variable Array:%temp3b Values:.-.-.-|--..--|-.-.-.|---...|..--..|-.-.--|-....-|..--.-|-..-.|.----.|.-..-.|-.--.|-.--.-|.--.-.|.-...|-...-|.-.-.|...-..-|^| Splitter:| ]
<-> FASE 2>
A11: Anchor
A12: Variable Convert [ Name:%par1 Function:To Lower Case Store Result In:%par1 ]
A13: Variable Search Replace [ Variable:%par1 Search: Ignore Case:Off Multi-Line:Off One Match Only:Off Store Matches In: Replace Matches:On Replace With:^ ]
A14: Test Variable [ Type:Length Data:%par1 Store Result In:%tempa ]
<{bucle n1}>
A15: Variable Set [ Name:%tempb To:(%tempb)+1 Recurse Variables:Off Do Maths:On Append:Off ]
A16: Variable Section [ Name:%par1 From:%tempb Length:1 Adapt To Fit:Off Store Result In:%tempc ]
A17: For [ Variable:%tempd Items:%temp1a() ] If [ %tempc ~R [a-z] | %tempc ~ ñ ]
A18: Variable Set [ Name:%tempe To:(%tempe)+1 Recurse Variables:Off Do Maths:On Append:Off ]
A19: Variable Set [ Name:%tempf To:%temp1b(%tempe) Recurse Variables:Off Do Maths:Off Append:On ] If [ %tempd ~ %tempc ]
A20: Goto [ Type:Action Label Number:32 Label:{bucle n2} ] If [ %tempd ~ %tempc ]
A21: End For
A22: For [ Variable:%tempd Items:%temp2a() ] If [ %tempc ~R [0-9] ]
A23: Variable Set [ Name:%tempe To:(%tempe)+1 Recurse Variables:Off Do Maths:On Append:Off ]
A24: Variable Set [ Name:%tempf To:%temp2b(%tempe) Recurse Variables:Off Do Maths:Off Append:On ] If [ %tempd ~ %tempc ]
A25: Goto [ Type:Action Label Number:32 Label:{bucle n2} ] If [ %tempd ~ %tempc ]
A26: End For
A27: For [ Variable:%tempd Items:%temp3a() ] If [ %tempc ~ ./,/;/:/?/!/-/_/'/"/(/)/@/&/=/+/$/^ | %tempc ~ / ]
A28: Variable Set [ Name:%tempe To:(%tempe)+1 Recurse Variables:Off Do Maths:On Append:Off ]
A29: Variable Set [ Name:%tempf To:%temp3b(%tempe) Recurse Variables:Off Do Maths:Off Append:On ] If [ %tempd ~ %tempc ]
A30: Goto [ Type:Action Label Number:32 Label:{bucle n2} ] If [ %tempd ~ %tempc ]
A31: End For
A32: Flash [ Text:Elemento '%tempc' no reconocido, posición (%tempb). Long:On ]
A33: Goto [ Type:Action Label Number:1 Label:{fin} ]
<{bucle n2}>
A34: Variable Clear [ Name:%tempe Pattern Matching:Off Local Variables Only:Off ]
A35: Goto [ Type:Action Label Number:19 Label:{bucle n1} ] If [ %tempb !~ %tempa ]
A36: (...)
El problema lo tengo en la acción '27'. Bueno, al menos eso creo. Con ese condicional lo que quiero es que el bucle procese el elemento almacenado en la variable '%tempc', con los almacenados en la array '%temp3a()', que son todos los signos de puntuación que he añadido, excluyendo números y letras en las búsquedas. La cosa es que cuando, por ejemplo, al haberle pasado la cadena 'tasker /', me procesa correctamente los 7 elementos, pero siempre falla con el signo de la barra diagonal. Pero lo curioso es que con la antigua estructura que teneis unos cuantos mensajes antes que éste, sí me la detecta; aunque uso un método diferente para analizar. Quizás esté indicándole mal a Tasker ese signo, no lo sé. Nota: he probado también con: 'if %var coin. */*', 'if %var coin.Regex /', y Tasker detecta la barra como elemento individual. Por lo tanto, sabeis como podría solucionar ese pequeño inconveniente? Gracias! |
|
#46
|
||||
|
||||
|
Si cambias ... %tempc ~ / ... por %tempc ig / ... en A27 y te funcionará.
_EDITO_ Y pon nombres descriptivos a las variables. Si todas se llaman %tempxxx es complicado de narices seguir la pista a lo que pasa en la tarea.
__________________
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) |
|
#47
|
||||
|
||||
|
A no, ya está. Bueno, tu solución la tenía que agregar en la acción posterior también. Y con respecto a las variables, aunque parezca descabellada, me aclaro perfectamente XD. Veré a ver qué hago.
|
|
#48
|
||||
|
||||
|
Bueno compañer@s, ya esta ;)
-PERFILES- Código:
MC - Notificación
Event: Notification Click [ Owner Application:Tasker Title:Morse Translator
Código:
MC - Iniciar
<-> FASE 1>
A1: Anchor
<Mensaje>
A2: Variable Set [ Name:%temp1 To:sos Recurse Variables:Off Do Maths:Off Append:Off ]
<Traducción>
A3: Variable Set [ Name:%temp2 To:A-M Recurse Variables:Off Do Maths:Off Append:Off ]
<Encriptación>
A4: Variable Set [ Name:%temp3 To:0 Recurse Variables:Off Do Maths:Off Append:Off ]
<Interpretación>
A5: Variable Set [ Name:%temp4 To:V Recurse Variables:Off Do Maths:Off Append:Off ]
<Portapapeles>
A6: Variable Set [ Name:%temp5 To:1 Recurse Variables:Off Do Maths:Off Append:Off ]
<-> FASE 2>
A7: Anchor
A8: Perform Task [ Name:MC - Traductor Priority:%priority Parameter 1 (%par1):%temp1 Parameter 2 (%par2):%temp2.%temp3.%temp4.%temp5 Return Value Variable: Stop:Off ]
MC - Detener
A1: Stop [ With Error:On Task:MC - Traductor ]
A2: Shut Up
A3: Java Function [ Return:(Vibrator) temp Class Or Object:CONTEXT Function:getSystemService
{Object} (String) Param:vibrator Param: Param: Param: Param: Param: Param: ]
A4: Java Function [ Return: Class Or Object:temp Function:cancel
{} () Param:%tempd Param:-1 Param: Param: Param: Param: Param: Continue Task After Error:On ]
A5: Torch [ Set:Off ]
A6: Notify Cancel [ Title:Morse Translator Warn Not Exist:Off ]
A7: Profile Status [ Name:MC - Notificación Set:Off ]
MC - Traductor
A1: Profile Status [ Name:MC - Notificación Set:On ]
A2: Notify [ Title:Morse Translator Text:Procesando... Icon:mw_editor_linear_scale Number:0 Permanent:On Priority:5 ]
A3: Variable Split [ Name:%par2 Splitter:. Delete Base:Off ]
<Abecedario>
A4: Array Set [ Variable Array:%temp1a 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| Splitter:| ]
A5: Array Set [ Variable Array:%temp1b Values:.-|-...|-.-.|-..|.|..-.|--.|....|..|.---|-.-|.-..|--|-.|--.--|---|.--.|--.-|.-.|...|-|..-|...-|.--|-..-|-.--|--..| Splitter:| ]
<Números>
A6: Array Set [ Variable Array:%temp2a Values:1|2|3|4|5|6|7|8|9|0| Splitter:| ]
A7: Array Set [ Variable Array:%temp2b Values:.----|..---|...--|....-|.....|-....|--...|---..|----.|-----| Splitter:| ]
<Puntuación>
A8: Array Set [ Variable Array:%temp3a Values:.|,|;|:|?|!|-|_|/|'|"|(|)|@|&|=|+|$| | Splitter:| ]
A9: Array Set [ Variable Array:%temp3b Values:.-.-.-|--..--|-.-.-.|---...|..--..|-.-.--|-....-|..--.-|-..-.|.----.|.-..-.|-.--.|-.--.-|.--.-.|.-...|-...-|.-.-.|...-..-| | Splitter:| ]
<Abecedario + Números + Puntuación>
A10: Array Set [ Variable Array:%temp4a 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|1|2|3|4|5|6|7|8|9|0|.|,|;|:|?|!|-|_|/|'|"|(|)|@|&|=|+|$|^| Splitter:| ]
A11: Array Set [ Variable Array:%temp4b Values:.-|-...|-.-.|-..|.|..-.|--.|....|..|.---|-.-|.-..|--|-.|--.--|---|.--.|--.-|.-.|...|-|..-|...-|.--|-..-|-.--|--..|.----|..---|...--|....-|.....|-....|--...|---..|----.|-----|.-.-.-|--..--|-.-.-.|---...|..--..|-.-.--|-....-|..--.-|-..-.|.----.|.-..-.|-.--.|-.--.-|.--.-.|.-...|-...-|.-.-.|...-..-|^| Splitter:| ]
<<font color='#0D95FF'>ENCRIPTACIÓN (alfa > morse)</font>>
A12: If [ %par22 !~ 0 & %par21 ~ A-M ]
A13: Variable Split [ Name:%par22 Splitter:- Delete Base:Off ]
<<font color='#0D95FF'>ENCRIPTAR</font>>
A14: If [ %par221 ~ 1 ]
<<font color='#FFF52D'>-> Fase 1</font>>
A15: Anchor
A16: Variable Convert [ Name:%par1 Function:To Lower Case Store Result In:%par1 ]
A17: Test Variable [ Type:Length Data:%par1 Store Result In:%tempa ]
<{bucle n1}>
A18: Variable Set [ Name:%tempb To:(%tempb)+1 Recurse Variables:Off Do Maths:On Append:Off ]
A19: Variable Section [ Name:%par1 From:%tempb Length:1 Adapt To Fit:Off Store Result In:%tempc ]
A20: Goto [ Type:Action Label Number:32 Label:{bucle n2} ] If [ %tempc ~R [a-z] | %tempc ~ ñ ]
A21: Goto [ Type:Action Label Number:32 Label:{bucle n2} ] If [ %tempc ~R [0-9] ]
A22: Goto [ Type:Action Label Number:32 Label:{bucle n2} ] If [ %tempc eq %temp3a1 | %tempc eq %temp3a2 | %tempc eq %temp3a3 | %tempc eq %temp3a4 | %tempc eq %temp3a5 | %tempc eq %temp3a6 | %tempc eq %temp3a7 | %tempc eq %temp3a8 | %tempc eq %temp3a9 | %tempc eq %temp3a10 | %tempc eq %temp3a11 | %tempc eq %temp3a12 | %tempc eq %temp3a13 | %tempc eq %temp3a14 | %tempc eq %temp3a15 | %tempc eq %temp3a16 | %tempc eq %temp3a17 | %tempc eq %temp3a18 | %tempc eq %temp3a19 ]
A23: Flash [ Text:Elemento '%tempc' no reconocido, posición (%tempb). Long:On ]
A24: Goto [ Type:Action Label Number:1 Label:{fin} ]
<{bucle n2}>
A25: Goto [ Type:Action Label Number:19 Label:{bucle n1} ] If [ %tempb !~ %tempa ]
<<font color='#FFF52D'>-> Fase 2</font>>
A26: Anchor
A27: Java Function [ Return:temp1 Class Or Object:String Function:new
{String} (String) Param:%par1 Param: Param: Param: Param: Param: Param: ]
A28: Java Function [ Return:temp2 Class Or Object:String Function:new
{String} (String) Param:%par222 Param: Param: Param: Param: Param: Param: ]
A29: Java Function [ Return:temp1 Class Or Object:temp1 Function:getBytes
{byte[]} () Param: Param: Param: Param: Param: Param: Param: ]
A30: Java Function [ Return:temp2 Class Or Object:temp2 Function:getBytes
{byte[]} () Param: Param: Param: Param: Param: Param: Param: ]
A31: Java Function [ Return:temp3 Class Or Object:SecretKeySpec Function:new
{SecretKeySpec} (byte[], String) Param:temp2 Param:AES Param: Param: Param: Param: Param: ]
A32: Java Function [ Return:temp4 Class Or Object:Cipher Function:getInstance
{Cipher} (String) Param:AES Param: Param: Param: Param: Param: Param: ]
A33: Java Function [ Return: Class Or Object:temp4 Function:init
{} (int, Key) Param:1 Param:temp3 Param: Param: Param: Param: Param: ]
A34: Java Function [ Return:temp5 Class Or Object:temp4 Function:doFinal
{byte[]} (byte[]) Param:temp1 Param: Param: Param: Param: Param: Param: ]
A35: Java Function [ Return:%par1 Class Or Object:Base64 Function:encodeToString
{String} (byte[], int) Param:temp5 Param:64 Param: Param: Param: Param: Param: ]
A36: Variable Set [ Name:%xxx To:
Recurse Variables:Off Do Maths:Off Append:Off ]
A37: Variable Search Replace [ Variable:%par1 Search:%xxx Ignore Case:Off Multi-Line:Off One Match Only:Off Store Matches In: Replace Matches:On Replace With: ]
<<font color='#FFF52D'>-> Fase 3</font>>
A38: Anchor
A39: Test Variable [ Type:Length Data:%par1 Store Result In:%tempa ]
A40: Variable Set [ Name:%tempd To: - ( Recurse Variables:Off Do Maths:Off Append:Off ]
A41: For [ Variable:%tempb Items:1:%tempa ]
A42: Variable Section [ Name:%par1 From:%tempb Length:1 Adapt To Fit:Off Store Result In:%tempc ]
A43: If [ %tempc ~R [A-Z] ]
A44: Array Push [ Variable Array:%tempd Position:%tempb Value:%tempb Fill Spaces:Off ]
A45: End If
A46: End For
A47: For [ Variable:%tempb Items:%tempd() ]
A48: Variable Set [ Name:%tempd To:%tempb Recurse Variables:Off Do Maths:Off Append:On ]
A49: Variable Set [ Name:%tempd To:, Recurse Variables:Off Do Maths:Off Append:On ] If [ %tempb !~ %tempd(<) ]
A50: End For
A51: Variable Set [ Name:%tempd To:) Recurse Variables:Off Do Maths:Off Append:On ]
A52: Variable Set [ Name:%par1 To:%tempd Recurse Variables:Off Do Maths:Off Append:On ]
<<font color='#0D95FF'>DESENCRIPTAR</font>>
A53: Else If [ %par221 ~ 2 ]
<<font color='#FFF52D'>-> Fase 1</font>>
A54: Anchor
A55: Variable Set [ Name:%xxx To: - ( Recurse Variables:Off Do Maths:Off Append:Off ]
A56: Variable Split [ Name:%par1 Splitter:%xxx Delete Base:Off ]
A57: Variable Split [ Name:%par12 Splitter:) Delete Base:Off ]
A58: Test Variable [ Type:Length Data:%par11 Store Result In:%tempa ]
A59: Array Set [ Variable Array:%tempb Values:%par121 Splitter:, ]
A60: For [ Variable:%tempc Items:1:%tempa ]
A61: Variable Section [ Name:%par11 From:%tempc Length:1 Adapt To Fit:Off Store Result In:%tempd ]
A62: If [ %tempc ~ %tempb(>) ]
A63: Array Pop [ Variable Array:%tempb Position:1 To Var: ]
A64: Variable Convert [ Name:%tempd Function:To Upper Case Store Result In:%tempd ]
A65: Variable Set [ Name:%tempe To:%tempd Recurse Variables:Off Do Maths:Off Append:On ]
A66: Else If [ %tempc !~ %tempb(>) ]
A67: Variable Set [ Name:%tempe To:%tempd Recurse Variables:Off Do Maths:Off Append:On ]
A68: End If
A69: End For
A70: Variable Set [ Name:%par1 To:%tempe Recurse Variables:Off Do Maths:Off Append:Off ]
<<font color='#FFF52D'>-> Fase 2</font>>
A71: Anchor
A72: Java Function [ Return:temp1 Class Or Object:Base64 Function:decode
{byte[]} (String, int) Param:%par1 Param:64 Param: Param: Param: Param: Param: ]
A73: Java Function [ Return:temp2 Class Or Object:String Function:new
{String} (String) Param:%par222 Param: Param: Param: Param: Param: Param: ]
A74: Java Function [ Return:temp2 Class Or Object:temp2 Function:getBytes
{byte[]} () Param: Param: Param: Param: Param: Param: Param: ]
A75: Java Function [ Return:temp3 Class Or Object:SecretKeySpec Function:new
{SecretKeySpec} (byte[], String) Param:temp2 Param:AES Param: Param: Param: Param: Param: ]
A76: Java Function [ Return:temp4 Class Or Object:Cipher Function:getInstance
{Cipher} (String) Param:AES Param: Param: Param: Param: Param: Param: ]
A77: Java Function [ Return: Class Or Object:temp4 Function:init
{} (int, Key) Param:2 Param:temp3 Param: Param: Param: Param: Param: ]
A78: Java Function [ Return:temp5 Class Or Object:temp4 Function:doFinal
{byte[]} (byte[]) Param:temp1 Param: Param: Param: Param: Param: Param: ]
A79: Java Function [ Return:%par1 Class Or Object:String Function:new
{String} (byte[]) Param:temp5 Param: Param: Param: Param: Param: Param: ]
A80: End If
<<font color='#0D95FF'>ENCRIPTACIÓN (morse > alfa)</font>>
A81: Else If [ %par22 !~ 0 & %par21 ~ M-A ]
<<font color='#0D95FF'>ENCRIPTAR</font>>
A82: If [ %par221 ~ 1 ]
<<font color='#FFF52D'>-> Fase 1</font>>
A83: Anchor
A84: Java Function [ Return:temp1 Class Or Object:String Function:new
{String} (String) Param:%par1 Param: Param: Param: Param: Param: Param: ]
A85: Java Function [ Return:temp2 Class Or Object:String Function:new
{String} (String) Param:%par222 Param: Param: Param: Param: Param: Param: ]
A86: Java Function [ Return:temp1 Class Or Object:temp1 Function:getBytes
{byte[]} () Param: Param: Param: Param: Param: Param: Param: ]
A87: Java Function [ Return:temp2 Class Or Object:temp2 Function:getBytes
{byte[]} () Param: Param: Param: Param: Param: Param: Param: ]
A88: Java Function [ Return:temp3 Class Or Object:SecretKeySpec Function:new
{SecretKeySpec} (byte[], String) Param:temp2 Param:AES Param: Param: Param: Param: Param: ]
A89: Java Function [ Return:temp4 Class Or Object:Cipher Function:getInstance
{Cipher} (String) Param:AES Param: Param: Param: Param: Param: Param: ]
A90: Java Function [ Return: Class Or Object:temp4 Function:init
{} (int, Key) Param:1 Param:temp3 Param: Param: Param: Param: Param: ]
A91: Java Function [ Return:temp5 Class Or Object:temp4 Function:doFinal
{byte[]} (byte[]) Param:temp1 Param: Param: Param: Param: Param: Param: ]
A92: Java Function [ Return:%par1 Class Or Object:Base64 Function:encodeToString
{String} (byte[], int) Param:temp5 Param:64 Param: Param: Param: Param: Param: ]
A93: Variable Set [ Name:%xxx To:
Recurse Variables:Off Do Maths:Off Append:Off ]
A94: Variable Search Replace [ Variable:%par1 Search:%xxx Ignore Case:Off Multi-Line:Off One Match Only:Off Store Matches In: Replace Matches:On Replace With: ]
<<font color='#FFF52D'>-> Fase 2</font>>
A95: Anchor
A96: Variable Set [ Name:%xxx To:
Recurse Variables:Off Do Maths:Off Append:Off ]
A97: Variable Search Replace [ Variable:%par1 Search:%xxx Ignore Case:Off Multi-Line:Off One Match Only:Off Store Matches In: Replace Matches:On Replace With: ]
A98: Test Variable [ Type:Length Data:%par1 Store Result In:%tempa ]
A99: Variable Set [ Name:%tempd To: - ( Recurse Variables:Off Do Maths:Off Append:Off ]
A100: For [ Variable:%tempb Items:1:%tempa ]
A101: Variable Section [ Name:%par1 From:%tempb Length:1 Adapt To Fit:Off Store Result In:%tempc ]
A102: If [ %tempc ~R [A-Z] ]
A103: Array Push [ Variable Array:%tempd Position:%tempb Value:%tempb Fill Spaces:Off ]
A104: End If
A105: End For
A106: For [ Variable:%tempb Items:%tempd() ]
A107: Variable Set [ Name:%tempd To:%tempb Recurse Variables:Off Do Maths:Off Append:On ]
A108: Variable Set [ Name:%tempd To:, Recurse Variables:Off Do Maths:Off Append:On ] If [ %tempb !~ %tempd(<) ]
A109: End For
A110: Variable Set [ Name:%tempd To:) Recurse Variables:Off Do Maths:Off Append:On ]
A111: Variable Set [ Name:%par1 To:%tempd Recurse Variables:Off Do Maths:Off Append:On ]
<<font color='#0D95FF'>DESENCRIPTAR</font>>
A112: Else If [ %par221 ~ 2 ]
<<font color='#FFF52D'>-> Fase 1</font>>
A113: Anchor
A114: Variable Set [ Name:%xxx To: - ( Recurse Variables:Off Do Maths:Off Append:Off ]
A115: Variable Split [ Name:%par1 Splitter:%xxx Delete Base:Off ]
A116: Variable Split [ Name:%par12 Splitter:) Delete Base:Off ]
A117: Test Variable [ Type:Length Data:%par11 Store Result In:%tempa ]
A118: Array Set [ Variable Array:%tempb Values:%par121 Splitter:, ]
A119: For [ Variable:%tempc Items:1:%tempa ]
A120: Variable Section [ Name:%par11 From:%tempc Length:1 Adapt To Fit:Off Store Result In:%tempd ]
A121: If [ %tempc ~ %tempb(>) ]
A122: Array Pop [ Variable Array:%tempb Position:1 To Var: ]
A123: Variable Convert [ Name:%tempd Function:To Upper Case Store Result In:%tempd ]
A124: Variable Set [ Name:%tempe To:%tempd Recurse Variables:Off Do Maths:Off Append:On ]
A125: Else If [ %tempc !~ %tempb(>) ]
A126: Variable Set [ Name:%tempe To:%tempd Recurse Variables:Off Do Maths:Off Append:On ]
A127: End If
A128: End For
A129: Variable Set [ Name:%par1 To:%tempe Recurse Variables:Off Do Maths:Off Append:Off ]
<<font color='#FFF52D'>-> Fase 2</font>>
A130: Anchor
A131: Java Function [ Return:temp1 Class Or Object:Base64 Function:decode
{byte[]} (String, int) Param:%par1 Param:64 Param: Param: Param: Param: Param: ]
A132: Java Function [ Return:temp2 Class Or Object:String Function:new
{String} (String) Param:%par2 Param: Param: Param: Param: Param: Param: ]
A133: Java Function [ Return:temp2 Class Or Object:temp2 Function:getBytes
{byte[]} () Param: Param: Param: Param: Param: Param: Param: ]
A134: Java Function [ Return:temp3 Class Or Object:SecretKeySpec Function:new
{SecretKeySpec} (byte[], String) Param:temp2 Param:AES Param: Param: Param: Param: Param: ]
A135: Java Function [ Return:temp4 Class Or Object:Cipher Function:getInstance
{Cipher} (String) Param:AES Param: Param: Param: Param: Param: Param: ]
A136: Java Function [ Return: Class Or Object:temp4 Function:init
{} (int, Key) Param:2 Param:temp3 Param: Param: Param: Param: Param: ]
A137: Java Function [ Return:temp5 Class Or Object:temp4 Function:doFinal
{byte[]} (byte[]) Param:temp1 Param: Param: Param: Param: Param: Param: ]
A138: Java Function [ Return:%par1 Class Or Object:String Function:new
{String} (byte[]) Param:temp5 Param: Param: Param: Param: Param: Param: ]
A139: End If
A140: End If
<<font color='#0D95FF'>ALFA > MORSE</font>>
A141: If [ %par21 ~ A-M ]
<<font color='#FFF52D'>-> Fase 1</font>>
A142: Anchor
A143: Variable Convert [ Name:%par1 Function:To Lower Case Store Result In:%par1 ]
A144: Test Variable [ Type:Length Data:%par1 Store Result In:%tempa ]
<{bucle n3}>
A145: Variable Set [ Name:%tempb To:(%tempb)+1 Recurse Variables:Off Do Maths:On Append:Off ]
A146: Variable Section [ Name:%par1 From:%tempb Length:1 Adapt To Fit:Off Store Result In:%tempc ]
A147: For [ Variable:%tempd Items:%temp1a() ] If [ %tempc ~R [a-z] | %tempc ~ ñ ]
A148: Variable Set [ Name:%tempe To:(%tempe)+1 Recurse Variables:Off Do Maths:On Append:Off ]
A149: If [ %tempd ~ %tempc ]
A150: Variable Set [ Name:%tempf To:%temp1b(%tempe) Recurse Variables:Off Do Maths:Off Append:On ]
A151: Goto [ Type:Action Label Number:32 Label:{bucle n4} ]
A152: End If
A153: End For
A154: For [ Variable:%tempd Items:%temp2a() ] If [ %tempc ~R [0-9] ]
A155: Variable Set [ Name:%tempe To:(%tempe)+1 Recurse Variables:Off Do Maths:On Append:Off ]
A156: If [ %tempd ~ %tempc ]
A157: Variable Set [ Name:%tempf To:%temp2b(%tempe) Recurse Variables:Off Do Maths:Off Append:On ]
A158: Goto [ Type:Action Label Number:32 Label:{bucle n4} ]
A159: End If
A160: End For
A161: For [ Variable:%tempd Items:%temp3a() ] If [ %tempc eq %temp3a1 | %tempc eq %temp3a2 | %tempc eq %temp3a3 | %tempc eq %temp3a4 | %tempc eq %temp3a5 | %tempc eq %temp3a6 | %tempc eq %temp3a7 | %tempc eq %temp3a8 | %tempc eq %temp3a9 | %tempc eq %temp3a10 | %tempc eq %temp3a11 | %tempc eq %temp3a12 | %tempc eq %temp3a13 | %tempc eq %temp3a14 | %tempc eq %temp3a15 | %tempc eq %temp3a16 | %tempc eq %temp3a17 | %tempc eq %temp3a18 | %tempc eq %temp3a19 ]
A162: Variable Set [ Name:%tempe To:(%tempe)+1 Recurse Variables:Off Do Maths:On Append:Off ]
A163: If [ %tempd eq %tempc ]
A164: Variable Set [ Name:%tempf To:%temp3b(%tempe) Recurse Variables:Off Do Maths:Off Append:On ] If [ %tempd neq %temp3a19 ]
A165: Variable Set [ Name:%tempf To:| Recurse Variables:Off Do Maths:Off Append:On ] If [ %tempd eq %temp3a19 ]
A166: Goto [ Type:Action Label Number:32 Label:{bucle n4} ]
A167: End If
A168: End For
A169: Flash [ Text:Elemento '%tempc' no reconocido, posición (%tempb). Long:On ]
A170: Goto [ Type:Action Label Number:1 Label:{fin} ]
<{bucle n4}>
A171: Variable Clear [ Name:%tempe Pattern Matching:Off Local Variables Only:Off ]
A172: Goto [ Type:Action Label Number:19 Label:{bucle n3} ] If [ %tempb !~ %tempa ]
A173: Set Clipboard [ Text:%tempf Add:Off ] If [ %par24 ~ 1 ]
<<font color='#FFF52D'>-> Fase 2</font>>
A174: Anchor
A175: Test Variable [ Type:Length Data:%tempf Store Result In:%tempa ]
<Sonido>
A176: If [ %par23 ~ S ]
A177: Notify [ Title:Morse Translator Text:Reproduciendo... Icon:mw_editor_linear_scale Number:0 Permanent:On Priority:5 ]
A178: For [ Variable:%tempb Items:1:%tempa ]
A179: Variable Section [ Name:%tempf From:%tempb Length:1 Adapt To Fit:Off Store Result In:%tempc ]
A180: Beep [ Frequency:6000 Duration:100 Amplitude:50 Stream:3 ] If [ %tempc eq . ]
A181: Beep [ Frequency:6000 Duration:300 Amplitude:50 Stream:3 ] If [ %tempc eq - ]
A182: Wait [ MS:100 Seconds:0 Minutes:0 Hours:0 Days:0 ] If [ %tempc eq %temp3b19 ]
A183: Wait [ MS:700 Seconds:0 Minutes:0 Hours:0 Days:0 ] If [ %tempc eq | ]
A184: End For
<Vibrador>
A185: Else If [ %par23 ~ V ]
A186: Variable Set [ Name:%tempd To:0, Recurse Variables:Off Do Maths:Off Append:Off ]
A187: For [ Variable:%tempb Items:1:%tempa ]
A188: Variable Section [ Name:%tempf From:%tempb Length:1 Adapt To Fit:Off Store Result In:%tempc ]
A189: Variable Set [ Name:%tempd To:100,100, Recurse Variables:Off Do Maths:Off Append:On ] If [ %tempc eq . ]
A190: Variable Set [ Name:%tempd To:300,100, Recurse Variables:Off Do Maths:Off Append:On ] If [ %tempc eq - ]
A191: Variable Set [ Name:%tempd To:0,700, Recurse Variables:Off Do Maths:Off Append:On ] If [ %tempc eq | ]
A192: End For
A193: Variable Clear [ Name:%tempc Pattern Matching:Off Local Variables Only:Off ]
A194: Array Set [ Variable Array:%tempd Values:%tempd Splitter:, ]
A195: For [ Variable:%tempb Items:1:%tempd(#) ]
A196: Variable Set [ Name:%tempc To:%tempd(%tempb) Recurse Variables:Off Do Maths:Off Append:On ]
A197: Variable Set [ Name:%tempc To:+ Recurse Variables:Off Do Maths:Off Append:On ] If [ %tempb !~ %tempd(#) ]
A198: End For
A199: Variable Set [ Name:%tempc To:%tempc Recurse Variables:Off Do Maths:On Append:Off ]
A200: Notify [ Title:Morse Translator Text:Reproduciendo... Icon:mw_editor_linear_scale Number:0 Permanent:On Priority:5 ]
A201: Java Function [ Return:(Vibrator) temp Class Or Object:CONTEXT Function:getSystemService
{Object} (String) Param:vibrator Param: Param: Param: Param: Param: Param: ]
A202: Java Function [ Return: Class Or Object:temp Function:vibrate
{} (long[], int) Param:%tempd Param:-1 Param: Param: Param: Param: Param: ]
A203: Wait [ MS:%tempc Seconds:0 Minutes:0 Hours:0 Days:0 ]
<Luz Flash>
A204: Else If [ %par23 ~ L ]
A205: Notify [ Title:Morse Translator Text:Reproduciendo... Icon:mw_editor_linear_scale Number:0 Permanent:On Priority:5 ]
A206: For [ Variable:%tempb Items:1:%tempa ]
A207: Variable Section [ Name:%tempf From:%tempb Length:1 Adapt To Fit:Off Store Result In:%tempc ]
A208: Torch [ Set:On ]
A209: Wait [ MS:100 Seconds:0 Minutes:0 Hours:0 Days:0 ] If [ %tempc eq . ]
A210: Wait [ MS:300 Seconds:0 Minutes:0 Hours:0 Days:0 ] If [ %tempc eq - ]
A211: Torch [ Set:Off ]
A212: Wait [ MS:100 Seconds:0 Minutes:0 Hours:0 Days:0 ] If [ %tempc eq . | %tempc eq - ]
A213: Wait [ MS:700 Seconds:0 Minutes:0 Hours:0 Days:0 ] If [ %tempc eq | ]
A214: End For
A215: End If
<<font color='#0D95FF'>MORSE > ALFA</font>>
A216: Else If [ %par21 ~ M-A ]
<<font color='#FFF52D'>-> Fase 1</font>>
A217: Anchor
A218: Variable Split [ Name:%par1 Splitter: Delete Base:Off ]
<{bucle n5}>
A219: Variable Set [ Name:%tempb To:(%tempb)+1 Recurse Variables:Off Do Maths:On Append:Off ]
A220: For [ Variable:%tempd Items:%temp4b() ]
A221: Variable Set [ Name:%tempe To:(%tempe)+1 Recurse Variables:Off Do Maths:On Append:Off ]
A222: If [ %tempd ~ %par1(%tempb) | %par1(%tempb) eq | ]
A223: Variable Set [ Name:%tempf To:%temp4a(%tempe) Recurse Variables:Off Do Maths:Off Append:On ] If [ %tempd ~ %par1(%tempb) ]
A224: Variable Set [ Name:%tempf To: Recurse Variables:Off Do Maths:Off Append:On ] If [ %par1(%tempb) eq | ]
A225: Goto [ Type:Action Label Number:28 Label:{bucle n6} ]
A226: End If
A227: End For
A228: If [ %tempe ~ %temp4b(#) ]
A229: Flash [ Text:Elemento '%par1(%tempb)' no reconocido, posición (%tempb) Long:On ]
A230: Goto [ Type:Action Label Number:1 Label:{fin} ]
A231: End If
<{bucle n6}>
A232: Variable Clear [ Name:%tempe Pattern Matching:Off Local Variables Only:Off ]
A233: Goto [ Type:Action Label Number:6 Label:{bucle n5} ] If [ %tempb !~ %par1(#) ]
A234: Set Clipboard [ Text:%tempf Add:Off ] If [ %par24 ~ 1 ]
<<font color='#FFF52D'>-> Fase 2</font>>
A235: Anchor
A236: Notify [ Title:Morse Translator Text:Reproduciendo... Icon:mw_editor_linear_scale Number:0 Permanent:On Priority:5 ]
A237: Say [ Text:%tempf Engine:Voice:com.ivona.tts:spa-ESP Stream:3 Pitch:7 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ]
A238: End If
<{fin}>
A239: Notify Cancel [ Title:Morse Translator Warn Not Exist:Off ]
A240: Profile Status [ Name:MC - Notificación Set:Off ]
MC - Generador Clave
A1: Array Set [ Variable Array:%temp 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,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 Splitter:, ]
<16=128bits | 24=192bits | 32=256bits>
A2: For [ Variable:%xxx Items:1:16 ]
A3: Variable Randomize [ Name:%tempa Min:1 Max:62 ]
A4: Variable Set [ Name:%tempb To:%temp(%tempa) Recurse Variables:Off Do Maths:Off Append:On ]
A5: End For
A6: Set Clipboard [ Text:%tempb Add:Off ]
A7: Flash [ Text:Clave: %tempb Long:On ]
Cambios: - Encriptación para alfa a morse, y viceversa, usando Cipher (AES de 128/192/256 bits) - Ahora se puede controlar la tarea principal desde una única tarea: 'MC - Iniciar', donde tendremos que indicar los parametros que deseemos. - Loops mejorados, al menos eso creo. ![]() - Tarea a parte para generar la contraseña necesaria para poder encriptar/desencriptar mensajes: 'MC - Generador Clave'. - He concentrado todas las tareas que antes estaban por separado, en una troncal. - Ahora el mensaje a morse sale totalmente formateado para ser fácilmente interpretable, y leido (humano). - Etiquetas rediseñadas (y algunas introducidas) para hacer más fácil la comprensión de cada grupo de acciones. - He reintoducido las acciones JF para controlar el vibrador, debido a que no he hallado forma de detener manualmente la vibración, una vez iniciada. (WillyWeb, cuenta Tasker con alguna acción para ello? y que se me haya escapado?) Notas: · Desde mañana hasta el fin de semana no estaré disponible, por lo que me apresuré a finalizar el proyecto lo antes posible. Por lo tanto, os lo dejo para que lo reviseis y vayais entendiendo como funciona. · Si encontrais algún error, comentadlo y discutirlo. (puede que se me haya pasado algo o algunas cosas) · Y por si os parece larga para importarla manualmente, os dejo el proyecto XML adjunto al mensaje. Última edición por SmartPhoneLover Día 17/07/18 a las 00:21:27. |
| Los siguientes 3 usuarios han agradecido a SmartPhoneLover su comentario: | ||
|
#49
|
||||
|
||||
|
__________________
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) |
|
#50
|
||||
|
||||
|
- Si te refieres a la pausa que hago al final del conjunto de acciones de vibración en la tarea principal, es para detenerse antes de que se ejecuten las últimas acciones finales. Me parece que dichas acciones se ejecutan de modo que permiten la ejecución de acciones posteriores. - Y si hablas de la acción detener, lo hago para detener la vibración de manera manual cuando pulso en la notificación. Sino, no me sería posible. Última edición por SmartPhoneLover Día 16/07/18 a las 19:58:29. |
|
#51
|
||||
|
||||
|
SmartPhoneLover, tu versión del comentario 3 funciona, ¿no?
![]() ¡Eso es para más que emitir un SOS! |
![]() |
Estás aquí
|
||||||
|
||||||