Funciones globales
47 min
brightscript proporciona un conjunto de funciones estándar de ámbito de módulo que se almacenan en el objeto global si se hace referencia a una función global, el compilador dirige el entorno de ejecución para llamar al miembro correspondiente del objeto global al llamar a una función global, no necesita usar el operador de punto docid\ x0lwrddqbct3aztlesb1 para hacer referencia al objeto roglobal las funciones trigonométricas globales aceptan y devuelven valores en radianes, no en grados ifglobal createobject(name as string) as object crea un objeto brightscript correspondiente al nombre de clase especificado este método devuelve invalid si la creación del objeto falla algunos objetos tienen parámetros en su constructor, que deben pasarse después del nombre de la clase en una lista separada por comas sw = createobject("rogpiocontrolport") serial = createobject("roserialport", 0, 9600) restartscript() as void sale del script actual luego, el sistema busca un archivo válido autorun brs para ejecutar restartapplication() as void reinicia la aplicación brightsign sleep(milliseconds as integer) indica al script que haga una pausa durante un período de tiempo especificado sin desperdiciar ciclos de cpu el intervalo de suspensión se especifica en milisegundos asc(letter as string) as integer devuelve el código ascii del primer carácter de la cadena especificada un argumento de cadena nula provocará un error chr(character as integer) as string devuelve una cadena de un carácter que contiene un carácter representado por el ascii o control especificado por ejemplo, debido a que las comillas se usan normalmente como delimitadores de cadena, puede pasar el código ascii 34 a esta función para agregar comillas a una cadena len(target string as string) as integer devuelve el número de caracteres en una cadena str(value as double) as string convierte un valor float especificado en una cadena este método también devuelve una cadena igual a la representación en caracteres de un valor por ejemplo, si se asigna a a un valor de 58 5, entonces llamar a str(a) devolverá "58 5" como una cadena stri(value as integer) as string convierte un valor entero especificado en una cadena este método devuelve una cadena igual a la representación en caracteres de un valor, y siempre agregará un espacio inicial a los números no negativos por ejemplo, si se asigna a a un valor de 58 5, entonces llamar a stri(a) devolverá " 58" como una cadena consulte roint, rofloat, rostring docid\ a0dt67arqbi9v3kxm3uyu si necesita un método alternativo que devuelva la cadena sin el espacio antepuesto val(target string as string) as double devuelve un número representado por los caracteres del argumento de cadena esto es lo opuesto de la función str() por ejemplo, si se asigna a a la cadena "58", y se asigna a b la cadena "5", entonces llamar a val(a+" "+b) devolverá el valor float 58 5 strtoi(target string as string) as integer convierte la cadena de destino en un entero cualquier carácter no entero (incluidos los puntos decimales y los espacios), y cualquier número a la derecha de un carácter no entero, no formarán parte de la salida entera abs(x as double) as double devuelve el valor absoluto del argumento x atn(x as double) as double devuelve la arcotangente (en radianes) del argumento x (es decir, atn(x) devuelve "el ángulo cuya tangente es x ") para obtener la arcotangente en grados, multiplique atn(x) por 57 29578 csng(x as integer) as float devuelve una representación float de precisión simple del argumento x cdbl(x as integer) as double devuelve una representación float de doble precisión del argumento x cint(x as double) as integer devuelve una representación entera del argumento x redondeando al número entero más cercano cos(x as double) as double devuelve el coseno del argumento x el argumento debe estar en radianes para obtener el coseno de x cuando x está en grados, use cos(x 01745329) exp(x as double) as double devuelve el exponencial natural de x este es el inverso de la función log() fix(x as double) as integer devuelve una representación truncada del argumento x todos los dígitos a la derecha del punto decimal se eliminan para que el valor resultante sea un entero para valores no negativos de x , fix(x) es igual a int(x) para valores negativos de x , fix(x) es igual a int(x)+1 int(x as double) as integer devuelve una representación entera del argumento x usando el número entero más grande que no sea mayor que el argumento por ejemplo, int(2 2) devuelve 2, mientras que int( 2 5) devuelve 3 log(x as double) as double devuelve el logaritmo natural del argumento i (es decir, loge(x) ) este es el inverso de la función exp() para encontrar el logaritmo de un número en una base b , use la siguiente fórmula logb(x) = loge(x)/loge(b) sgn(x as double) as integer devuelve un entero que representa cómo está firmado el argumento flotante x 1 para negativo, 0 para cero y 1 para positivo sgni(x as integer) as integer devuelve un entero que representa cómo está firmado el argumento entero x 1 para negativo, 0 para cero y 1 para positivo sin(x as double) as double devuelve el seno del argumento x el argumento debe estar en radianes para obtener el seno de x cuando x está en grados, use sin(x 01745329) tan(x as double) as double devuelve la tangente del argumento x el argumento debe estar en radianes para obtener la tangente de x cuando x está en grados, use tan(x 01745329) sqr(x as double) as double devuelve la raíz cuadrada del argumento x esta función es igual que x^(1/2) , pero calcula el resultado más rápido stableenumeration(array as object) as object devuelve un objeto que representa la iteración esta función no afecta al objeto original debe usar esta función para enumerar contenedores de forma segura más de una vez en paralelo left(target string as string, n as integer) as string devuelve los primeros n caracteres de la cadena especificada right(target string as string, n as integer) as string devuelve los últimos n caracteres de la cadena especificada stringi(n as integer, character as integer) as string devuelve una cadena compuesta por un símbolo de carácter repetido n veces el símbolo de carácter se pasa al método como un entero de código ascii string(n as integer, character as string) as string devuelve una cadena compuesta por un símbolo de carácter repetido n veces el símbolo de carácter se pasa al método como una cadena mid(target string as string, start position as integer, length as integer) as string devuelve una subcadena de la cadena de destino el primer entero pasado al método especifica la posición inicial de la subcadena y el segundo entero especifica la longitud de la subcadena la posición inicial de una cadena comienza en 1 instr(start position as integer, search text as string, substring as string) as integer devuelve la posición de una subcadena dentro de una cadena esta función distingue entre mayúsculas y minúsculas y devuelve 0 si no se encuentra la subcadena especificada la posición inicial de una cadena comienza en 1 el objeto string también ofrece un método instr() (aunque utiliza un índice basado en cero) consulte la documentación de rostring docid\ a0dt67arqbi9v3kxm3uyu para obtener más detalles findmemberfunction(object as object, funname as string) as interface devuelve la interfaz del objeto que proporciona la función especificada, o bien devuelve inválido solo está disponible si rodeviceinfo hasfeature("findmemberfunction") devuelve verdadero puede utilizarse como se muestra a continuación print findmemberfunction({}, "count") '= \<interface ifassociativearray> getinterface(object as object, ifname as string) as interface devuelve un valor del tipo interface todos los objetos tienen una o más interfaces en la mayoría de los casos, puede omitir la especificación de la interfaz al llamar a un componente de objeto esto no causará problemas siempre que los nombres de método dentro de una función sean únicos wait(timeout as integer, port as object) as object indica al script que espere en un objeto que tenga una interfaz ifmessageport este método devolverá el objeto de evento que se publicó en el puerto de mensajes si el tiempo de espera se especifica como cero, wait() esperará indefinidamente; de lo contrario, wait() devolverá invalid después del número especificado de milisegundos si no se ha recibido ningún mensaje p = createobject("romessageport") sw = createobject("rogpiocontrolport") sw\ setport(p) msg=wait(0, p) print type(msg) ' should be rogpiobutton print msg getint() ' button number readasciifile(file path as string) as string lee el archivo de texto especificado y lo devuelve como un string writeasciifile(file path as string, buffer as string) as boolean crea un archivo de texto en la ruta de archivo especificada el texto del archivo se pasa como el segundo parámetro este método no puede utilizarse para editar archivos un archivo de texto preexistente se sobrescribirá si tiene el mismo nombre y ruta de directorio que el que se está creando el objeto rocreatefile docid\ z49h0kvvxce5ry7qhd3q1 proporciona más flexibilidad si necesita crear o editar archivos listdir(path as string) as object devuelve un objeto rolist docid\ n8kgozimkfovnev1zavrr que contiene el contenido de la ruta de directorio especificada los nombres de archivo se convierten completamente a minúsculas matchfiles(path as string, pattern in as string) as object toma un directorio en el que buscar (puede ser tan simple como " " o "/") y un patrón para hacer coincidir, y luego devuelve un objeto rolist docid\ n8kgozimkfovnev1zavrr que contiene los resultados cada resultado listado contiene solo la parte del nombre de archivo que coincide con el patrón, no la ruta completa la coincidencia solo se aplica en el directorio especificado; no obtendrá resultados si el patrón contiene un separador de directorios el patrón es una expresión comodín que no distingue entre mayúsculas y minúsculas puede contener los siguientes caracteres especiales ? – coincide con cualquier carácter único – coincide con cero o más caracteres arbitrarios \[…] – coincide con cualquier carácter único especificado dentro de los corchetes el corchete de cierre se trata como un miembro de la clase de caracteres si sigue inmediatamente al corchete de apertura (es decir, "\[]]" coincide con un único corchete de cierre) dentro de esta clase, " " puede utilizarse para especificar un rango a menos que sea el primer o el último carácter (por ejemplo, "\[a cf h"] es equivalente a "\[abcfgh]") una clase de caracteres puede negarse especificando "^" como el primer carácter para coincidir con un literal de este carácter, colóquelo en otro lugar dentro de la clase los caracteres especiales "?", " " y "\[" pierden su función si están precedidos por una sola "\\", y una sola "\\" puede coincidirse usando "\\\\" lcase(target string as string) as string convierte el string especificado completamente a minúsculas ucase(target string as string) as string convierte el string especificado completamente a mayúsculas deletefile(file path as string) as boolean elimina el archivo en la ruta de archivo especificada este método devuelve false si la operación de eliminación falla o si el archivo no existe deletedirectory(directory as string) as boolean elimina el directorio especificado este método eliminará de forma recursiva cualquier archivo y directorio necesario para eliminar el directorio especificado este método devuelve falso si no logra eliminar el directorio, pero aun así puede eliminar algunos de los archivos o directorios anidados por ejemplo dir = deletedirectory("/directory") ' check if directory deletion was successful print dir; ' true if successful o dir = deletedirectory("/directory") if not dir then print "could not delete directory" end if createdirectory(directory as string) as boolean crea el directorio especificado solo se puede crear un directorio a la vez este método devuelve verdadero en caso de éxito y falso en caso de fallo por ejemplo dir = createdirectory("/directory") ' check if directory creation was successful print dir; ' true if successful o dir = createdirectory("/directory") if not dir then print "could not create directory" end if rebootsystem() as void indica al reproductor que realice un reinicio suave shutdownsystem() as void uptime(dummy as integer) as double devuelve el tiempo de actividad del sistema (en segundos) desde el último reinicio formatdrive(drive as string, fs type as string) as boolean formatea la unidad especificada usando uno de los sistemas de archivos que se enumeran a continuación esta función devuelve true en caso de éxito y false en caso de fallo vfat (sistema de archivos fat32, dos/windows) legible y escribible por windows, linux y macos exfat (sistema de archivos dos/windows) compatible con los reproductores series 3 (xtx43, xdx33, hdx23, ls423, ho523) y series 4 (xtx44, xdx34, hdx24, ls424) con versiones de firmware 6 2 94 y posteriores el arranque seguro no es compatible con el sistema de archivos exfat en la versión de firmware 6 2 94 ext2 (sistema de archivos linux) escribible por linux y legible por windows y macos con software adicional ext3 (sistema de archivos linux) escribible por linux y legible por windows y macos con software adicional ext4 (sistema de archivos linux) escribible por linux y legible por windows y macos con software adicional este es el sistema de archivos recomendado para dispositivos ssd y discos duros usb ejectdrive(drive as string) as boolean expulsa la unidad especificada (por ejemplo, "sd ") y devuelve true si tiene éxito si el script está accediendo actualmente a archivos de la unidad especificada, el proceso de expulsión fallará copyfile(source as string, destination as string) as boolean copia el archivo de la ruta de origen especificada al directorio de destino especificado la función devuelve true si tiene éxito y false en caso de fallo movefile(source as string, destination as string) as boolean mueve el archivo de origen especificado al directorio de destino especificado la función devuelve true si tiene éxito y false en caso de fallo ambos nombres de ruta deben estar en la misma unidad mapfilenametonative(path as string) as string convierte la ruta estilo brightscript especificada a la ruta nativa correspondiente y la devuelve como una cadena (por ejemplo, la ruta "sd /mydir" se devolverá como "/storage/sd/mydir") rnd(a as dynamic) as dynamic rungarbagecollector() as roassociativearray destruye objetos que actualmente están en un estado de conteo circular de referencias brightscript normalmente elimina cualquier objeto que quede sin referencias como parte de su algoritmo automatizado de recolección de basura sin embargo, los objetos que se referencian entre sí nunca alcanzarán un conteo de referencias de cero y deberán destruirse manualmente usando este método este método es útil al destruir estructuras de datos de presentaciones antiguas y generar una nueva presentación este método devuelve un arreglo asociativo que describe los resultados del proceso de recolección de basura getdefaultdrive() as string devuelve la unidad predeterminada actual completa con una barra diagonal final cuando se ejecuta como autorun brs , la unidad que contiene el autorun se designa como la predeterminada actual setdefaultdrive(drive as string) establece la unidad predeterminada actual, que no necesita incluir una barra diagonal final este método no falla; sin embargo, si la unidad predeterminada especificada no existe, no será posible recuperar nada este método acepta los siguientes valores "usb1 " – la unidad para dispositivos de almacenamiento usb conectados al reproductor "sd " – la unidad sd o microsd principal del reproductor "sd2 " – la unidad microsd interna en reproductores compatibles con esta función (consulte dispositivos de almacenamiento docid\ mgdefc6yvkibeiuxh9j1o ) "ssd " – el ssd interno en reproductores compatibles con esta función (consulte dispositivos de almacenamiento docid\ mgdefc6yvkibeiuxh9j1o ) enablezonesupport(enable as boolean) permite la visualización de múltiples zonas de video, html, imágenes y texto a partir del firmware 6 0 x, la compatibilidad con zonas está habilitada de forma predeterminada enableaudiomixer(enable as boolean) pi() as double devuelve el valor de pi como un número de punto flotante de doble precisión parsejson(json string as string) as object analiza una cadena con formato según el estándar rfc4627 y devuelve un objeto brightscript equivalente, que puede consistir en lo siguiente booleanos, enteros, números de punto flotante, cadenas, objetos roarray y objetos roassociativearray el método parsejson() tiene las siguientes propiedades se devolverá invalid si la cadena no es sintácticamente correcta cualquier objeto roassociativearray que se devuelva distinguirá entre mayúsculas y minúsculas se devolverá un error si un roarray o roassociativearray está anidado a más de 256 niveles de profundidad el siguiente script muestra cómo usar parsejson() para procesar un objeto json que contiene los títulos y las url de un conjunto de imágenes script json { "photos" \[ { "title" "view from the hotel", "url" "http //example com/images/00012 jpg" }, { "title" "relaxing at the beach", "url" "http //example com/images/00222 jpg" }, { "title" "flat tire", "url" "http //example com/images/00314 jpg" } ] } brightscript searchrequest = createobject("rourltransfer") searchrequest seturl("http //api example com/services/rest/getphotos") response = parsejson(searchrequest gettostring()) for each photo in response photos getimage(photo title, photo url) end for formatjson(json as roassociativearray, flags as integer) as string convierte un arreglo asociativo en una cadena json (es decir, con formato según el estándar rfc4627) los siguientes tipos de datos son compatibles boolean, integer, float, string, roarray , y roassociativearray si el parámetro banderas se establece en 0 o no se especifica, los caracteres no ascii se escapan en la cadena de salida como “\uxxxx”, donde “xxxx” es la representación hexadecimal del valor del carácter unicode si el parámetro banderas se establece en 1, los caracteres no ascii no se escapan si los arreglos o arreglos asociativos están anidados a más de 256 niveles de profundidad, se producirá un error si se produce un error, se devolverá una cadena vacía de forma predeterminada, usar sintaxis de literal de objeto (por ejemplo, aa={relativepath "foo"} ) para generar un arreglo asociativo convertirá las claves completamente a minúsculas para preservar camel case para json, use el método roassociativearray addreplace() en lugar de literales de objeto o llame a roassociativearray setmodecasesensitive() antes de agregar entradas