Java Script Lite - API¶
Sumario de URL utilizadas en la API¶
Módulo url aes package://libs#sec#crypt/aes.wmlsc call package://vm#core/call.wmlsc channel package://libs#sec#channel/channel.wmlsc comm package://libs#comm/comm.wmlsc compression package://phpacket/compression.wmlsc crc package://libs#sec#hash/crc.wmlsc crypt package://libs#sec#crypt/crypt.wmlsc cron package://libs#cron/cron.wmlsc cstd package://libs#db/cstd.wmlsc db package://libs#db/db.wmlsc des package://libs#sec#crypt/des.wmlsc dev package://libs#dev/dev.wmlsc dv package://libs#sec#hash/dv.wmlsc eth package://libs#dev/eth.wmlsc gprs package://libs#dev/gprs.wmlsc gsm package://libs#dev/gsm.wmlsc gzip package://vm#stream/gzip.wmlsc hash package://libs#sec#hash/hash.wmlsc http package://libs#ms/http.wmlsc iniFile package://vm#core/inifile.wmlsc init package://vm#core/init.wmlsc json package://libs#json/json.wmlsc map package://vm#core/map.wmlsc mngrwifi package://phast#config/mngr_wifi.wmlsc md5 package://libs#sec#hash/md5.wmlsc nfc package://libs#dev/nfc.wmlsc phastservice package://phast#applet/service.wmlsc phdmservice package://libs#phdm/service.wmlsc printer package://libs#dev/printer.wmlsc qrcode package://libs#qrcode/qrcode.wmlsc regex package://libs#regex/regex.wmlsc rsa package://libs#sec#crypt/rsa.wmlsc serial package://libs#dev/serial.wmlsc sha package://libs#sec#hash/sha.wmlsc stream package://vm#stream/stream.wmlsc streambuffer package://vm#stream/bfwriter.wmlsc streamdata package://vm#stream/data.wmlsc streamendian package://vm#stream/endian.wmlsc streamfile package://vm#stream/file.wmlsc streamphtar package://vm#stream/phtar.wmlsc tlv package://libs#tlv/tlv.wmlsc touch package://libs#dev/touch.wmlsc usb package://libs#dev/usb.wmlsc xml package://libs#xml/xml.wmlsc wifi package://libs#dev/wifi.wmlsc wless package://libs#dev/wless.wmlsc
WMLS¶
Lang¶
Este módulo contiene un conjunto de funciones que están estrechamente relacionadas con el núcleo del lenguaje. Las funciones de este módulo se especifican en el documento WAP-194. Java Script Lite es compatible con la mayoría de las funciones del módulo Lang especificado en la WAP-194, excepto para las siguientes funciones:
No Soportado Funciones¶
Función Descripción parseFloat No soportado. isFloat No soportado. float No soportado.
Sumario¶
Función Descripción abs Devuelve el valor absoluto de un número pasado. min Devuelve el valor más pequeño entre dos valores pasados. max Devuelve el valor más alto entre dos valores pasados . parseInt Convierte un valor pasado en un número integer. isInt Comprueba si el valor pasado es un número integer. maxInt Devuelve el número integer más grande soportado. minInt Devuelve el número integer más pequeño soportado random Devuelve un valor aleatorio mayor que cero y menor que el valor pasado. seed Inicializa una stream pseudoaleatoria. characterSet Devuelve el valor integer para el tipo de caracter utilizado.
abs¶
Lang.abs(value) Devuelve el valor absoluto de un número pasado.
Parámetros¶
- value – Valor numérico.
Devuelve¶
Devuelve el valor absoluto de un número.
Ejemplo¶
function useAbs() { var integer = -15; Dialogs.alert("Salida: " + Lang.abs(integer)); }Salida:
Salida: 15.
min¶
Lang.min(value1, value2) Esta función compara los dos valores recibidos.
Parámetros¶
- value1 – Valor numérico.
- value2 – Valor numérico.
Devuelve¶
Devuelve el valor más pequeño entre dos valores pasados.
Ejemplo¶
function useMin() { var value1 = 10; var value2 = 22; Dialogs.alert("Salida: " + Lang.min(value1, value2)); }Salida:
Salida: 10.
max¶
Lang.max(value1, value2) Esta función compara los dos valores recibidos.
Parámetros¶
- value1 – Valor numérico.
- value2 – Valor numérico.
Devuelve¶
Devuelve el valor más alto entre dos valores pasados.
Ejemplo¶
function useMax() { var value1 = 10; var value2 = 22; Dialogs.alert("Salida: " + Lang.max(value1, value2)); }Salida:
Salida: 22.
parseInt¶
Lang.parseInt(value) Esta función convierte una String en un número integer..
Parámetros¶
- value – String que deseja converter para integer.
Devuelve¶
Devuelve un número integer o Devuelve invalid.
Ejemplo¶
function useParseInt() { var str = "10"; Dialogs.alert(str + 2); Dialogs.alert(Lang.parseInt(str) + 2); }Salida:
102. 12.
isInt¶
Lang.isInt(value) Esta función comprueba si el valor pasado es un número integer.
Parámetros¶
- value – El valor que desea verificar es un integer.
Devuelve¶
Devuelve true si el valor es un número integer y false si no.
Ejemplo¶
function useIsInt() { var str = "dez"; var integer = 10; Dialogs.alert("Es integer? " + Lang.isInt(str)); Dialogs.alert("Es integer? " + Lang.isInt(integer)); }Salida:
Es integer: false. Es integer: true.
maxInt¶
Lang.maxInt() Esta función devuelve el número integer más grande soportado.
Devuelve¶
El número integer más grande soportado.
Ejemplo¶
function useMaxInt() { var x = Lang.maxInt(); Dialogs.alert(x); }Salida:
2147483647.
minInt¶
Lang.minInt() Esta función devuelve el número integer más pequeño soportado.
Devuelve¶
El número integer más pequeño soportado.
Ejemplo¶
function useMinInt() { var x = Lang.minInt(); Dialogs.alert(x); }Salida:
–2147483648.
random¶
Lang.random(value) Devuelve un valor aleatorio mayor que 0 y menor que el valor pasado.
Parámetros¶
- value – Valor numérico.
Devuelve¶
Devuelve un número integer o devuelve un invalid.
Ejemplo¶
function useRandom() { var x = Lang.random(10); Dialogs.alert("Valor: " + x); }Salida:
Valor: 5.
seed¶
Lang.seed() Inicializa una secuencia pseudoaleatoria.
Devuelve¶
Devuelve una String vacía.
Ejemplo¶
function useSeed() { Lang.seed(7); var x = Lang.random(10); Dialogs.alert("Salida: "x); Lang.seed(7); var y = Lang.random(10); Dialogs.alert("Salida: " + y); }Salida:
Salida: 6. Salida: 6.
characterSet¶
Lang.characterSet() Esta función devuelve un número integer que se refiere el tipo del character set.
Devuelve¶
Devuelve un integer.
Ejemplo¶
function useCharacterSet() { Dialogs.alert(Lang.characterSet()); }Salida:
106.
String¶
Este módulo contiene un conjunto de funciones para manipular String. Especificando las funciones de este módulo se puede encontrar en el documento [WAP-194][1].
Además de las funciones definidas por el [WAP-194][1], Java Script Lite tiene algunas funciones adicionales que se describen a continuación.
Sumario¶
Función Descripción getChar Convierte el código ASCII recibido en un caracter. getValue Convierte el caracter recibido en el código ASCII correspondiente. toLowerCase Devuelve una String convertida a minúsculas . toUpperCase Devuelve una String convertida a mayúscula . toProperCase Devuelve una String donde cada nueva palabra, separada por un espacio, tendrá su primera letra en mayúscula. normalize Devuelve una String con el mismo valor textual que la String recibida como parámetro, pero con su representación binaria en Unicode. length Devuelve el número de caracter que tiene la String. isEmpty Devuelve true si la String está vacía y falso en caso contrario . charAt Devuelve un caracter de la String en la posición indicada. subString Devuelve una subString basado en los parámetros indicados. find Búsqueda una subString en la String pasada. replace Reemplaza una subString por una nueva subString. elements Devuelve el número de elementos de una String separados por un separador. elementAt Devuelve el elemento en la posición especificada. removeAt Eliminar el elemento en el índice especificado. replaceAt Reemplaza el elemento en el índice especificado con un nuevo elemento. insertAt Inserta un nuevo elemento en el índice especificado. squeeze Reemplaza varios espacios en blanco con uno. trim Eliminar los espacios en blanco del principio y el final de la String. compare Comparación dos String en función de sus posiciones lexicográficas. toString Crea una vista de String del valor pasado. format Formatee el valor pasado de acuerdo con el format.
getChar¶
String.getChar(code) Convierte el argumento recibido (numérico) en un caracter.
Parámetros¶
- code – Valor integer entre 0 y 255.
Devuelve¶
Devuelve una String que contiene el caracter correspondiente en caso de éxito o invalid en caso de error .
Ejemplo¶
function test() { var c = String.getChar(97); Dialogs.alert("caracteres: " + c); }Salida:
caracteres: a
getValue¶
String.getValue(caracteres) Convierte el caracter recibido en el código ASCII correspondiente.
Parámetros¶
- caracteres – Una String que contiene el caracter correspondiente al decimal que desea encontrar. Solo se analizará el primer caracter de la String .
Devuelve¶
Devuelve el código ASCII decimal del caracter pasado. En caso de error, se vuelve invalid.
Ejemplo¶
function test() {
var s = String.getValue("a");
Dialogs.alert("Código del caracteres: " + s);
}
Salida:
Código del caracteres: 97
toLowerCase¶
String.toLowerCase(str)
Esta función convierte una String a minúsculas.
Parámetros¶
- str – String desea convertir a minúsculas.
Devuelve¶
Devuelve la String convertida a minúsculas. En caso de error, se vuelve invalid.
Ejemplo¶
function test() {
var s = String.toLowerCase("CASE");
Dialogs.alert("String en lowercase: " + s);
}
Salida:
String en lowercase: case
toUpperCase¶
String.toUpperCase(str)
Esta función convierte una String en mayúsculas.
Parámetros¶
- str – String quieres convertir a mayúsculas
Devuelve¶
Devuelve la String convertida a mayúsculas. En caso de error, se vuelve invalid.
Ejemplo¶
function test() { var s = String.toUpperCase("case"); Dialogs.alert("String en uppercase: " + s); }Salida:
String en uppercase: CASE
toProperCase¶
String.toProperCase(str)
Esta función convierte la primera letra de cada palabra de una String (separada por espacio) a mayúscula.
Parámetros¶
- str – String que quieres convertir el proper case.
Devuelve¶
Devuelve la String convertida. En caso de error, se vuelve invalid.
Ejemplo¶
function test() { var s = String.toProperCase("programación en Java Script Lite"); Dialogs.alert("String en propercase: " + s); }Salida:
String en propercase: Programación En Java Script Lite
normalize¶
String.normalize(str)
Esta función normaliza una String, cambiando su representación binaria a Unicode.
Parámetros¶
- str – La String que quieres normalizar.
Devuelve¶
La String normalizada en caso de éxito o invalid en caso de error.
Ejemplo¶
function test() { var s = String.normalize("ustéd, és, nó, número."); Dialogs.alert("String normalizada: " + s); }Salida:
String normalizada: usted, es, no, número.
length¶
String.length(str)
Esta función devuelve el número de caracteres que tiene la String.
Parámetros¶
- str – String que desea saber el número de caracteres.
Devuelve¶
Cantidad de caracteres.
Ejemplo¶
function useLength() { var nome = "Phoebus"; Dialogs.alert("Cantidad de caracteres: " + String.length(nome)); // 7 }Salida:
Cantidad de caracteres: 7.
isEmpty¶
String.isEmpty(str)
Esta función comprobará si la String está vacía o no.
Parámetros¶
- str – String quieres comprobar si está vacío.
Devuelve¶
Devuelve true si la length de la String es 0 y false en caso contrario
Ejemplo¶
function useIsEmpty() { var nome1 = ""; var nome2 = "Phoebus"; Dialogs.alert("¿Está vacío? " + String.isEmpty(nome1)); Dialogs.alert("¿Está vacío? " + String.isEmpty(nome2)); }Salida:
¿Está vacío? true. ¿Está vacío? false.
charAt¶
String.charAt(str, index)
Esta función devuelve los caracteres en el índice especificado.
Parámetros¶
- str – String.
- índice – Posición de la String que desea obtener el carácter .
Devuelve¶
Devuelve el caracter en la posición especificada.
Ejemplo¶
function useCharAt() { var nome = "Phoebus"; Dialogs.alert("caracteres: " + String.charAt(nome, 2)); }Salida:
caracteres: o.
subString¶
String.subString(str, startindex, length)
Esta función devuelve una subString basada en los parámetros pasados.
Parámetros¶
- str – String.
- startIndex – índice inicial de subString.
- length – Número de caracteres en los que desea volver en subString.
Devuelve¶
Devuelve una subString.
Ejemplo¶
function useSubString() { var nome = "Phoebus Tecnologia"; Dialogs.alert("SubString: " + String.subString(nome, 2, 4)); }Salida:
SubString: oebu
find¶
String.find(str, subString)
Obtendrá una subString en la String aprobada.
Parámetros¶
- str – String.
- subString – SubString ser buscado en String.
Devuelve¶
Devuelve el índice del primer carácter de la subString si encuentra uno o -1 si no encuentra uno subString.
Ejemplo¶
function useFind() { var nome = "Phoebus Tecnologia"; Dialogs.alert("Índice: " + String.find(nome, "Tec")); }Salida:
Índice: 8
replace¶
String.replace(str, oldSubString, newSubString)
Esta función reemplazará una subString por otra.
Parámetros¶
- str – String.
- oldSubString – SubString para ser reemplazado.
- newSubString – Se agregará SubString en lugar de oldSubString.
Devuelve¶
Devuelve un nuevo String con el reemplazo de subStrings realizado.
Ejemplo¶
function useReplace() { var nome = "Phoebus TI"; var newNome = String.replace(nome, "TI", "Tecnologia"); Dialogs.alert("Nuevo String: " + newNome); }Salida:
Nuevo String: Phoebus Tecnologia.
elements¶
String.elements(str, separator) Separe la String de acuerdo con el separador provisto.
Parámetros¶
- str – String.
- separator – Separador de String.
Devuelve¶
Devuelve el número de elementos String separados por el separador.
Ejemplo¶
function useElements() { var nome = "Phoebus Phoebus Phoebus"; Dialogs.alert("Elementos: " + String.elements(nome, " ")); }Salida:
Cantidad de elementos: 3.
elementAt¶
String.elementAt(str, index, separator) Esta función separa los elementos según el separador.
Parámetros¶
- str – String.
- index – Indica qué elemento vuelve después de la separación.
- separator – Separador de String.
Devuelve¶
Devuelve el elemento en la posición indicada
Ejemplo¶
function useElementsAt() { var nome = "Phoebus Tecnologia"; Dialogs.alert("Elemento: " + String.elementAt(nome, 0, " ")); }Salida:
Elemento: Phoebus.
removeAt¶
String.removeAt(str, index, separator) Esta función separa los elementos según el separador y elimina el elemento en el índice especificado.
Parámetros¶
- str – String.
- index – Indica qué elemento eliminar después de la separación.
- separator – Separador de String.
Devuelve¶
Devuelve una nueva String sin el elemento que se eliminó.
Ejemplo¶
function useRemoveAt() { var nome = "Phoebus Tecnologia"; var newNome = String.removeAt(nome, 1, " "); Dialogs.alert("Viejo Nombre: " + nome); Dialogs.alert("Nuevo Nombre: " + newNome); }Salida:
Viejo Nombre: Phoebus Tecnologia. Nuevo Nombre: Phoebus.
replaceAt¶
String.replaceAt(str, element, index, separator) Esta función separa los elementos según el separador y elimina el elemento en el índice especificado.
Parámetros¶
- str – String.
- element – Nuevo elemento.
- index – Indica qué elemento se reemplazará.
- separator – Separador de String.
Devuelve¶
Devuelve una nueva String con el elemento en el índice especificado reemplazado por el nuevo elemento.
Ejemplo¶
function useReplaceAt() { var nome = "Phoebus Ti"; var newNome = String.replaceAt(nome, "Tecnologia", 1, " "); Dialogs.alert("Nombre: " + nome); Dialogs.alert("Nuevo nombre: " + newNome); }Salida:
Nombre: Phoebus Ti. Nurevo nombre: Phoebus Tecnologia.
insertAt¶
String.replaceAt(str, element, index, separator) Esta función separa los elementos según el separador y elimina el elemento en el índice especificado.
Parámetros¶
- str – String.
- element – Nuevo elemento a insertar.
- index – Posición donde insertar el nuevo elemento.
- separator – Separador de String.
Devuelve¶
Devuelve una nueva String con el nuevo elemento insertado en la posición especificada.
Ejemplo¶
function useInsertAt() { var nome = "Phoebus Tecnologia"; var newNome = String.insertAt(nome, "Pagos", 1, " "); Dialogs.alert("Nombre: " + newNome); }Salida:
Nombre: Phoebus Pagamentos Tecnologia.
squeeze¶
String.squeeze(str) Esta función reduce varios espacios consecutivos a uno.
Parámetros¶
- str – String.
Devuelve¶
Devuelve una String con sus múltiples espacios consecutivos reducidos a uno.
Ejemplo¶
function useSqueeze() { var nome = "Phoebus Phoebus Phoebus"; Dialogs.alert("String: " + String.squeeze(nome)); }Salida:
String: Phoebus Phoebus Phoebus.
trim¶
String.trim(str) Esta función elimina los espacios en blanco del principio y el final de la String.
Parámetros¶
- str – String.
Devuelve¶
Devuelve una String con los espacios desde el principio de la String y el final eliminado.
Ejemplo¶
function useTrim() { var nome = " Phoebus "; Dialogs.alert(String.trim(nome)); }Salida:
String: Phoebus.
compare¶
String.compare(str1, str2) Esta función comparará Strings en función de sus relaciones lexicográficas.
Parámetros¶
- str1 – String.
- str2 – String.
Devuelve¶
Devuelve -1 si str1 está en alguna posición anterior relativa a str2. 1 si str1 está por delante de str2. 0 si son idénticos.
Ejemplo¶
function useCompare() { var str1 = "A"; var str2 = "B"; Dialogs.alert("Devuelve: " + String.compare(str1, str2)); Dialogs.alert("Devuelve: " + String.compare(str2, str1)); Dialogs.alert("Devuelve: " + String.compare("a", "a")); }Salida:
Devuelve: -1 Devuelve: 1 Devuelve: 0
toString¶
String.toString(value) Esta función intentará crear una representación de String del valor pasado.
Parámetros¶
- value – Cualquier valor.
Devuelve¶
Devuelve una representación de String del valor pasado. De lo contrario, se volverá inválido.
Ejemplo¶
function useToString() { var integer = 10; var boolean = true; Dialogs.alert("String: " + String.toString(integer)); Dialogs.alert("String: " + String.toString(boolean)); }Salida:
String: 10. String: true.
format¶
String.format(format, value) Convierte el valor pasado en una String según el formato pasado.
Parámetros¶
- format – width - Cantidad mínima de caracteres a mostrar y llenar con espacios en blanco si es necesario. Precision - Especifica el número de dígitos que se van a imprimir y rellena con ceros si es necesario.
- value – Cualquier valor.
Devuelve¶
Devuelve una representación de String del valor pasado. Si no, se vuelve invalid.
Ejemplo¶
function useFormat() { var str = "now"; var a = 45; var b = String.format("b: %2.5d", a); Dialogs.alert(b); Dialogs.alert(String.format("Do it %5s", str)); }Salida:
Salida: 00045. Salida: Do it now.
Dialogs¶
Este módulo contiene un conjunto de funciones típicas de la interfaz de usuario. Especificando las funciones de este módulo se puede encontrar en el documento WAP-194.
Además de las funciones definidas por el WAP-194, Java Script Lite tiene algunas funciones adicionales que se describen a continuación.
Sumario¶
Función Descripción getSelection Muestra un menú textual para seleccionar un elemento. alertExt mismo comportamiento del función alert definido en el WAP-194, pero con timeout parametrizable. error Muestra un error en modo texto.
getSelection¶
Dialogs.getSelection(title, list, selected, timeout)
Muestra un menú textual para seleccionar un elemento.
Parámetros¶
- title – String, título del menú.
- list – PhList con los elementos (ver PhList).
- selected – Número [1..n] con el índice del elemento preseleccionado.
- timeout – Tiempo de espera en segundos.
Devuelve¶
Esta función devuelve un número integer que representa el índice, comenzando con 1, de la opción seleccionada. Si hay una cancelación o si se ha alcanzado el tiempo de espera sin ninguna selección, una devolución con invalid será generado.
Ejemplo¶
function test() { var list = PhList.create(); PhList.add(list, "item1"); PhList.add(list, "item2"); PhList.add(list, "item3"); var s = Dialogs.getSelection("title", list, 0, 30); if (s == 1) { Dialogs.alert("Seleccioné la opción 1"); } else if (s == 2) { Dialogs.alert("Seleccioné la opción 2"); } else if (s == 3) { Dialogs.alert("Seleccioné la opción 3"); } else if (s == 0) { Dialogs.alert("Timeout"); } else { Dialogs.alert("Opereción cancelada"); } }Salida:
title --------------------- [1] item1 [2] item2 [3] item3 -- Seleccioné la opción 1
alertExt¶
Dialogs.alertExt(message, timeout)
Mismo comportamiento de Dialogs.alert simplemente agregando un tiempo de espera.
Parámetros¶
- message – String a ser exibida.
- timeout – Número con tiempo de espera en segundos. El valor 0 (cero) indica un tiempo infinito.
Devuelve¶
String or invalid.
Ejemplo¶
function test() { Dialogs.alertExt("Hello World!", 30); }Salida:
Hello World!
error¶
Dialogs.error(erroCode, description, timeout)
Muestra un error en modo texto.
Parámetros¶
- erroCode – Numérico con el código de error.
- description – String con la descripción del error.
- timeout – Numérico con tiempo de espera en milisegundos.
Devuelve¶
invalid en caso de error o la String vacía.
Ejemplo¶
function test() { Dialogs.error(100, "FALLÓ AL CONECTAR!", 2000); }Salida:
CODIGO: 100 --------------------- FALLÓ AL CONECTAR!
Core¶
PhSystem¶
Clase interna PhSystem contiene varias funciones útiles que recuperan una variedad de datos, como fecha / hora, configuración del entorno, número de serie de la terminal, etc.
Sumario¶
Función Descripción getTime Devuelve hora del SO (sistema operativo) . getDate Devuelve la fecha del SO (sistema operativo) . getSerialNumber Devuelve el número de serie de la terminal. delay Suspende la ejecución del script actual durante un tiempo especificado en milisegundos. setDate Modifica la fecha del SO. setTime Modifica la hora del SO. getPOSType Devuelve un número de identificación único para cada modelo de terminal. beep Beep en el intervalo especificado. statusBar Cuando está habilitado, presenta información sobre el estado de la terminal. Solo disponible en modo texto. getTickCount Devuelve la cantidad tiempo (en milisegundos) que ha pasado desde que se inició la aplicación. getenv (deprecated) reset Reiniciar la terminal. call Realiza una llamada a una función específica en un script. hasFunction Informa si existe una función en un módulo determinado. getInfo Obtiene información del dispositivo de la terminal. shutdown Apaga la terminal. getArguments Devuelve el número de parámetros de una función extern. getDayWeek Devuelve el día de la semana en la fecha. loading (deprecated) specialSOFuncs (deprecated) setGlobal Crea un atributo de ámbito global y lo asocia con una clave para su identificación. Este atributo se puede recuperar en el futuro utilizando la clave de identificación. getGlobal Recupera un atributo, de un ámbito global, que se asoció previamente con una clave de identificación. remGlobal Elimina un atributo de un ámbito global que estaba previamente asociado con una clave de identificación. loadAppModules Esta función se utiliza para recuperar la lista de versiones de los módulos cargados en la terminal. sound Hace un sonido con la nota y la duración pasadas como argumento.
getTime¶
PhSystem.getTime(mask)
Utilice getTime para obtener la hora del SO (sistema operativo).
Parámetros¶
- mask – Especifica el formato de hora.
- "HH" – Horas
- "MM" – Minutos
- "SS" – Segundos
Devuelve¶
String que contiene la hora en formato de máscara pasada por parámetro.
Ejemplo¶
function test() { var time = PhSystem.getTime("HH:MM:SS"); Dialogs.alert("Hora actual: " + time); }Salida:
Hora actual: 17:29:40
getDate¶
PhSystem.getDate(mask)
Utilice getDate para obtener la fecha del SO (sistema operativo).
Parámetros¶
- mask – Especifica el formato de la fecha.
- “DD” – Día
- “MM” – Mes
- "YY" – Año de dos dígitos
- "YYYY" – Año de cuatro dígitos
Devuelve¶
String que contiene la fecha en el formato pasado por parámetro.
Ejemplo¶
function test() { var date = PhSystem.getDate("DD/MM/YYYY"); Dialogs.alert("Fecha actual: " + date); }Salida:
Fecha actual: 05/04/2017
getSerialNumber¶
PhSystem.getSerialNumber()
Utilice getSerialNumber para obtener el número de serie de la terminal.
Devuelve¶
String que contiene el número de serie de la terminal.
Ejemplo¶
function test() { var sn = PhSystem.getSerialNumber(); Dialogs.alert("Número de serie: " + sn); }Salida:
Número de serie: 1689090088
delay¶
PhSystem.delay(ms)
Suspende la ejecución del script actual durante un período de tiempo especificado en milisegundos.
Parámetros¶
- ms – Integer
Devuelve¶
Ejemplo¶
function test() { PhSystem.delay(1000); //Aguarda 1 segundo }
setDate¶
PhSystem.setDate(Year, Month, Day)
Utilice setDate para cambiar la fecha del SO.
Parámetros¶
- Year – Integer. Debe ser superior a 2000.
- Month – Integer. Los valores deben estar entre el 1 (enero) y el 12 (diciembre)
- Day – Integer
Devuelve¶
Se genera una devolución invalid si alguno de los parámetros no se puede convertir a integer. En caso de éxito, se vuelve true, lo que indica que se cambió la fecha. En caso de error, se vuelve false.
Ejemplo¶
function test() { if (PhSystem.setDate(2017, 3, 10)) { var newDate = PhSystem.getDate("DD/MM/YYYY"); Dialogs.alert("Fecha cambiada a: " + newDate); } }Salida:
Fecha cambiada a: 10/03/2017
setTime¶
PhSystem.setTime(Hour, Min, Sec)
Utilice setTime para cambiar la hora del sistema operativo.
Parámetros¶
- Hour – Integer
- Min – Integer
- Sec – Integer
Devuelve¶
Se genera una devolución invalid si alguno de los parámetros no se puede convertir a un número Integer. En caso de éxito, esta función se vuelve true, lo que indica que se cambió la hora. En caso de error, se vuelve false.
Ejemplo¶
function test() { if (PhSystem.setTime(17, 15, 2)) { var newTime = PhSystem.getTime("HH:MM:SS"); Dialogs.alert("Hora cambiada a: " + newTime); } }Salida:
Hora cambiada a: 17:15:02
getPOSType¶
PhSystem.getPOSType()
PhStstem.getPOSType()
Devuelve un número único para cada modelo de terminal. Este número se puede mapear de acuerdo con las constantes descritas en la siguiente table.
Actualmente son admitidos las siguientes terminales:
Constantes Tipo de Terminal Valor PhSystem.PCWIN PC/Windows 5 PhSystem.EVX520 VeriFone Vx520 36 PhSystem.EVX680 VeriFone Vx680 37 PhSystem.OVx670 VeriFone Vx670 38 PhSystem.IWL281 Ingenico IWL281 40 PhSystem.ICT250 Ingenico ICT250 41 PhSystem.IWT251 Ingenico IWT251 48 PhSystem.EVX690 VeriFone Vx690 49 PhSystem.PD200 PAX D200 51 PhSystem.PS920 PAX S920 50 PhSystem.M5000 Ingenico M5000 53 Ejemplo¶
function test() { if (PhSystem.getPOSType() == PhSystem.PS920) { Dialogs.alert("¡Soy un S920!"); } }Salida:
¡Soy un S920!
beep¶
PhSystem.beep(interval)
Beep en el intervalo especificado.
Parámetros¶
- interval – intervalo de tiempo en milisegundos. Después del intervalo, el beep del mensaje terminará.
Devuelve¶
Devuelve una string vacía. Si el argumento interval no se puede convertir a integer, se vuelve invalid.
Ejemplo¶
function beep_test() { PhSystem.beep(100); }
statusBar¶
PhSystem.statusBar(show)
Cuando está activa, la barra de estado presenta información relacionada con el estado de la terminal, como el nivel de la batería y la señal GPRS. Solo disponible en modo texto.
Parámetros¶
- show – boolean. Cuando true, muestra la barra de estado en la pantalla.
Devuelve¶
Undefined.
Ejemplo¶
PhSystem.statusBar(Show);
getTickCount¶
PhSystem.getTickCount()
Devuelve cuánto tiempo (en milisegundos) ha pasado desde que se inició la aplicación.
Devuelve¶
Un número que representa la hora actual. Si esta operación no es compatible, la devolución será invalid.
Ejemplo¶
function test() { var tInit = PhSystem.getTickCount(); PhSystem.delay(1000); var tEnd = PhSystem.getTickCount(); Dialogs.alert("Tiempo corrido: " + (tInit - tEnd) + "ms"); }Salida:
Tiempo corrido: 1000ms
getenv (deprecated)¶
PhSystem.getenv(name)
reset¶
PhSystem.reset(nextApp, lastApp)
Reiniciar la terminal.
Parámetros¶
- nextApp – String. Nombre de la aplicación que se iniciará después del reinicio.
- lastApp – String. Nombre de la aplicación actual que se está ejecutando.
Devuelve¶
boolean. Se vuelve false si no puedes reiniciar la terminal.
Ejemplo¶
function test { PhSystem.reset("PhVM", "PhVM"); }
call¶
PhSystem.call(module, function, params)
Realiza una llamada a la función requerida por parámetro. La Función debe ser "extern" para que la call pueda llamarla.
Obs.: Si el número de parámetros no es compatible con la lista pasada o si la Función no se encuentra, el intérprete saldra con error.Parámetros¶
- module – Nombre del módulo donde se encuentra la función.
- function – Nombre de la función a realizar.
- params – Lista de parámetros a pasar a función.
Devuelve¶
Ejemplo¶
function test { var module = "package://test#main.wmlsc"; PhSystem.call(module, "testCall", ["arg1", "arg2"]); }
hasFunction¶
PhSystem.hasFunction(module, function)
Utilice esta función para comprobar si hay una función en un módulo determinado.
Parámetros¶
- module – String. Valor del módulo que se buscará.
- function – String. Valor relacionado con la función que se buscará.
Devuelve¶
Devuelve true si hay y false si no hay función o módulo.
Ejemplo¶
function test { var module = "package://test#main.wmlsc"; var func = "main"; if(PhSystem.hasFunction(module, func)) { PhSystem.call(module, func, []); } }
getInfo¶
PhSystem.getInfo(info)
Recuperar información de la terminal.
Parámetros¶
- info – Información a recuperar.
Devuelve¶
Devuelve la información requerida.
Atributos¶
Atributo Descripción OS_VERSION Versión del sistema operativo. MODEL_HARDWARE Modelo de hardware. FACTORY_DATE Fecha de fabricación. COUNTRY_CODE Código de país. TOUCH_SCREEN_SUPPORT Admite interfaz de pantalla táctil. FLASH_SIZE Tamaño de la memoria FLASH en Kilobytes. RAM_SIZE Tamaño de la memoria RAM en Kilobytes. ETHERNET_SUPPORT Admite comunicación ethernet. MEMORY_CARD_SUPPORT Soporte de tarjeta de memoria. GSM_GPRS_SUPPORT Admite comunicación GPRS. WIFI_SUPPORT Suporte de comunicación Wifi. DISPLAY_WIDTH Número de columnas en la visualización textual. FLASH_FREE Memoria FLASH disponible en Kilobytes. RAM_FREE Memória RAM disponible en Kilobytes. HAS_BATTERY Tiene batería interna HAS_CHIP Indica la presencia de tarjeta SIM en la terminal. NUM_PORT_SERIAL Número de puertos serie. NUM_PORT_USB Número de puertos USB. NATIVE_MODULES Módulos nativos de la terminales . NATIVE_IDENTIFICATION Identificación nativos de la terminal. ENCODE_TYPE Definición de los caracteres de la terminal. BATTERY_LEVEL Nivel de batería (consulte la sección Niveles de batería). BATTERY_PERCENTAGE Nivel de batería en porcentaje. SDK_VERSION Versión de Terminal SDK. BATTERY_CHARGING Indica si la batería se está cargando. ALL Lista toda la información. Niveles de Batería¶
Valor Descripción 0 Sin batería 1 Nivel muy bajo 2 Nivel bajo 3 Nivel medio 4 Nivel alto 5 Completamente cargado Ejemplo¶
function test() { var osVer = PhSystem.getInfo(PhSystem.OS_VERSION); var model = PhSystem.getInfo(PhSystem.MODEL_HARDWARE); var hasTouch = PhSystem.getInfo(PhSystem.TOUCH_SCREEN_SUPPORT); //Executado em um PAX S920 Dialogs.alert( "Modelo de terminal: " + model + "\nVersión de SO: " + osVer + "\nTiene touch screen: " + hasTouch ); }Salida:
Modelo do terminal: S920 Versión de SO: Prolin2.4.77[D1] Tiene touch screen: true
shutdown¶
PhSystem.shutdown()
Apaga la terminal.
Ejemplo¶
function test() { PhSystem.shutdown(); }
getArguments¶
PhSystem.getArguments(module, function)
Devuelve el número de argumentos a los que se debe llamar la función del módulo. Obs.: Si no se puede encontrar el módulo o la función, se Devuelveá invalid
Parámetros¶
- module – String con el módulo que se va a buscar (el mismo patrón que pragma use URL)
- function – String con el nombre de la función deseada (Debe ser extern).
Devuelve¶
Integer con el número de argumentos necesarios para llamar a la función.
Ejemplo¶
function test () { var fmodule = Call#getModule(fscript, "package://phast#events/handler.wmlsc"); var fname = Call#getFunction(fscript); if (PhSystem.getArguments(fmodule, fname) == PhList.count(fparams)) { Error#setLastError(Error#E OKAY()); PhSystem.call(fmodule, fname, fparams); } }
getDayWeek¶
PhSystem.getDayWeek(strDate)
Calcula el día de la semana de una fecha pasada en el parámetro.
Parámetros¶
- strDate – String con la fecha que desea saber el día de la semana.
Devuelve¶
Devuelve el número del día de la semana. (1 = Domingo. 7 = Sábado).
Ejemplo¶
function test() { var day = PhSystem.getDayWeek(PhSystem.getDate("DD/MM/YYYY")); Dialogs.alert("Día de la semana: " + day); }Salida:
Día de la semana: 5
loading (deprecated)¶
PhSystem.loading(loading)
specialSOFuncs (deprecated)¶
PhSystem.specialSOFuncs(enableSOMenu, enableReset)
setGlobal¶
PhSystem.setGlobal(key, value)
Crea una variable de ámbito global y lo asocia con una clave para su identificación. Esta variable se puede recuperar en el futuro utilizando la clave de identificación.
Parámetros¶
- key – Clave que estará asociada a una variable global del alcance;
- value – Valor que se almacenará en la variable de alcance global.
Devuelve¶
Devuelve TRUE en caso de éxito o FALSE en caso de error.
Ejemplo¶
function global_test1() { var key = "G_VALUE"; var value = 10; if (PhSystem.setGlobal(key, value)) { Dialogs.alert("Global agregado con valor: " + value); } }Salida:
Global agregado con valor: 10
getGlobal¶
PhSystem.getGlobal(key)
Esta función se utiliza para recuperar un valor que estaba almacenado en una variable con alcance global y que estaba previamente asociado a una clave de identificación.
Parámetros¶
- key – Clave de identificación usada para identificar a variável de escopo global que contém o valor a ser recuperado.
Devuelve¶
Devuelve el valor almacenado en la variable asociada a la clave de identificación pasada como parámetro o invalid en caso de error.
Ejemplo¶
function global_test1() { var key = "G_VALUE"; if (PhSystem.setGlobal(key, 50)) { var value = PhSystem.getGlobal(key); if (isvalid value) { Dialogs.alert("Global recuperado con valor: " + value); } } }Salida:
Global recuperado con valor: 50
remGlobal¶
PhSystem.remGlobal(key)
Esta función se utiliza para eliminar un valor de una variable con alcance global que se ha asociado previamente a una clave de identificación
Parámetros¶
- key – Clave de identificación utilizada para identificar la variable de alcance global que contiene el valor a recuperar.
Devuelve¶
Devuelve el valor almacenado en la variable asociada a la clave de identificación pasada como parámetro o invalid en caso de error.
Ejemplo¶
function global_test1() { var key = "G_VALUE"; if (PhSystem.setGlobal(key, 50)) { var value = PhSystem.remGlobal(key); if (isvalid value) { Dialogs.alert("Global con valor" + value + " ha sido removido"); } } }Salida:
Global con valor 50 ha sido removido
loadAppModules.¶
PhSystem.loadAppModules(list)
Esta función se utiliza para recuperar la lista de versiones de los módulos cargados en la terminal.
Parámetros¶
- list (salida) – PhList donde se insertarán las versiones del módulo (ver PhList).
Devuelve¶
boolean, true en el éxito, false si no es posible completar la lista o invalid si se pasa un argumento no válido.
Ejemplo¶
function loadAppModules() { var list = []; if (PhSystem.loadAppModules(list)) { for(var i = 0; i < PhList.count(list); i++) { Dialogs.alert("Module: " + ModuleVersion#getName(list[i]) + "\nVersion: " + ModuleVersion#getVersion(list[i])); } }Salida:
Module: PhLib Version: 12.7.0.0 -- Module: Devices Version: 1.8.0.0 -- Module: PhGraphics Version: 1.2.0.0 -- ...
sound¶
PhSystem.sound(note, duration)
Hace un sonido con la nota y la duración pasadas como argumento.
Parámetros¶
- note – Integer
- duration – Integer con la duración (en ms) del sonido a emitir
Devuelve¶
boolean, true en el éxito, false si no es posible completar la lista o invalid si se pasa un argumento no válido.
Ejemplo¶
function sound() { PhSystem.sound(2, 100); }
PhDisplay¶
PhDisplay es la implementación de Phoebus de interfaces y definiciones para manipular texto, imágenes y fonts de pantalla(display) de terminal, utilizando el modo de tratamiento gráfico.
Sumario¶
Función Descripción clear Limpia la pantalla. putString Muestra un mensaje en la pantalla. (Compatible con plantillas POS textuales) putImage (deprecated) putBMP Muestra una imagen BMP en la pantalla. light Enciende o apaga la luz background o backlight en la pantalla de la terminal. (Compatible con plantillas POS textuales) clearLine Borra una determinada línea en la pantalla de la terminal. La línea se rellenará de acuerdo con el estilo especificado. (Compatible con plantillas POS textuales) maxColumns Devuelve el número máximo de columnas admitidas por la pantalla. maxLines Devuelve el número máximo de líneas admitidas por la pantalla. maxPxHeight Devuelve el número máximo de pixels de la visualización vertical. maxPxWidth Devuelve el número máximo de pixels de la pantalla horizontalmente. setMode Se ajusta al modo de tratamiento gráfico o de texto. getMode Devuelve el modo de tratamiento utilizado por la terminal. putStringFmt (deprecated) getStrFmtWidth (deprecated) getStrFmtHeight (deprecated) hasGraphicsSupport Indica si la terminal admite el modo de gráficos.
Estilos de visualización¶
Estilo Descripción NORMAL Texto normal. REVERSE Texto inverso. UNDERLINE texto subrayado.
Modos de manejo de operación¶
Modo Descripción NONE Modo patrón de manejar las operaciones de la pantalla. TEXT Modo patrón trata las operaciones de la pantalla como texto. GRAPHIC Modo patrón trata las operaciones en la pantalla como un gráfico.
Tamaños de font¶
Fonte Descripción Small Tamaño de letra pequeño. Medium Tamaño medio de font. Large Tamaño de letra grande.
clear¶
PhDisplay.clear()
Limpa o display.
Devuelve¶
boolean
Ejemplo:
function test() { PhDisplay.clear(); }
putString¶
PhDisplay.putString(line, column, style, message)
Muestra un mensaje en pantalla. (compatible con plantillas POS textuales)
Parámetros¶
line - integer - Valor positivo con la línea donde se mostrará el mensaje. La primera línea comienza en 0 (cero).
column - integer - Valor positivo con la columna donde se mostrará el mensaje. La dirección es de izquierda a derecha. La primera columna comienza en 0 (cero).
style – Estilo utilizado para manejar la visualización de texto. Valores posibles: PhDisplay.Normal, PhDisplay.Reverse, PhDisplay.Underline.
message - String - Mensaje que se mostrará.
Devuelve¶
boolean
Ejemplo:
function test() { PhDisplay.putString(0, 0, PhDisplay.NORMAL, "mensaje en pantalla"); }Salida:
mensaje en pantalla
putImage (deprecated)¶
PhDisplay.putImage(x, y, file)
putBMP¶
PhDisplay.putBMP(x, y, bitmap)
Muestra una imagen (BMP o PhBMP) en la pantalla.
Parámetros¶
x - interger - valor positivo con la posición inicial de la imagen horizontalmente.
y - integer - valor positivo con la posición inicial de la imagen vertical.
bitmap – Imagen Bitmap que se mostrará.
Devuelve¶
boolean
Ejemplo:
use url Bitmap "package://libs#ui/tbitmap.wmlsc"; function test () { var imageId = 0; var image = PhType.create("bitmap"); if (Bitmap#load(image, imageId)) { PhDisplay.putBMP(5, 75, image); } }Salida:
light¶
PhDisplay.light(turnOn)
Enciende o apaga la luz background o backlight en la pantalla de la terminal. (compatible con plantillas POS textuales)
Parámetros¶
turnOn – boolean - true para activar o false para desactivar.
Devuelve¶
Boolean, true en caso de éxito o false en caso de parámetro no válido.
Ejemplo:
function test() { PhDisplay.light(true); }
clearLine¶
PhDisplay.clearLine(line, attribute)
Borra una línea determinada en la pantalla de la terminal en modo texto. La línea se rellenará de acuerdo con el estilo especificado. (compatible con plantillas POS textuales)
Parámetros¶
line - integer - Número de línea que se borrará. attribute – Estilo a aplicar. Valores posibles: PhDisplay.Normal, PhDisplay.Reverse, PhDisplay.Underline.
Devuelve¶
boolean
Ejemplo:
function test() { PhDisplay.clearLine(0, PhDisplay.Normal); //Eliminar la primera línea }
maxColumns¶
PhDisplay.maxColumns()
Devuelve el número máximo de columnas admitidas por la pantalla en modo texto.
Devuelve¶
Integer positivo con el número de columnas.
Ejemplo:
var maxCols = PhDisplay.maxColumns(); Dialogs.alert(maxCols);
maxLines¶
PhDisplay.maxLines()
Devuelve el número máximo de líneas admitidas por la pantalla en modo texto.
Devuelve¶
Integer positivo con el número de líneas.
Ejemplo:
var maxLins = PhDisplay.maxLines(); Dialogs.alert(maxLins);
maxPxHeight¶
PhDisplay.maxPxHeight()
Devuelve el número máximo de pixel de la visualización vertical.
Devuelve¶
Integer positivo con el número máximo de píxeles verticalmente.
Ejemplo:
var pxHeight = PhDisplay.maxPxHeight(); Dialogs.alert(pxHeight);
maxPxWidth¶
PhDisplay.maxPxWidth()
Devuelve el número máximo de pixel de la pantalla horizontalmente.
Devuelve¶
Integer positivo con un número máximo de pixel horizontalmente.
Ejemplo:
var pxWidth = PhDisplay.maxPxWidth(); Dialogs.alert(pxWidth);
setMode¶
PhDisplay.setMode(mode)
Se ajusta al modo de tratamiento gráfico o de texto.
Parámetros¶
mode – Integer positivo con modo de tratamiento. Valores posibles: PhDisplay.NONE, PhDisplay.TEXT, PhDisplay.GRAPHIC.
Devuelve¶
boolean, donde true en caso de éxito o _false _ en parámetro no válido.
Ejemplo:
function test() { if (PhDisplay.setMode(PhDisplay.TEXT)) { Dialogs.alert("Modo de visualización textual definido"); } }Salida:
Modo de visualización textual definido
getMode¶
PhDisplay.getMode()
Devuelve el modo de tratamiento de la pantalla utilizada por la terminal.
Devuelve¶
Integer positivo con modo de tratamiento de visualización. Valores posibles: PhDisplay.NONE, PhDisplay.TEXT, PhDisplay.GRAPHIC.
Ejemplo:
function test() { var mode = PhDisplay.getMode(); if (mode == PhDisplay.TEXT) { Dialogs.alert("Modo textual"); } else { Dialogs.alert("Modo gráfico"); } }Salida:
Modo gráfico
putStringFmt (deprecated)¶
PhDisplay.putStringFmt(...)
getStrFmtWidth (deprecated)¶
PhDisplay.getStrFmtWidth(fontName, size, text)
getStrFmtHeight (deprecated)¶
PhDisplay.getStrFmtHeight(fontName, size, text)
hasGraphicsSupport¶
PhDisplay.hasGraphicsSupport()
Indica si la terminal admite el modo de gráficos.
Devuelve¶
boolean, donde true si se admite o _ false_ en caso contrario.
Ejemplo:
function test() { if (PhDisplay.hasGraphicsSupport()) { Dialogs.alert("Soporta el modo de gráficos"); } else { Dialogs.alert("No soporta el modo de gráficos"); } }Salida:
Soporta el modo de gráficos
PhKeyBoard¶
PhKeyBoard es la implementación de Phoebus de interfaces y definiciones para manipular las entradas del teclado de la terminal.
Sumario¶
Función Descripción getKey Devuelve una entrada en el teclado de la terminal. clear Borre el búfer del teclado de la terminal, que puede contener datos no leídos relacionados con las teclas pressionadas. enable Habilita o deshabilita el teclado de la terminal. backLight Seta a intensidade da luz do teclado. KEY_ENTER Establece el valor 13 en la tecla Enter. KEY_ESC Establece el valor 27 en la tecla Esc. KEY_F1 Establece el valor 14 en la tecla F1. KEY_F2 Establece el valor 15 en la tecla F2. KEY_F3 Establece el valor 16 en la tecla F3. KEY_F4 Establece el valor 17 en la tecla F4. KEY_UP Establece el valor 4 en la tecla de flecha hacia arriba. KEY_DOWN Establece el valor 3 en la tecla de flecha hacia abajo. KEY_LEFT Establece el valor 1 en la tecla de flecha izquierda. KEY_RIGHT Establece el valor 2 en la tecla de flecha derecha. KEY_ALPHA Establece el valor 7 en la tecla Insert. KEY_CLEAR Establece el valor 8 en la tecla Back Space. KEY_NONE Establece valor en ninguna tecla. KEY_SHIFT Establece el valor 6 en la tecla tecla Shift. KEY_PAPER Establece el valor 28 en la tecla tecla feed paper. KEY_HOME Establece el valor 11 en la tecla tecla Home. KEY_00 Establece el valor 5 en la tecla tecla 0.
getKey¶
PhKeyBoard.getKey(timeout)
Devuelve una entrada en el teclado de la terminal.
Parámetros¶
- timeout – Integer positivo con el tiempo, en milisegundos, que se esperará la entrada de datos. O booleano con true que indica bloqueo hasta que se realiza una entrada.
Devuelve¶
Integer positivo con entrada de teclado válida o invalid en caso de parámetro no válido.
Ejemplo¶
function test () { var result = false var key = invalid; key = PhKeyBoard.getKey(3000); //Espera 3 segundos if (isvalid key && key != PhKeyBoard.KEY_NONE) { //Espere hasta que se vuelva a presionar la misma tecla while (PhKeyBoard.getKey(false) == key) { result = true; } } return result; }
clear¶
PhKeyBoard.clear()
Borra el búfer del teclado de la terminal, que puede contener datos no leídos relacionados con las teclas pressionadas.
Ejemplo¶
function test() { PhKeyBoard.clear(); }
backLight¶
PhKeyBoard.backLight(value)
Ajusta la intensidad de la luz del teclado.
Obs: Función disponible apenas en los terminales de la línea PAX y Vx520
Parámetros¶
- value – valor en bytes de la intensidad de la luz del teclado (0 o 1)
Ejemplo¶
function test() { PhKeyBoard.backLight(0); }
enable¶
PhKeyBoard.enable(enable)
Habilita o deshabilita el teclado de la terminal.
Parámetros¶
- enable – Boolean como true para habilitar y false para deshabilitar el teclado.
Devuelve¶
Boolean, true en caso de éxito o false en caso de parámetro no válido.
Ejemplo¶
function test() { PhKeyBoard.enable(true); }
PhLog¶
Genera un log de acuerdo con el nivel especificado durante la compilación del script.
Sumario¶
Función Descripción error Genera un log de erro. warning Genera un log de warning. info Genera un log de info. debug Genera un log de debug. output Configurar stream de salida
error¶
PhLog.error(msg)
Muestra un mensaje de error en la stream de log.
Parámetros¶
- msg – String o Buffer con el mensaje que se mostrará en el log.
Devuelve¶
Si la función está habilitada, se vuelve true en el éxito o false en caso de error, de lo contrario se vuelve invalid.
Ejemplo¶
function test() { var id = "12345"; var getId = Dialogs.prompt("ID ", ""); if (getId != id) { PhLog.error("ERRO: ID no revises"); } }
warning¶
PhLog.warning(msg)
Mostrar mensaje de warning en la stream de log.
Parámetros¶
- msg – String o Buffer con el mensaje que se mostrará en el log.
Devuelve¶
Si la función está habilitada, se vuelve true en el éxito o false en caso de error, si no se vuelve invalid.
Ejemplo¶
function test(index) { var lista = PhList.create(); var getIdx = invalid; PhList.add(lista, "a"); PhList.add(lista, "b"); PhList.add(lista, "c"); if (index <= PhList.count(lista) - 1) { getIdx = PhList.get(lista, index); } else { PhLog.warning("El índice no existe en la lista"); } }
info¶
PhLog.info(msg)
Muestra un mensaje de info en el strean de log.
Parámetros¶
- msg – String o Buffer con el mensaje que se mostrará en el log.
Devuelve¶
Si la función está habilitada, se vuelve true en el éxito o false en caso de error, si no se vuelve invalid.
Ejemplo¶
function test() { PhLog.info("[ENTRADA] --> test()"); /* * ... code */ PhLog.info("[SALIDA] ---> test()"); }
debug¶
PhLog.debug(msg)
Mostrar mensaje de depuración en la stream de log.
Parámetros¶
- msg – String o Buffer con el mensaje que se mostrará en el log.
Devuelve¶
Si la función está habilitada, se vuelve true en el éxito o false en caso de error, si no se vuelve invalid.
Ejemplo¶
function test() { var x = Dialogs.prompt("ID", ""); PhLog.debug("x = " + x); }
output¶
PhLog.output(stream)
Configure una stream de salida para el log, mientras no se utilice, la aplicación registrará en la stream patrón previamente configurada.
Parámetros¶
- stream – Stream de salir a la log o invalid para liberar memoria de stream.
Devuelve¶
true en el éxito o false en caso de error.
Ejemplo¶
function test () { var eth = DeviceEth#create(""); var stream = invalid; if (isvalid Device#connect(eth)) { stream = Comm#socket("127.0.0.1", 16668, Comm#COMM_PRTCL_TCP(), 60000); if(Comm#connected(stream)) PhLog.output(stream); //Configurar stream de salida else PhLog.info("Socket no conectado"); } else { PhLog.error.alert("Device ERROR: " + String.toString(Device#getError(eth))); } PhLog.output(invalid); //Liberando stream }
Tipos de Datos¶
PhList¶
PhList es la implementación de Phoebus de interfaces y definiciones para la manipulación de listas de objetos.
Sumario¶
Función Descripción add Inserta un elemento al final de la lista especificada. addTo Inserta un elemento en una posición específica en la lista especificada. Si hay un elemento en la posición indicada, este y los demás se desplazarán hacia la derecha. create Cree un handle para una lista. clear Elimina todos los elementos de la lista. count Devuelve el número de elementos presentes en una lista. contains Comprueba si un elemento está presente en la lista. empty Comprueba si la lista está vacía. get Devuelve un elemento de la lista en la posición indicada. indexOf Comprueba el índice de un elemento de la lista. isList Comprueba si el argumento recibido es una lista. remove Elimina el artículo en la posición indicada. Los demás se desplazarán hacia la izquierda. set Reemplaza un elemento de la lista presente en una posición específica.
add¶
PhList.add(list, element)
Inserta un elemento en una posición específica en la lista especificada. Si hay un elemento en la posición indicada, este y los demás se desplazarán hacia la derecha.
Parámetros¶
- list – Handle de la lista donde se insertará el elemento.
- element – Elemento a insertar en la lista.
Devuelve¶
booleano, true en caso de éxito o false si el elemento no se puede insertar. Si no es posible utilizar los parámetros invalid, se Devuelveán.
Ejemplo¶
function test () { var list = [[], [], []]; if (isvalid list) { PhList.add(list[0], 1); PhList.add(list[0], 2); PhList.add(list[1], "str1"); PhList.add(list[1], "str2"); PhList.add(list[2], true); PhList.add(list[2], false); for(var i = 0; i < PhList.count(list); i++) { for(var j = 0; j < PhList.count(list[i]); j++) { Dialogs.alert("Item ["+ i +"]["+ j +"]: "+ list[i][j]); } } } }Salida:
Item[0][0]: 1 -- Item[0][1]: 2 -- Item[1][0]: str1 -- Item[1][1]: str2 -- Item[2][0]: true -- Item[2][1]: false --
addTo¶
PhList.addTo(list, element, index)
Inserta un elemento en una posición específica en la lista.
Parámetros¶
- list – Handle de la lista donde se insertará el elemento.
- element – Item a ser insertado en la lista.
- index – Índice en la lista donde se insertará el elemento.
Devuelve¶
booleano, true en caso de éxito o false si el elemento no se puede insertar. Si no es posible utilizar los parámetros invalid, se Devuelveán.
Ejemplo¶
function test () { var list = PhList.create(); if (isvalid list) { PhList.add(list, "StringTest", 0); Dialogs.alert("Item: " + list[0]); } }Salida:
Item: StringTest
create¶
PhList.create()
Crea uno handle para una lista.
Obs: También se puede crear una lista usando notación
[], permitiendo que se inicialice en su declaración.Devuelve¶
Un handle a una lista o invalid en caso de error.
Ejemplo¶
function test() { var list = PhList.create(); var list2 = []; var list3 = [1, 2, 3]; }
clear¶
PhList.clear(list)
Elimina todos los elementos de la lista.
Parámetros¶
- list – Handle de la lista que se va a borrar.
Devuelve¶
booleano, true en caso de éxito o false si no es posible borrar la lista. Si no es posible utilizar los parámetros invalid, se Devuelveán.
Ejemplo¶
function test () { var list = PhList.create(); if (isvalid list) { PhList.add(list, 10); PhList.add(list, 15); PhList.clear(list); } }
count¶
PhList.count(list)
Devuelve el número de elementos presentes en una lista.
Parámetros¶
- list – Handle de la lista.
Devuelve¶
Integer positivo con el número de elementos de la lista. Si no es posible utilizar los parámetros, se volverá invalid.
Ejemplo¶
function test () { var list = PhList.create(); if (isvalid list) { PhList.add(list, 10); PhList.add(list, 15); var listCount = PhList.count(list); //Debe retornar 2 } }
contains¶
PhList.contains(list, element)
Comprueba si un elemento está presente en la lista indicada.
Parámetros¶
- list – Handle de la lista.
- element – Elemento a ser encontrado.
Devuelve¶
boolean, true en caso de que la lista contenga el elemento especificado o false en caso contrario.
Ejemplo¶
function test () { var result = false; var list = PhList.create(); if (isvalid list) { PhList.add(list, "item 11"); PhList.add(list, "item 22"); if (PhList.contais(list, "item 33")) result = true; } return result; }
empty¶
PhList.empty(list)
Comprueba si la lista especificada está vacía.
Parámetros¶
- list – Handle de la lista.
Devuelve¶
boolean, false en caso de que la lista contenga elementos o true si está vacío. Si no es posible utilizar los parámetros invalid Será devolto.
Ejemplo¶
function test () { var list = PhList.create(); if (isvalid list) { PhList.add(list, 10); PhList.add(list, 15); var listIsEmpty = PhList.empty(list); } }
get¶
PhList.get(list, index)
Devuelve un elemento de la lista en la posición indicada.
Obs: Un elemento de la lista también se puede recuperar usando notación
list[idx], conidxsiendo índice del elemento en la lista.Parámetros¶
- list – Handle de la lista.
- index – Índice en la lista donde debe estar presente el artículo.
Devuelve¶
El artículo en la posición indicada o lista vacía. Si no es posible utilizar los parámetros, invalid será devolto.
Ejemplo¶
function test () { var list = PhList.create(); if (isvalid list) { PhList.add(list, 10); PhList.add(list, 15); PhList.add(list, 20); PhList.remove(list, 0); var item = PhList.get(list, 0); //Devuelve o 10 var item2 = list[1]; //Devuelve o 15 } }
indexOf¶
PhList.indexOf(list, element)
Comprueba el índice de un elemento, si está presente, en la lista.
Parámetros¶
- list – Handle de la lista.
- element – Elemento a encontrar.
Devuelve¶
Integer positivo con el índice de la primera aparición del elemento encontrado, o -1, si la lista no contiene el elemento indicado.
Ejemplo¶
function test () { var result = invalid; var list = PhList.create(); if (isvalid list) { PhList.add(list, "item 11"); PhList.add(list, "item 22"); result = PhList.indexOf(list, "item 22"); } return result; }
isList¶
PhList.isList(obj)
Comprueba si el argumento recibido es un PhList.
Parámetros¶
- obj – Objeto a comprobar.
Devuelve¶
boolean, true en caso de que el argumento recibido sea un PhList o false caso contrário.
Ejemplo¶
function test() { var list = PhList.create(); if (PhList.isList(list)) { Dialogs.alert("Lista creada!"); } }
remove¶
PhList.remove(list, index)
Elimina el artículo en la posición indicada. Los demás se desplazarán hacia la izquierda.
Parámetros¶
- list – Handle de la lista donde se eliminará el elemento.
- index – Índice de la lista donde se eliminará el elemento.
Devuelve¶
Elemento eliminado. Si no es posible utilizar los parámetros, invalid será devolto.
Ejemplo¶
function test () { var list = PhList.create(); if (isvalid list) { PhList.add(list, 10); PhList.add(list, 15); PhList.remove(list, 0); //eliminar 10 } }
set¶
PhList.set(list, index, element)
Reemplaza un elemento de la lista presente en una posición específica.
Obs: Un elemento de la lista también se puede reemplazar usando la notación
list[idx] = value;.Parámetros¶
- list – Handle de la lista donde se reemplazará el elemento.
- index – Índice en la lista de elementos a reemplazar.
- element – Elemento que sustituirá a lo que está en el índice indicado.
Devuelve¶
boolean, true en caso de éxito o false si no es posible reemplazar el elemento. Si no es posible utilizar los parámetros invalid, se Devuelveán.
Ejemplo¶
function test () { var list = PhList.create(); if (isvalid list) { PhList.add(list, 10); PhList.add(list, 15); PhList.set(list, 1, 20); //La lista tiene 10 e 20 list[0] = 30; //La lista tiene 30 e 20 } }
PhStruct¶
Es una estructura que contiene varias variables, que pueden ser de diferentes tipos, agrupadas para facilitar su uso.
Sumario¶
Función Descripción create Cree una nueva PhStruct en el formato: \"{ATTRIBUTE:TYPE;}\". get Recupera el valor de una variable de PhStruct. set Asigna el valor de una variable PhStruct. getDefinition Recupera la definición String utilizada para crear una PhStruct. define Crea una nueva PhStruct basada en la definición pasada String y le da un nombre. load Cargue una PhStruct usando el nombre de una estructura ya creada. undefine Elimine la definición de PhStruct String. getAsPhType Devuelve el valor de un atributo PhStruct comoPhType. copy Hace una copia de PhStruct para una nueva referencia. isStruct Comprueba si el argumento recibido es un PhStruct.
create¶
PhStruct.create(definition)
Cree una nueva PhStruct por defecto: \"{ATTRIBUTE:TYPE;}\". Ex.: PhStruct.create (\"{id:word;type:byte;data:list}\");".
Parámetros¶
- definition – String que contiene los tipos y atributos que utilizará PhStruct.
Devuelve¶
Devuelve una referencia a la nueva instancia de PhStruct o invalid, en caso de error.
Ejemplo¶
function test() { var stTest = PhStruct.create( "{" + " name {first : String; last : String};" + " jobTitle {" + " classe : String;" + " date {" + " day : word;" + " month : word;" + " year : word" + " }" + " };" + " next : struct" + "}" ); }
get¶
PhStruct.get(struct, attribute)
Recupera el valor de un atributo de PhStruct.
Parámetros¶
- struct – Referencia de una variable de tipo PhStruct.
- attribute – Nombre del Atributo.
Devuelve¶
Devuelve el valor específico de PhStruct en caso de éxito o invalid en caso de error.
Ejemplo¶
function test () { var stTest = PhStruct.create ( "{" + " name {first : String; last : String};" + " jobTitle {" + " classe : String;" + " date {" + " day : word;" + " month : word;" + " year : word" + " }" + " };" + " next : struct" + "}"); } var result = PhStruct.get(stTest, "name.first"); }
set¶
PhStruct.set(struct, attribute, value)
Asigna el valor de una variable PhStruct.
Parámetros¶
- struct – Referencia de una variable de tipo PhStruct.
- attribute – Nombre del Atributo.
- value – Valor de atributo.
Devuelve¶
Devuelve true si puede asignar el valor, false, si no puedes o invalid, en caso de que algún parámetro sea incorrecto.
Ejemplo¶
function test() { var result = false; var stTest = PhStruct.create( "{" + " name {first : String; last : String};" + " jobTitle {" + " classe : String;" + " date {" + " day : word;" + " month : word;" + " year : word" + " }" + " };" + " next : struct" + "}" ); result = PhStruct.set(stTest, "name.first", "PrimerNombre") && PhStruct.set(stTest, "name.last", "UltimoNombre") && PhStruct.set(stTest, "jobTitle.date.day", "12") && PhStruct.set(stTest, "jobTitle.date.month", "12") && PhStruct.set(stTest, "jobTitle.date.year", "1900") && PhStruct.set(stTest, "next", PhType.create("list")); return result; }
getDefinition¶
PhStruct.getDefinition(struct)
Recupera la definición String utilizada para crear una PhStruct.
Parámetros¶
- struct – Referencia de una variable de tipo PhStruct;
Devuelve¶
Devuelve la definición String o una String vacía.
Ejemplo¶
function test () { var stTest = PhStruct.create ( "{" + " name {first : String; last : String};" + " jobTitle {" + " classe : String;" + " date {" + " day : word;" + " month : word;" + " year : word" + " }" + " };" + " next : struct" + "}"); if (isvalid stTest) { Dialogs.alert(PhStruct.getDefinition(stTest)); } }Salida:
{ name {first : String; last : String}; jobTitle { classe : String; date { day : word; month : word; year : word } }; next : struct }
define¶
PhStruct.define(definition, name)
Crea una nueva PhStruct basada en la definición pasada String y le da un nombre.
Parámetros¶
- definition – String que contiene los tipos y atributos que utilizará PhStruct.
- name – String que contiene el nombre PhStruct.
Devuelve¶
Devuelve true, en el éxito o false, en caso de error.
Ejemplo¶
function test() { var definition = "{" + " name {first : String; last : String};" + " jobTitle {" + " classe : String;" + " date {" + " day : word;" + " month : word;" + " year : word" + " }" + " };" + " next : struct" + "}"; if (PhStruct.define(definition, "stTest")) { Dialogs.alert("Struct definido"); } }Salida:
Struct definido
load¶
PhStruct.load(name)
Cargue una PhStruct usando el nombre de una estructura ya creada.
Parámetros¶
- name – String que contiene el nombre PhStruct utilizado al llamar a la función PhStruct.define().
Devuelve¶
Devuelve una referencia a un PhStruct o invalid.
Ejemplo¶
function test () { var definition = "{" + " name {first : String; last : String};" + " jobTitle {" + " classe : String;" + " date {" + " day : word;" + " month : word;" + " year : word" + " }" + " };" + " next : struct" + "}"; if (PhStruct.define(definition, "stTest")) { var stTest = PhStruct.load("stTest"); if (isvalid stTest) { Dialogs.alert("Struct cargado"); } } }Salida:
Struct cargado
undefine¶
PhStruct.undefine(name)
Elimine la definición de PhStruct String.
Parámetros¶
- name – String que contiene el nombre PhStruct utilizado al llamar a la función PhStruct.define().
Devuelve¶
Devuelve true, en caso de éxito o false en caso de error.
Ejemplo¶
function test() { var definition = "{" + " name {first : String; last : String};" + " jobTitle {" + " classe : String;" + " date {" + " day : word;" + " month : word;" + " year : word" + " }" + " };" + " next : struct" + "}"; if (PhStruct.define(definition, "stTest")) { if (PhStruct.undefine("stTest")) { Dialogs.alert("Definición eliminada"); } } }Salida:
Definición eliminada
getAsPhType¶
PhStruct.getAsPhType(struct, attribute)
Devuelve el valor de un atributo de PhStruct como Phtype.
Parámetros¶
- struct – Referencia de una variable de tipo PhStruct;
- attribute – Nombre del Atributo.
Devuelve¶
Devuelve el valor del atributo específico de la estructura como PhType o invalid.
Ejemplo¶
function test() { var stTest = PhStruct.create( "{" + " name {first : String; last : String};" + " jobTitle {" + " classe : String;" + " date {" + " day : word;" + " month : word;" + " year : word" + " }" + " };" + " next : struct" + "}" ); PhStruct.set(stTest, "name.first", "PrimerNombre"); var value = PhStruct.getAsPhType(stTest, "name.first"); Dialogs.alert("value: " + PhType.toString(value)); }Salida:
PrimerNombre
copy¶
PhStruct.copy(newStruct, oldStruct)
Hace una copia de PhStruct para una nueva referencia.
Parámetros¶
- newStruct – Referencia de una nueva variable de tipo PhStruct.
- oldStruct – Referencia de la variable original de tipo PhStruct.
Devuelve¶
Devuelve true, en caso de éxito o false en caso de error.
Ejemplo¶
function test() { var definition = "{" + " name {first : String; last : String};" + " jobTitle {" + " classe : String;" + " date {" + " day : word;" + " month : word;" + " year : word" + " }" + " };" + " next : struct" + "}"; if (PhStruct.define(definition, "stTest")) { var newStruct = PhStruct.load("stTest"); var oldStruct = PhStruct.load("stTest"); PhStruct.set(oldStruct, "name.first", "PrimerNombre"); PhStruct.set(oldStruct, "name.last", "UltimoNombre"); if (PhStruct.copy(newStruct, oldStruct)) { Dialogs.alert("name: " + PhStruct.get(newStruct, "name.first")); } } }Salida:
PrimerNombre
isStruct¶
PhStruct.isStruct(obj)
Comprueba si el argumento recibido es un PhStruct.
Parámetros¶
- obj – Objeto a comprobar.
Devuelve¶
boolean, true en caso de que el argumento recibido sea un PhStruct o false caso contrário.
Ejemplo¶
function test() { var stTest = PhStruct.create(""); if (PhStruct.isStruct(stTest)) { Dialogs.alert("Struct creada!"); } }Salida:
Struct creada!
PhBuffer¶
Clase responsable de la manipulación arrays del byte.
Sumario¶
Función Descripción create Crea uno buffer. getSize Recupera el tamaño del buffer en bytes. resize Cambie el tamaño del búfer. get Recupera el valor de un elemento dentro del buffer. set Establece el valor de un elemento dentro de un buffer. copy Copia una parte de un buffer pasado a otro. getAsBigEndian Rutina de utilidad que interpreta una parte del búfer como un número en el formato BigEndian ver: Endianness. getAsLittleEndian Al igual que getAsBigEndian pero en formato LittleEndian. getAsHexString Devuelve una String con notación hexadecimal que representa la buffer. getAsString Devuelve el buffer como una String. equals Comprueba si dos buffers tienen el mismo contenido. isBuffer Comprueba si el argumento recibido es un buffer.
create¶
PhBuffer.create(source)
Crea uno buffer.
Parámetros¶
- source – String con el contenido a ser llenado en el buffer o integer indicando su tamaño.
Obs: Se puede crear un buffer usando una String con notación hexadecimal (0x0000..00). En este caso, cada byte se representará como dos caracteres en la String.Devuelve¶
Devuelve invalid si hay parámetros no compatibles con la función, de lo contrario, el PhBuffer creado.
Ejemplo¶
/** * Criar um buffer zerado com tamanho 8 */ function getIV() { var buffer = PhBuffer.create("0x0000000000000000"); if (isvalid buffer) { Dialogs.alert("Buffer creado"); } }Salida:
Buffer creado/** * Criar um buffer zerado com tamanho 10 */ function newBuffer() { var buffer = PhBuffer.create(10); if (isvalid buffer) { Dialogs.alert("Buffer creado"); } }Salida:
Buffer creado
getSize¶
PhBuffer.getSize(phbuffer)
Recuperar el tamaño de PhBuffer en bytes.
Parámetros¶
- phbuffer – Controlador para un PhBuffer
Devuelve¶
Integer positivo con el número de bytes asignados a buffer. Si el parámetro de entrada no es un PhBuffer, el método Devuelveá invalid
Ejemplo¶
/** * Criar um buffer e retornar o tamanho em bytes */ function getSize() { var buffer = PhBuffer.create("0xAA0000000000EFFF"); Dialogs.alert("Buffer creado con tamaño: PhBuffer.getSize(buffer)"); }Salida:
Buffer creado con tamaño: 8
resize¶
PhBuffer.resize(phbuffer, size)
Cambie el tamaño del ** PhBuffer ** pasado al nuevo tamaño indicado por size en bytes. Obs.: Si el tamaño es menor que el actual, el contenido al final del buffer será descartado.
Parámetros¶
- phbuffer – Controlador para un PhBuffer
- size – Integer positivo con nuevo tamaño en bytes.
Devuelve¶
boolean, true en el éxito o false si no es posible asignar más memoria. Si no es posible utilizar los parámetros invalid será devolto.
Ejemplo¶
function test() { var buffer = PhBuffer.create("0xAA0000000000EFFF"); if (PhBuffer.resize(buffer, 5)) { Dialogs.alert("Nuevo tamaño: " + PhBuffer.getSize(buffer)); } }Salida:
Nuevo tamaño: 5
get¶
PhBuffer.get(phbuffer, index)
Recuperar el valor de un artículo del buffer
Parámetros¶
- phbuffer – Controlador para un PhBuffer
- index – Integer con la posición deseada. Obs.: Ver reglas de índice en WAP 194
Devuelve¶
Integer con el valor del byte seleccionado por index.
Ejemplo¶
function test() { var buffer = PhBuffer.create("0xAA0000000000EFFF"); Dialogs.alert("Valor: " + PhBuffer.get(buffer, 0)); }Salida:
Valor: 170
set¶
PhBuffer.set(phbuffer, index, value)
Establece una posición buffer específica en el valor deseado. Obs.: El valor se truncará a 8 bits
Parámetros¶
- param – controlador para un PhBuffer
- index – Integer con la posición deseada. Obs.: Ver reglas para índices WAP 194
- value – Valor a establecer en la posición indicada dentro del buffer
Devuelve¶
boolean, true en el éxito o false en caso de error.
Ejemplo¶
function test() { var buffer = PhBuffer.create(1); if (PhBuffer.set(buffer, 0, 10)) { Dialogs.alert("Valor: " + PhBuffer.get(buffer, 0)); } }Salida:
Valor: 10
copy¶
PhBuffer.copy(src, srcPos, dest, destPos, length)
Copia parte de un PhBuffer a otro.
Parámetros¶
- src – Controlador para un PhBuffer con los bytes a copiar
- srcPos – Posición para el inicio de la copia
- dest – Controlador para un PhBuffer de destino
- destPos – Posición del lugar de destino
- length – Tamaño total a copiar en bytes
Devuelve¶
boolean, true en el éxito o false si el destino no admite la copia
Ejemplo¶
function test() { var src = PhBuffer.create("0xAA0000EFFF"); var dst = PhBuffer.create(5); PhBuffer.copy(src, 0, dst, 0, 5); var str = PhBuffer.getAsHexString(dst, 0, PhBuffer.getSize(dst)); Dialogs.alert("Valor de destino: " + str); }
getAsBigEndian¶
PhBuffer.getAsBigEndian(phbuffer, index, length)
Rutina de utilidad que interpreta una parte del búfer como un número en el formato BigEndian vea: Endianness.
Parámetros¶
- phbuffer – Controlador para un PhBuffer
- index – Posición de partida para la lectura
- length – Tamaño Integer (2 o 4)
Devuelve¶
Integer con el valor interpretado. Si no es posible utilizar los parámetros invalid será devolto.
Ejemplo¶
function getAsBigEndian() { var source = PhBuffer.create("0xAA00"); Dialogs.alert("valor: " + PhBuffer.getAsBigEndian(source, 0, 2)); }Salida:
Valor: 43520
getAsLittleEndian¶
PhBuffer.getAsLittleEndian(phbuffer, index, length)
Rutina de utilidad que interpreta una parte del buffer como un número en el formato LittleEndian vea: Endianness.
Parámetros¶
- phbuffer – Controlador para un PhBuffer
- index – Posición de partida para la lectura
- length – Tamaño Integer (2 o 4)
Devuelve¶
Integer con el valor interpretado. Si no es posible utilizar los parámetros invalid sera devolto.
Ejemplo¶
function getAsLittleEndian() { var source = PhBuffer.create("0xAA00"); Dialogs.alert(PhBuffer.getAsLittleEndian(source, 0, 2)); }Salida:
Valor: 170
getAsHexString¶
PhBuffer.getAsHexString(phbuffer, index, length)
Devuelve una String con notación hexadecimal que representa el buffer. Cada byte se convierte en dos caracteres en hexadecimal.
Parámetros¶
- phbuffer – Controlador para un PhBuffer
- index – Posición de partida para la lectura
- length – Tamaño a convertir
Devuelve¶
Si no es posible utilizar los parámetros invalid será devuelto. o la String en HEXADECIMAL que representa la parte del buffer seleccionado Ex: "0xAA00"
function getAsBigEndian() { var buffer = PhBuffer.create(2); PhBuffer.set(buffer, 0, 255); PhBuffer.set(buffer, 1, 255); var size = PhBuffer.getSize(buffer); var hexStr = PhBuffer.getAsHexString(buffer, 0, size); Dialogs.alert("hexStr: " + hexStr); }Salida:
Valor: 0xffff
getAsString¶
PhBuffer.getAsString(buffer, position, length)
Método utilizado para recuperar una parte del buffer con una String
Parámetros¶
- phbuffer – Controlador para un PhBuffer
- index – Posición de partida para la lectura
- length – Tamaño a convertir
Devuelve¶
Ejemplo¶
function test() { var buffer = PhBuffer.create("0x54455354"); var size = PhBuffer.getSize(buffer); Dialogs.alert("Valor: " + PhBuffer.getAsString(buffer, 0, size)); }Salida:
Valor: TEST
equals¶
PhBuffer.equals(phbuffer1, phbuffer2)
Compare el contenido de dos PhBuffers
Parámetros¶
- phbuffer1 – Controlador para un PhBuffer
- phbuffer2 – Controlador para un PhBuffer
Devuelve¶
boolean, true si son iguales o false caso contrário. Si no es posible utilizar los parámetros invalid sera devolto.
function test() { var buf1 = PhBuffer.create("TEST"); var buf2 = PhBuffer.create("TEST1"); Dialogs.alert("Equals: " + PhBuffer.equals(buf1, buf2)); }Salida:
Equals: true
isBuffer¶
PhBuffer.isBuffer(obj)
Comprueba si el argumento recibido es un PhBuffer.
Parámetros¶
- obj – Objeto a comprobar.
Devuelve¶
boolean, true en caso de que el argumento recibido sea un PhBuffer o false sera devolto.
Ejemplo¶
function test() { var buffer = PhBuffer.create(""); if (PhBuffer.isBuffer(buffer)) { Dialogs.alert("Buffer creado!"); } }Salida:
Buffer creado!
PhType¶
Este módulo proporciona funciones para proporcionar acceso al tipo PhType que puede tomar algunos tipos predefinidos.
Sumario de funciones¶
Función Descripción create Esta función crea un PhType de acuerdo con el tipo especificado en el parámetro. (Ver Lista de tipos). get Devuelve el contenido almacenado en el tipo pasado como parámetro. set Asigna el valor pasado a PhType. getValue Devuelve contenido almacenado en un PhType. setValue Esta función almacena un valor en una posición específica del PhType. reset Restablece PhType a su valor default. size Devuelve el tamaño de PhType. dup Cree una copia del PhType. equals Comparar dos PhTypes. assign Asigne el valor de un PhType de origen a un PhType de destino. resize Cambia el tamaño de PhType. getType Devuelve el tipo de PhType. toString Devuelve la representación String de un PhType. count Devuelve el número de elementos de un PhType. Este PhType debe basarse en listas. getName (deprecated) setAttribute Atributos de flecha en un tipo complejo(CRYPT, COMPRESSED..). getAttribute Devuelve un atributo de tipo complejo. isType Comprueba si el argumento recibido es un PhType.
Lista de tipos¶
Tipos Descripción Valor predeterminado Valor mínimo Valor máximo PhType.NONE Undefined - - - PhType.BYTE Tipo Byte 0 0 255 PhType.SBYTE Tipo Byte Marcado 0 -128 127 PhType.WORD Tipo Word 0 0 65.535 PhType.SWORD Tipo Word Marcado 0 -65.536 65.535 PhType.DWORD Tipo DWord 0 0 4.294.967.295 PhType.SDWORD Tipo DWord Marcado 0 -2.147.483.648 2.147.483.647 PhType.VARINT Tipo que almacena números integers y que cambia su tamaño según el valor asignado 0 0 4.294.967.295 PhType.STRING Tipo String "" 0 caracteres 255 caracteres PhType.LONGSTRING Tipo String "" 0 caracteres 65.535 caracteres PhType.BCDSTRING Tipo String en el formato BCD "" 0 caracteres 255 caracteres PhType.BOOLEAN Tipo lógico. (01 Byte) 0 para FALSE o distinto de cero para TRUE false - - PhType.MEMO Tipo Memorándum. Matriz de Strings [0] 0 Strings 65.535 Strings PhType.LONGMEMO Tipo Memorándum. Matriz de LongStrings [0] 0 LongStrings 65.535 LongStrings PhType.BLOB Vetor de bytes [0x0] 0 65.535 PhType.LONGBLOB Vetor de bytes [0x0] 0 4.294.967.295 posiciones PhType.DATE Almacena un número Integer que representa una fecha. 00/00/1980 01/01/1980 31/12/2107 PhType.TIME Almacena un número Integer que representa una hora. 00:00:00 00:00:00 31:63:62 PhType.MONEY Tipo Integer que representa un valor monetario 0 0 4.294.967.295 PhType.ARRAY Matriz bidimensional de cualquier tipo válido [0] 0 65.535 itens com 65.535 bytes PhType.VARIANT Tipo de variante (puede tomar cualquier tipo válido) null - - PhType.BITS Vector de bytes que almacena '1' (0x31) o '0' (0x30) '' 0 65.535 PhType.ITEMARRAY Vector de cualquier tipo válido [0] 0 65.535 itens PhType.STRUCT Matriz de tipos variant [] 0 65.535 itens PhType.BYTELIST Tipo basado en lista para almacenar Bytes [] 0 65.535 itens PhType.WORDLIST Tipo basado en lista para almacenar Words [] 0 65.535 itens PhType.DWORDLIST Tipo basado en lista para almacenar DWords [] 0 65.535 itens PhType.BOOLEANLIST Tipo basado en lista para almacenar boolean s [] 0 65.535 itens PhType.STRINGLIST Tipo basado en lista para almacenar Strings [] 0 65.535 itens PhType.LONGSTRINGLIST Tipo basado en lista para almacenar LongStrings [] 0 65.535 itens PhType.DATETIME Tipo complejo que almacena un tipo de Date y un tipo de Time 00/00/1980 00:00:00 00/00/1980 00:00:00 31:63:62 31/12/2107 PhType.BITMAP Tipo complejo utilizado para almacenar una imagen. - - - PhType.CRYPT Tipo complejo que almacena información encriptada - - - PhType.COMPRESSED Tipo complejo que almacena datos comprimidos - - - PhType.VERSION Tipo complejo que almacena una versión con major, minor, patch e build 1.0.0.0 - - PhType.TYPE_COUNT Contiene el número de tipos - - -
Atributos para tipos de Crypt¶
Atributo CRYPT KEY CRYPT METHOD CRYPT INIT VECTOR DATA CRYPT METHOD NONE CRYPT METHOD NOT CRYPT METHOD XOR CRYPT METHOD PC1 CRYPT METHOD DES CRYPT METHOD 3DES
Atributos para tipos de Compressed¶
Atributo COMPRESSED TYPE COMPRESSED TYPE NONE COMPRESSED TYPE ZLIB
create¶
PhType.create(type)
Esta función crea un PhType de acuerdo con el tipo especificado en el parámetro. (Para ver Lista de Tipos).
Parámetros¶
- type – Atributo de clase o String con el nombre del tipo.
Devuelve¶
Devuelve el PhType creado o invalid en caso de error.
Ejemplo¶
function EjemploCreate() { var tipoA = PhTypeCreate(PhType.WORD); var tipoB = PhTypeCreate("byte"); return = (isvalid tipoA && isvalid tipoB); }
get¶
PhType.get(type)
Devuelve el contenido almacenado en el tipo pasado como parámetro.
Parámetros¶
- type – PhType creado previamente con la función PhType.create();
Devuelve¶
El contenido almacenado en el tipo, en caso de éxito o invalid en caso de error.
Ejemplo¶
function EjemploGet() { var result = 0; var esperado = 12345; var tipo = PhType.create("word"); if (isvalid tipo) { if (isvalid PhType.set(tipo, 12345)) result = PhType.get(tipo); } return (result == esperado); }
set¶
PhType.set(type, value)
Asigna el valor pasado a un PhType.
Parámetros¶
- type – PhType creado previamente con la función PhType.create();
- value – Valor que desea asignar al tipo creado anteriormente.
Devuelve¶
En caso de éxito, devuelve el valor que se asignó al tipo. En caso de error, devolve**invalid**.
Ejemplo¶
function EjemploSet() { var result = 0; var esperado = 12345; var tipo = PhType.create("word"); if (isvalid tipo) result = PhType.set(tipo, 12345); return (result == esperado); }
getValue¶
PhType.getValue(type, idx)
Devuelve el contenido almacenado en un PhType.
Parámetros¶
- type – PhType creado previamente con la función PhType.create();
- idx – Escribiendo la posición desde la que desea leer el contenido.
Devuelve¶
Devuelve la variable almacenada en el 'tipo' y 'idx' pasó.
Ejemplo¶
function EjemploGetValue(list, id) { var result = PhType.getValue(list, id); return result; }
setValue¶
PhType.setValue(type, idx, value)
Esta función almacena un valor en una posición específica del PhType.
Parámetros¶
- type – PhType creado previamente con la función PhType.create();
- idx – Escribiendo la posición desde la que desea leer el contenido;
- value – Valor a asignar.
Devuelve¶
Devuelve un número Integer en caso de éxito o invalid en caso de error.
Ejemplo¶
function test(list, id, value) { var result = PhType.setValue(list, id, value); return result; }
reset¶
PhType.reset(type)
Reiniciar el PhType por tu valor default.
Parámetros¶
- type – PhType creado previamente con la función PhType.create().
Ejemplo¶
function EjemploReset(type) { PhType.reset(type); }
size¶
PhType.size(type)
Devuelve el tamaño de ** PhType **.
Parámetros¶
- type – PhType creado previamente con la función PhType.create().
Devuelve¶
Devuelve el tamaño del PhType pasado.
Ejemplo¶
function test() { var tByte = PhType.create(PhType.BYTE); var tWord = PhType.create(PhType.WORD); var tDWord = PhType.create(PhType.DWORD); Dialogs.alert("byte size: " + PhType.size(tByte)); Dialogs.alert("word size: " + PhType.size(tWord)); Dialogs.alert("dword size: " + PhType.size(tDWord)); }Salida:
byte size: 1 word size: 2 dword size: 4
dup¶
PhType.dup(type)
Cree una copia del PhType.
Parámetros¶
- type – PhType creado previamente con la función PhType.create().
Devuelve¶
Devuelve un PhType con el mismo tipo y valor que el argumento recibido.
Ejemplo¶
function EjemploDup(type) { var typeA = PhType.create(PhType.BYTE); var typeB = invalid; PhType.set(typeA, 100); Dialogs.alert("Tipo original: " + PhType.getType(typeA)); Dialogs.alert("Valor original: " + PhType.get(typeA)); typeB = PhType.dup(typeA); Dialogs.alert("Tipo de copia: " + PhType.getType(typeA)); Dialogs.alert("Valor de copia: " + PhType.get(typeA)); }Salida:
Tipo original: 1 Valor original: 100 Valor de copia: 1 Valor de copia: 100
equals¶
PhType.equals(type1, type2)
Compara el contenido de dos PhTypes.
Parámetros¶
- type1 – PhType creado previamente con la función PhType.create();
- type2 – PhType creado previamente con la función PhType.create().
Devuelve¶
Devuelve un boolean con valor true en caso de éxito y false en caso de error.
Ejemplo¶
function EjemploEquals(type) { var tipoA = PhType.create(type); var tipoB = PhType.create(type); var result = false; PhType.set(tipoA, 100); PhType.set(tipoB, 100); result = PhType.equals(tipoA, tipoB); }
assign¶
PhType.assign(type1, type2)
Asignar el valor de un PhType de origen a un PhType destino.
Parámetros¶
- type1 – PhType creado previamente con la función PhType.create();
- type2 – PhType creado previamente con la función PhType.create().
Ejemplo¶
function EjemploAssign(type) { var tipoA = PhType.create(type); var tipoB = PhType.create(type); PhType.set(tipoA, 100); PhType.assign(tipoB, tipoA); }
resize¶
PhType.resize(type, size)
Cambiar el tamaño de un PhType.
Parámetros¶
- type – PhType creado previamente con la función PhType.create();
- size – Nueva cantidad de bytes que representará el tipo.
Ejemplo¶
function EjemploResize() { var strList = PhType.create(PhType.STRINGLIST); Dialogs.alert("Tamaño antes: " + PhType.count(strList)); PhType.resize(strList, 5); Dialogs.alert("Tamaño después: " + PhType.count(strList)); }Salida:
Tamaño antes: 0 -- Tamaño después: 5 --
getType¶
PhType.getType(type)
Devuelve el tipo de uno PhType.
Parámetros¶
- type – PhType creado previamente con la función PhType.create();
Devuelve¶
Devuelve un Integer correspondiente al tipo pasado como parámetro o invalid en caso de error.
Ejemplo¶
function test() { var tWord = PhType.create(PhType.WORD); if (PhType.getType(tWord) == PhType.WORD) { Dialogs.alert("Tipo word creado"); } else { Dialogs.alert("Error al crear el PhType"); } }Salida:
Tipo word creado
toString¶
PhType.toString(type)
Devuelve la representación en String de un PhType.
Parámetros¶
- type – PhType creado previamente con la función PhType.create();
Devuelve¶
Devuelve una String con el contenido almacenado en el tipo creado anteriormente, o invalid en caso de error.
Ejemplo¶
function EjemploToString(type) { var tipo = PhType.create(type); PhType.set(tipo, 100); Dialogs.alert("Str type: " + PhType.toString(tipo)); }Salida:
Str type: 100
count¶
PhType.count(type)
Devuelve el número de elementos de un PhType. Este PhType debe basarse en listas.
Parámetros¶
- type – PhType creado previamente con la función PhType.create();
Devuelve¶
Devuelve el número de elementos contenidos en el tipo pasado como parámetro, o invalid en caso de error.
Ejemplo¶
function EjemploCount() { var list = PhList.create(); PhList.add(list, "item1"); PhList.add(list, "item2"); PhList.add(list, "item3"); result = PhType.count(list); }
getName (deprecated)¶
PhType.getName(type)
setAttribute¶
PhType.setAttribute(type, attribute, value)
Establezca atributos en un tipo complejo (CRYPT, COMPRESSED..).
Parámetros¶
- type – PhType creado previamente con la función PhType.create();
- attribute – Uno de los tipos descritos en la table de tipos al principio de esta sección;
- value – Valor del nuevo atributo.
Devuelve¶
Devuelve un boolean en caso de éxito y invalid en caso de error.
Ejemplo¶
function EjemploSetAttribute(type) { var tipo = PhType.create(type); PhType.set(tipo, 100); var result = PhType.setAttribute(tipo, PhType.boolean, true); }
getAttribute¶
PhType.getAttribute(type, attribute)
Devuelve un atributo de tipo complejo.
Parámetros¶
- type – PhType creado previamente con la función PhType.create();
- attribute – Uno de los tipos descritos en la table de tipos al principio de esta sección;
Devuelve¶
Devuelve un atributo de tipo complejo, o invalid en caso de error.
Ejemplo¶
function EjemploGetAttribute(type) { var tipo = PhType.create(type); PhType.set(tipo, true); var result = PhType.getAttribute(tipo, PhType.boolean); }
isType¶
PhType.isType(obj)
Comprueba si el argumento recibido es un PhType.
Parámetros¶
- obj – Objeto a comprobar.
Devuelve¶
boolean, true en caso de que el argumento recibido sea un PhType o false caso contrário.
Ejemplo¶
function test() { var tp = PhType.create(PhType.BYTE); if (PhType.isType(tp)) { Dialogs.alert("PhType creado!"); } }
typeof¶
Devuelve un número Integer que representa el tipo de datos del valor pasado a typeof
Constantes¶
Integer Descripción 0 Indica que la variable es de tipo Integer. 1 Indica que la variable es de tipo Float. 2 Indica que la variable es de tipo String. 3 Indica que la variable es de tipo Boolean (true/false). 4 Indica que la variable es Invalid. 5 Indica que la variable es de tipo Cursor. 6 Indica que la variable es Struct.
Ejemplos¶
Valor do tipo ponteiro
var i = 10; Dialogs.alert(typeof &i); i = PhList.create(); Dialogs.alert(typeof i);Salida
5 6
Dispositivos¶
La biblioteca Devices proporciona interfaces para manejar los dispositivos del terminal.
Sumario¶
Dispositivo Descripción Device Interface patrón para operaciones en dispositivos Eth Interface para el uso del Ethernet Wifi Interface para el uso del Wifi Gprs Interface para el uso del GPRS Gsm Interface para el uso del GSM Wless Interface para el uso del Wless Modem Interface para el uso del Modem Serial Interface para el uso del Serial Usb Interface para el uso del Usb Nfc Interface para el uso del NFC Printer Interface para el uso del Impressora Touch Interface para el uso del Touch
Dev¶
| package://libs#dev/dev.wmlsc |
|---|
El módulo Dev define funciones comunes a todos los dispositivos.
Sumario¶
Función Descripción connect Conectar el dispositivo creado connected Validar si el dispositivo está conectado createStream Cree una stream genérica para el dispositivo detectConnection Habilita el procesamiento de conexiones TLS sin bloqueo. disconnect Desconectar dispositivo getError Recuperar el último error ocurrido getInfo Recuperar información / configuración del dispositivo getNativeError Recupere el último error que ocurrió en la API del dispositivo terminal hasSupport Informa se o terminal suporta um determinado tipo de dispositivo isDev Comprueba si la instancia es un dispositivo. waitDataLink Espere la conexión de la capa física del dispositivo
Códigos de error¶
Constantes Descripción Device#AUTH_ERROR Error de autenticación Device#AUTHENTICATION_ERROR Error de autenticación Device#BATTERY_LOW La batería de la terminal está baja Device#BUSY_MODEM_ERROR Módem ocupado Device#CANT_ATTACH_ERROR Error al establecer la conexión Device#CONNECT_ERROR Error al conectar Device#NO_ANSWER_ERROR No hay respuesta del número marcado Device#NO_CABLE_ERROR Sin cable de red Device#NO_CARRIER_ERROR Conexión abortada por el otro extremo del canal de comunicación Device#NO_CHIP_ERROR Falta el chip de comunicación Device#NO_CHIP_CONNECTION_ERROR Error al establecer la conexión usando el chip Device#NO_DIAL_TONE_ERROR No se puede detectar el tono de marcación en la línea conectada al terminal Device#NO_ETH_CONNECTION_ERROR Error al establecer la conexión usando la Ethernet Device#NO_MODEM_ERROR Falta el módem Device#SUCCESS Éxito Device#TIMEOUT Tiempo de espera excedido Device#UNKNOWN_ERROR Error desconocido Device#USER_ABORT Cancelación por operador
Información del dispositivo¶
Constante Descripción Device#FIELD_LOCAL_IP Dirección IP asignada al equipo local representado como DWord Device#FIELD_NAME Nombre del dispositivo Device#FIELD_TYPE Tipo de dispositivo (ver sección Tipos de Dispositivos)
Tipos de dispositivos¶
Constante Descripción Device#TYPE_ETH Ethernet Device#TYPE_MDM Modem Device#TYPE_NFC NFC Device#TYPE_PRINTER Impressora Device#TYPE_SERIAL Serial (RS232) Device#TYPE_TOUCH Touch Device#TYPE_USB USB Device#TYPE_WIFI WIFI Device#TYPE_WLESS Wireless Interno (GPRS/GSM)
connect¶
Conectar el dispositivo creado
Parámetros¶
- dev - Instancia de un dispositivo
Devuelve¶
invalid o boolean indica si la operación fue exitosa
Ejemplo:¶
use url Device "package://libs#dev/dev.wmlsc"; use url Printer "package://libs#dev/printer.wmlsc"; function test () { var dev = Printer#create(""); if (Device#connect(dev)) { Dialogs.alert("Dispositivo conectado!"); } }Salida:
Dispositivo conectado!
connected¶
Device#connected(dev)
Validar si el dispositivo está conectado.
Parámetros¶
- dev - Instancia de un dispositivo.
Devuelve¶
invalid o boolean indicando si el dispositivo está conectado o desconectado.
Ejemplo:¶
use url Device "package://libs#dev/dev.wmlsc"; use url Printer "package://libs#dev/printer.wmlsc"; function test () { var dev = Printer#create(""); Device#connect(dev); if(Device#connected(dev)) { Dialogs.alert("Dispositivo conectado!"); } }Salida:
Dispositivo conectado!
createStream¶
Device#createStream(dev)
Cree una stream genérica para el dispositivo.
Parámetros¶
- dev - Instancia de un dispositivo conectado;
Devuelve¶
invalid o stream.
Ejemplo:¶
use url Eth "package://libs#dev/eth.wmlsc"; use url Device "package://libs#dev/dev.wmlsc"; use url USB "package://libs#dev/usb.wmlsc"; use url Stream "package://vm#stream/stream.wmlsc"; function test () { var usb = USB#create(""); var stream = Device#createStream(usb); if(Device#connect(usb)) { var buffer = PhBuffer.create("Prueba de Comunicación"); var wrote = Stream#write(stream, buffer, 0, PhBuffer.getSize (buffer)); if (wrote >= 0) { Dialogs.alert("Bytes escritos en stream: " + wrote); } else { Dialogs.alert("Error al escrever en stream: " + wrote); } } }Salida:
Bytes escritos en stream: 10
detectConnection¶
Device#detectConnection(check)
Habilita el procesamiento de conexiones TLS sin bloqueo. Cuando está habilitado, cada pulsación de tecla en la terminal, se comprobará si se ha establecido la conexión sin bloqueo.
Parámetros¶
- type - [in] check - boolean indicando si habilitar o deshabilitar la verificación;
disconnect¶
Device#disconnect(dev)
Desconecta el dispositivo.
Parámetros¶
- dev - Instancia de un dispositivo conectado.
Devuelve¶
invalid o boolean indica si la operación fue exitosa.
Ejemplo:¶
use url Device "package://libs#dev/dev.wmlsc"; use url Printer "package://libs#dev/printer.wmlsc"; function test () { var dev = Printer#create(""); if (Device#connect(dev)) { Dialogs.alert("Dispositivo conectado!"); } if(Device#disconnect(dev)) { Dialogs.alert("Dispositivo desconectado!"); } }Salida:
Dispositivo desconectado!
getError¶
Device#getError(dev)
Recuperar el último error ocurrido.
Parámetros¶
- dev - Instancia de un dispositivo conectado;
Devuelve¶
invalid o código de error (ver sección Códigos de Error).
Ejemplo:¶
use url Device "package://libs#dev/dev.wmlsc"; use url Eth "package://libs#dev/eth.wmlsc"; function test () { var eth = Eth#create(""); if(!Device#connect(eth)) { if (Device#getError(eth) == Device#NO_CABLE_ERROR()) { Dialogs.alert("Error: Sin cable de red"); } } }Salida:
Error: Sin cable de red
getInfo¶
Device#getInfo(dev, infoName)
Recuperar información / configuraciones del dispositivo.
Parámetros¶
- dev - Instancia de un dispositivo conectado;
- infoName - Información que desea recuperar (consulte la sección Información del dispositivo);
Devuelve¶
invalid o PhType.VARIANT con el valor deseado.
Ejemplo:¶
use url Device "package://libs#dev/dev.wmlsc"; use url Printer "package://libs#dev/printer.wmlsc"; function test () { var dev = Printer#create(""); if (Device#connect(dev)) { var devType = Device#getInfo(dev, Device#FIELD_TYPE()); if(devType == Device#TYPE_PRINTER()) { var width; width = Device#getInfo(dev, Printer#FIELD_PRINT_WIDTH()); Dialogs.alert("Ancho de la impresora: " + width); } } }Salida:
Ancho de la impresora: 40
getNativeError¶
Device#getNativeError(dev)
Recuperar el último error ocurrido en la API del dispositivo terminal.
Parámetros¶
- dev - Instancia de un dispositivo conectado;
Devuelve¶
invalid o código de error (consulte la sección Códigos de error).
Ejemplo:¶
use url Device "package://libs#dev/dev.wmlsc"; use url GPRS "package://libs#dev/gprs.wmlsc"; function test () { var usb = USB#create(""); var stream = Device#createStream(usb); if(Device#connect(usb)) { var cfg = createConfig(1, "oprApn.br", "oprName", "oprPwd","0101", true); var dev = GPRS#create(cfg); if(Device#connect(dev)) { Dialogs.alert("Dispositivo conectado"); } else { var error = String.toString(Device#getNativeError(dev)); Dialogs.alert ("Erro Gprs: " + error); } } function createConfig(id, apn, usr, pwd, pin, keep) { var config = PhStruct.create( "{" + "id:byte;" + "cid:byte;" + "apn:crypt;" + "usr:crypt;" + "pwd:crypt;" + "pin:crypt;" + "knw:boolean;" + "}"); PhStruct.set(config, "id", id); PhStruct.set(config, "cid", 1); cryptCfg(PhStruct.get(config, "apn"), PhType. CRYPT_METHOD_NONE); cryptCfg(PhStruct.get(config, "usr"), PhType. CRYPT_METHOD_NONE); cryptCfg(PhStruct.get(config, "pwd"), PhType. CRYPT_METHOD_NONE); cryptCfg(PhStruct.get(config, "pin"), PhType. CRYPT_METHOD_NONE); PhStruct.set(config, "apn", apn); PhStruct.set(config, "usr", usr); PhStruct.set(config, "pwd", pwd); PhStruct.set(config, "pin", pin); PhStruct.set(config, "knw", keep); return config; } function cryptCfg(crypt, cryptMethod) { var result = false; if (PhType.getType(crypt) == PhType.CRYPT) result = PhType.setAttribute(crypt, PhType.CRYPT_METHOD, cryptMethod); return result; }Salida:
Dispositivo conectado.
hasSupport¶
Device#hasSupport(type)
Informa si la terminal es compatible con un determinado tipo de dispositivo.
Parámetros¶
- type - [in] Integer con ID de dispositivo;
Devuelve¶
true si el dispositivo está activo (funcional).
Ejemplo:¶
use url Device "package://libs#dev/dev.wmlsc"; use url Eth "package://libs#dev/eth.wmlsc"; function test () { var wifi = Device#TYPE_WIFI(); Dialogs.alert("Integer que | coincide con la conexión |Wifi: "+wifi); if (Device#hasSupport(wifi)) { Dialogs.alert("Este terminal tiene soporte para Wifi"); } }Salida:
Integer que coincide con la conexión Wifi: 18 Este terminal tiene soporte para Wifi.
isDev¶
Device#isDev(dev)
Comprueba si la instancia es un dispositivo.
Parámetros¶
- dev - Instancia de un dispositivo conectado.
Devuelve¶
true si es un Dispositivo y false en caso contrario.
Ejemplo:¶
use url Device "package://libs#dev/dev.wmlsc"; use url USB "package://libs#dev/usb.wmlsc"; function configUsb() { var config = PhStruct.create( "{" + "baudrate : sdword;" + "parity : byte;" + "databits : byte;" + "stopbit : byte," + "start : dword;" + "middle : dword " + "}"); PhStruct.set(config, "baudrate", 57600); PhStruct.set(config, "parity" , 1); PhStruct.set(config, "databits", 7); PhStruct.set(config, "stopbit" , 2); PhStruct.set(config, "start" , 1000); PhStruct.set(config, "middle" , 1000); return config; } function test() { var usb = USB#create(configUsb()); if(Device#isDev(usb)) { Dialogs.alert("Instancia pertenece a un dispositivo."); } else { Dialogs.alert("Instancia no pertenece a ningún dispositivo."); } }Salida:
Instancia pertenece a un dispositivo.
waitDataLink¶
Device#waitDataLink(dev, bloking)
Espere a que se conecte la capa física del dispositivo.
Parámetros¶
- dev - Instancia de un dispositivo conectado;
- blocking - Booleano que identifica si é bloqueante o no.
Devuelve¶
invalid o boolean indica si la operación fue exitosa.
Ejemplo¶
use url Device "package://libs#dev/dev.wmlsc"; use url GPRS "package://libs#dev/gprs.wmlsc"; function test () { var cfg = createConfig(1, "oprApn.br", "oprName", "oprPwd","0101", true); var dev = GPRS#create(cfg); if (Device#connect(dev)) { if (Device#waitDataLink(dev, false)) { Dialogs.alert("Datalink conectado"); } } }Salida:
Datalink conectado
Eth¶
| package://libs#dev/eth.wmlsc |
|---|
Interface para usar el dispositivo Ethernet.
Sumario¶
Función Descripción create Crea una instancia de dispositivo Ethernet
Información de Ethernet¶
Constantes Descripción Eth#FIELD_TYPE Se recupera si la configuración de IP es manual (1) o DHCP (2) Eth#FIELD_GATEWAY Recuperar el gateway configurado Eth#FIELD_NETMASK Recuperar la mask de red configurada Eth#FIELD_RESTART_AFTER_CONFIG Indica si es necesario reiniciar la terminal después de la configuración
create¶
Eth#create(config)
Cree una instancia de dispositivo Ethernet
Parámetros¶
- config String vacío ("") para usar la configuración patrón/ anterior o PhStruct definido como:
"{" + "ipLocal : dword;" + // Se for zero usara DHCP "netmask : dword;" + "gateway : dword;" + "}";Devuelve¶
invalid o dispositivo Ethernet creado.
Ejemplo¶
use url Eth "package://libs#dev/eth.wmlsc"; use url Device "package://libs#dev/dev.wmlsc"; function test () { var eth = Eth#create(""); if(Device#isDev(eth)) { Dialogs.alert("Dispositivo Ethernet creado."); } }Salida:
Dispositivo Ethernet creado.
Wifi¶
| package://libs#dev/wifi.wmlsc |
|---|
Interface para usar el dispositivo Wifi.
Sumario¶
Función Descripción create Crear dispositivo Wifi setIPConfig Responsable de configurar la IP del dispositivo Wifi getIPConfig Responsable de cargar la configuración de IP del dispositivo Wifi
Tipos de Red Wifi¶
Constantes Descripción Wifi#TYPE_INFRA El dispositivo se conectará a un punto de acceso. Wifi#TYPE_ADHOC El dispositivo se conectará directamente a otro dispositivo Wifi.
Tipos de autenticación Wifi¶
Constantes Descripción Wifi#AUTH_NONE Undefined autenticación Wifi#AUTH_WEP Autenticación WEP Wifi#AUTH_WPA_PSK Autenticación WPA_PSK Wifi#AUTH_WPA_EAP Autenticación WPA_EAP Wifi#AUTH_WPA2_PSK Autenticación WPA2_PSK Wifi#AUTH_WPA2_EAP Autenticación WPA2_EAP
Tipos de Encriptación para Red Wifi¶
Constantes Descripción Wifi#CRYPT_NONE Undefined encriptación Wifi#CRYPT_WEP Encriptación WEP Wifi#CRYPT_TKIP Encriptación TKIP Wifi#CRYPT_WEP128 Encriptación WEP128 Wifi#CRYPT_AES_CCM Encriptación AES_CCM Wifi#CRYPT_WEPX Autenticación AES_CCM
Modos de configuración IP¶
Constantes Descripción Wifi#IP_DHCP IP definido automáticamente Wifi#IP_ESTATICO IP definido manualmente
create¶
Wifi#create(config)
Crear dispositivo Wifi
Parámetros¶
- config PhStruct con la estructura:
"{"; "type:word;" + //Tipo de conección (TYPE_INFRA ou TYPE_ADHOC) "ssid:String;" + //Nombre de red "auth:word;" + //Tipo de autenticación "sec:word;" + //Tipo de encriptación "pwd:crypt;" + //Contraseña de red "bk:boolean;" + //Indica si la conexión se bloqueará "knw:boolean;" + //Mantenga la red viva (keep network alive) "timeout:dword" + //Tiempo de espera "fb:String;" /* path para el script que implementa la función feedback, que será llamado por callback para informar el progreso de la establecimiento de conexión Wifi. */ + "}";donde fb es la path del script que implementa la función feedback, que será invocada por callback para informar el progreso del establecimiento de la conexión Wifi.
Devuelve¶
invalid o dispositivo Wifi creado.
setIPConfig¶
Wifi#setIPConfig(device, config)
Responsable de configurar la IP del dispositivo Wifi
Parámetros¶
- device Instancia de un dispositivo Wi Fi
- config PhStruct en el formato:
"{" + "type:word;" + //Tipo de configuración IP (IP_DHCP o IP_ESTATICO) "ip:dword;" + //IP representado como DWord "netmask:dword;" + //Mask de red "gateway:dword" + //Gateway de red "}";Devuelve¶
boolean indicando si se realizó la configuración y invalid en caso de error
getIPConfig¶
Wifi#getIPConfig(device)
Responsable de cargar la configuración de IP del dispositivo Wifi
Parámetros¶
- device Instancia de un dispositivo Wifi
Devuelve¶
PhStruct en el formato:
"{" + "type:word;" + //Tipo de configuración IP (IP_DHCP ou IP_ESTATICO) "ip:dword;" + //IP representado como DWord "netmask:dword;" + //Mask de red "gateway:dword" + //Gateway de red "}";
Ejemplo¶
use url CommUtil "package://devices#dev/comm_util.wmlsc"; use url Device "package://libs#dev/dev.wmlsc"; use url Menu "package://tefui#ui/menu.wmlsc"; use url Input "package://phui#input/input.wmlsc"; use url Wifi "package://libs#dev/wifi.wmlsc"; use url Message "package://tefui#ui/message.wmlsc"; function test () { var result = false; var config = PhStruct.create("{type:word; ssid:String; auth:word; sec:word; pwd:crypt; bk:boolean; knw:boolean; fb:String; timeout:dword}"); PhStruct.set(config, "fb", "package://tefui#ui/processing.wmlsc"); PhStruct.set(config, "knw", true); var wifi = Wifi#create(config); var networks = Wifi#availableNetworks(wifi, true, false, invalid); var network = selectNetwork(networks); if (isvalid network) { var type = PhType.getValue(PhType.getValue(network[0], 0), 0); var ssid = PhType.getValue(PhType.getValue(network[1], 0), 0); var auth = PhType.getValue(PhType.getValue(network[2], 0), 0); var pwd = ""; var sec = PhType.getValue(PhType.getValue(network[3], 0), 0); var input = Input#inputString("Contraseña:", invalid, &pwd, invalid, 1, 255, (Input#CHAR_ALFA()), String.getValue('.'), true); if (input == Input#INPUT_OK()) { PhStruct.set(config, "type", type); PhStruct.set(config, "ssid", ssid); PhStruct.set(config, "auth", auth); PhStruct.set(config, "sec", sec); PhStruct.set(config, "pwd", pwd); PhStruct.set(config, "bk", true); PhStruct.set(config, "timeout", 30000); wifi = Wifi#create(config); if (Device#connect(wifi)) { Message#showMessage("Conectado a " + ssid, Message#DELAY_MESSAGE(), Message#BEEP_MESSAGE()); result = CommUtil#socketConnect(); } else { Message#showMessage("Error al conectar", Message#DELAY_ERROR(), Message#BEEP_ERROR()); } } } return result; } function selectNetwork(networks) { var network = invalid; var count = PhType.count(networks); var items = []; for(var idx = 0; idx < count; idx++) { var temp = PhType.getValue(PhType.getValue(networks, idx),0); PhList.add(items, PhType.toString(PhType.getValue(temp, 1))); } var selected = Menu#showMenu("Seleccione una red: ", [items, 0], false, false); if(isvalid selected) { network = PhType.get(PhType.getValue(PhType.getValue(networks, selected),0)); } return network; }Salida:
Menú con redes disponibles
MngrWifi¶
| package://phast#config/mngr_wifi.wmlsc |
|---|
Interface para usar el dispositivo Wifi.
Sumario¶
Función Descripción availableNetworks Esta función se encarga de investigar las redes Wifi disponibles saveNetwork Esta Función se encarga de agregar una nueva red Wifi savedNetworks Esta Función se encarga de listar las (Redes Wifi) que han sido configuradas por la terminal forgetNetwork Esta Función se encarga de eliminar un profile (Red Wifi) el más conocido por olvidar una red Wifi
availableNetworks¶
Wifi#availableNetworks()
Esta función se encarga de investigar las redes Wifi disponibles
Parámetros¶
No hay
Devuelve¶
PhType.STRUCT con la información de las redes localizadas
saveNetwork¶
Wifi#saveNetwork(config)
Esta función se encarga de agregar una nueva red Wifi
Parámetros¶
- config PhStruct en el formato
"{ssid:String}".Devuelve¶
true en caso de éxito y false en caso de error
savedNetworks¶
Wifi#savedNetworks ()
Esta función se encarga de listar las (Redes Wifi) que han sido configuradas por la terminal
Parámetros¶
- No Hay
Devuelve¶
PhType.STRUCT con la información de las redes guardadas.
forgetNetwork¶
Wifi#forgetNetwork(id)
Esta función se encarga de eliminar un profile (olvídate de la red Wifi).
Parámetros¶
- id Id de red (índice de profile. Vea Wifi#savedNetworks).
Devuelve¶
true en caso de éxito y false en caso de error
GPRS¶
| package://libs#dev/gprs.wmlsc |
|---|
Interface para usar el dispositivo GPRS.
Sumario¶
Función Descripción create Crea una instancia de dispositivo GPRS
create¶
Gprs#create(config)
Crea una instancia de dispositivo GPRS
Parámetros¶
- config PhStruct defido como:
"{" + "id : byte;" + //Id de dispositivo "cid : byte;" + //Id de conexión "apn : crypt;" + //APN de operador del SIM card "usr : crypt;" + //Nombre de usuario del SIM card "pwd : crypt;" + //Contraseña de SIM usuario del SIM card "pin : crypt;" + //PIN de SIM card "knw : boolean;" + //Mantener la conexión de red (Keep alive) "}";Devuelve¶
invalid o dispositivo GPRS creado.
Ejemplo¶
use url Device "package://libs#dev/dev.wmlsc"; use url GPRS "package://libs#dev/gprs.wmlsc"; function test () { var cfg = createConfig(1, "oprApn.br", "oprName", "oprPwd","0101", true); var dev = GPRS#create(cfg); if(Device#isDev(dev)) { if (Device#connect(dev)) { Dialogs.alert("Dispositivo GPRS conectado"); } } } function createConfig(id, apn, usr, pwd, pin, keep) { var config = PhStruct.create( "{" + "id:byte;" + "cid:byte;" + "apn:crypt;" + "usr:crypt;" + "pwd:crypt;" + "pin:crypt;" + "knw:boolean;" + "}"); PhStruct.set(config, "id", id); PhStruct.set(config, "cid", 1); cryptCfg(PhStruct.get(config, "apn"), PhType.CRYPT_METHOD_NONE); cryptCfg(PhStruct.get(config, "usr"), PhType.CRYPT_METHOD_NONE); cryptCfg(PhStruct.get(config, "pwd"), PhType.CRYPT_METHOD_NONE); cryptCfg(PhStruct.get(config, "pin"), PhType.CRYPT_METHOD_NONE); PhStruct.set(config, "apn", apn); PhStruct.set(config, "usr", usr); PhStruct.set(config, "pwd", pwd); PhStruct.set(config, "pin", pin); PhStruct.set(config, "knw", keep); return config; } function cryptCfg(crypt, cryptMethod) { var result = false; if (PhType.getType(crypt) == PhType.CRYPT) result = PhType.setAttribute(crypt, PhType.CRYPT_METHOD, cryptMethod); return result; }Salida:
Dispositivo GPRS criado
GSM¶
| package://libs#dev/gsm.wmlsc |
|---|
Interface para usar el dispositivo GSM.
Sumario¶
Función Descripción create Crea una instancia de dispositivo GSM
create¶
Gsm#create(config)
Crea una instancia de dispositivo GSM
Parámetros¶
- config PhStruct definido en:
"{" + "modemProto : byte;" + "mode : byte;" + "phone : crypt;" + "usr : crypt;" + "pwd : crypt;" + "}";Devuelve¶
invalid o dispositivo GSM creado.
Ejemplos¶
use url Device "package://libs#dev/dev.wmlsc"; use url Gsm "package://libs#dev/gsm.wmlsc"; function test () { var cfg = createConfig(2, 0, "oprName", "18987898","usr", "123"); var dev = Gsm#create(cfg); if(Device#isDev(dev)) { if (Device#connect(dev)) { Dialogs.alert("Dispositivo GSM conectado"); } } } function createConfig(modemProto, mode, phone, usr, pwd) { var config = PhStruct.create( "{" + "modemProto : byte;" + "mode : byte;" + "phone : crypt;" + "usr : crypt;" + "pwd : crypt;" + "}"); PhStruct.set(config, "modemProto", modemProto); PhStruct.set(config, "mode", mode); cryptCfg(PhStruct.get(config, "phone"), PhType.CRYPT_METHOD_NONE); cryptCfg(PhStruct.get(config, "usr"), PhType.CRYPT_METHOD_NONE); cryptCfg(PhStruct.get(config, "pwd"), PhType.CRYPT_METHOD_NONE); PhStruct.set(config, "phone", phone); PhStruct.set(config, "usr", usr); PhStruct.set(config, "pwd", pwd); return config; } function cryptCfg(crypt, cryptMethod) { var result = false; if (PhType.getType(crypt) == PhType.CRYPT) result = PhType.setAttribute(crypt, PhType.CRYPT_METHOD, cryptMethod); return result; }Salida:
Dispositivo GSM creado
Wless¶
| package://libs#dev/wless.wmlsc |
|---|
Implementar características comunes al GPRS y GSM.
Informaciones de Wless¶
Constantes Descripción Wless#FIELD_SIGNAL_LEVEL Nivel de señal del Modem Wireless Wless#FIELD_NOISE_LEVEL Nivel de ruido Wless#FIELD_OPER_NAME Nombre del operador en uso Wless#FIELD_SIM_CARD_SERIAL Número de serie de la SIM card en uso Wless#FIELD_OPER_ID ID de SIM card en uso Wless#FIELD_SIM_CARD_NUMBER Numero de SIM card en uso Wless#FIELD_MODE Modo de conexión (GSM ou GPRS) Wless#FIELD_GEOLOCAL Geolocalización Wless#FIELD_EXTENDED_ERROR Error extendido Wless#FIELD_APN APN de la operadora en uso Ejemplos¶
use url Device "package://libs#dev/dev.wmlsc"; use url GPRS "package://libs#dev/gprs.wmlsc"; use url Wless "package://libs#dev/wless.wmlsc"; function test () { var cfg = createConfig(1, "oprApn.br", "oprName", "oprPwd","0101", true); var dev = GPRS#create(cfg); if(Device#isDev(dev)) { if (Device#connect(dev)) { Dialogs.alert("Dispositivo GPRS conectado"); Dialogs.alert("Señal: " + Device#getInfo(Wless#FIELD_SIGNAL_LEVEL())); } } }Salida:
Dispositivo GPRS conectado Señal: 70
Serial¶
| package://libs#dev/serial.wmlsc |
|---|
Interface para usar el dispositivo Serial.
Sumario¶
Función Descripción create Crea una instancia de dispositivo Serial
create¶
Serial#create(config)
Crea una instancia de dispositivo Serial
Parámetros¶
- config PhStruct definido en:
"{" + "porta : byte;" + // Puerto COM que se utilizará "baudrate : sdword;" /* Tasa de transmisión de datos. Posibles velocidades: 50, 75, 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 93750, 115200, 187500 */ + "parity : byte;" /* Paridad. valores posibles: None (0), Impar(1), Par(2) */ + "databits : byte;" /* Número de bits de datos. valores posibles: 7 e 8. */ + "stopbit : byte," /* Bit de parada. valores posibles: 1 -> 1, 2 -> 2, 5 -> 1.5 */ + "start : dword;" + // Timeout para iniciar la recepción "middle : dword " + // Timeout en medio de recibir bytes "}";Devuelve¶
invalid o dispositivo Serial creado.
Ejemplos¶
use url Device "package://libs#dev/dev.wmlsc"; use url Serial "package://libs#dev/serial.wmlsc"; function test () { var config = PhStruct.create( "{" + "porta : byte;" + "baudrate : sdword;" + "parity : byte;" + "databits : byte;" + "stopbit : byte," + "start : dword;" + "middle : dword " + "}"); PhStruct.set(config, "porta" , 0); PhStruct.set(config, "baudrate", 9600); PhStruct.set(config, "parity" , 0); PhStruct.set(config, "databits", 8); PhStruct.set(config, "stopbit" , 1); PhStruct.set(config, "start" , 5000); PhStruct.set(config, "middle" , 500); var serial = Serial#create(config); if(Device#isDev(serial)) { Dialogs.alert("Dispositivo Serial creado"); } }Salida:
Dispositivo Serial creado
USB¶
| package://libs#dev/usb.wmlsc |
|---|
Interface para usar el dispositivo USB.
Información del Usb¶
Constantes Descripción Usb#FIELD_BAUDRATE Ancho de banda de USB (50, 75, 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600 e 115200.) Usb#FIELD_PARITY Paridad (0 - None, 1 - Odd, 2 - Even) Usb#FIELD_DATABITS Cantidad de bits por datos (0, 7, 8) Usb#FIELD_STOPBIT Cantidad de bits de parada ( 1, 2, 5 (1.5) )
Sumario¶
Función Descripción create Crea una instancia de dispositivo Usb
create¶
Usb#create(config)
Crea una instancia de dispositivo Usb
Parámetros¶
- config PhStruct definido en:
"{" + "baudrate : sdword;" /* Tasa de transmisión de datos. Posibles velocidades : 50, 75, 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 93750, 115200, 187500 */ + "parity : byte;" /* Paridad. Valores posibles : None (0), Impar(1), Par(2) */ + "databits : byte;" /* Numero de bits de datos. Valores posibles: 7 e 8. */ + "stopbit : byte," /* Bit de parada. Valores posibles: 1 -> 1, 2 -> 2, 5 -> 1.5 */ + "start : dword;" + // Timeout para iniciar la recepción "middle : dword " + // Timeout en medio de recepción de bytes "}";Devuelve¶
invalid o dispositivo USB creado.
Ejemplos¶
use url Device "package://libs#dev/dev.wmlsc"; use url Usb "package://libs#dev/usb.wmlsc"; function test () { var config = PhStruct.create( "{" + "baudrate : sdword;" + "parity : byte;" + "databits : byte;" + "stopbit : byte," + "start : dword;" + "middle : dword " + "}"); PhStruct.set(config, "baudrate", 9600); PhStruct.set(config, "databits", 8); PhStruct.set(config, "parity" , 0); PhStruct.set(config, "stopbit" , 1); PhStruct.set(config, "start" , 1000); PhStruct.set(config, "middle" , 1000); var usb = Usb#create(config); if(Device#isDev(usb)) { Dialogs.alert("Dispositivo USB creado"); } }Salida:
Dispositivo USB creado
NFC¶
| package://libs#dev/nfc.wmlsc |
|---|
Interface para usar el dispositivo NFC.
Sumario¶
Función Descripción create Crea una instancia de dispositivo NFC detect Detectar un dispositivo NFC authorize Realiza la autorización de un bloque para lectura / escritura readBlockData Realiza bloque de lectura enviado writeBlockData Realiza escribir datos en un bloque
create¶
Nfc#create()
Crea una instancia de dispositivo NFC
Parámetros¶
- No Hay
Devuelve¶
invalid o dispositivo NFC creado.
detect¶
Nfc#detect(dev)
Detectar un dispositivo NFC
Parámetros¶
- dev Instancia de dispositivo NFC.
Devuelve¶
PhList - Enumere dónde el primer elemento es el tipo de tarjeta y el segundo elemento es el uid (número de serie) de la tarjeta. invalid Caso no encontrar o detectar la tarjeta.
authorize¶
Nfc#authorize(dev, block, key)
Realiza la autorización de un bloque para lectura / escritura
Parámetros¶
- dev Instancia de dispositivo NfC
- block Número de bloque que desea escribir / leer
- key Clave para leer / escribir un bloque específico
Devuelve¶
- 0 Se realiza la autorización
- -4 Se pasa parámetros incorrectos
- -5 Error de autorización (key incorrecta)
readBlockData¶
Nfc#readBlockData(dev, block)
Leer el bloque enviado
Parámetros¶
- dev Instancia de dispositivo NfC
- block Numero de bloque que desea leer
Devuelve¶
- PhBuffer En caso de éxito, Devuelve un buffer con los datos del bloque
- -7 Error al leer la tarjeta
writeBlockData¶
Nfc#readBlock(dev, buffer, block)
Escribe datos en un bloque
Parámetros¶
- dev Instancia de dispositivo NfC
- buffer PhBuffer con los datos que quieres escribir en la tarjeta
- block Número de bloque que desea escribir
Devuelve¶
Devuelve el número de bytes escritos en la tarjeta o -6 si no puedes escribir.
Nfc#getData(config)
Recupera datos de una tag NFC detectada
Parámetros¶
- dev Instancia de dispositivo Nfc.
Devuelve¶
PhBuffer en caso de éxito o invalid en caso de error
Ejemplos¶
use url Device "package://libs#dev/dev.wmlsc"; use url Nfc "package://libs#dev/nfc.wmlsc"; function test () { var config = PhStruct.create( "{" + "minSize : word;" + "maxSize : maxSize;" + "beep : boolean;" + "}"); PhStruct.set(config, "maxSize", 16); PhStruct.set(config, "minSize", 16); PhStruct.set(config, "beep", true); var nfc = Nfc#create(config); if(Device#connect(nfc)) { var detect = false; while(!detect) { detect = Nfc#detect(nfc); if(detect) { var uid = Nfc#getUID(nfc); var data = Nfc#getUID(nfc); var strUid = PhBuffer.getAsHexString(uid, 0, PhBuffer.getSize(uid)); var strData = PhBuffer.getAsHexString(data, 0, PhBuffer.getSize(data)); Dialogs.alert("tag UID: " + strUid); Dialogs.alert("tag data: " + strData); } } } }Salida:
tag UID: 0x8804E855 -- tag data: 0xFFE8A001
Printer¶
| package://libs#dev/printer.wmlsc |
|---|
Implementación para uso de la impresora.
Sumario¶
Función Descripción create Crear dispositivo printer. write Escribe datos con la impresora. checkPaper Compruebe la existencia de un bonbina de impresión. feedPaper Deja el papel en el punto de corte. setFont Apuntar la font de impresión. setFontSize Apuntar la font y el tamaño de la altura y la anchura de los caracteres. printBC Imprime código de barras en dos dimensiones.
Tipos de alineación en la impresión¶
Constantes Valor Descripción Printer#ALIGN_NONE 0 Sin alineación Printer#ALIGN_CENTER 1 Centralizado Printer#ALIGN_LEFT 2 Alineado a la izquierda Printer#ALIGN_RIGHT 3 Alineado a la derecha Printer#ALIGN_JUSTIFY 4 Justificado
Información de la impresora¶
Constantes Valor Descripción Printer#FIELD_PRINT_WIDTH 500 Número de columnas a imprimir. Printer#FIELD_PRINTED_LINES 501 Número de líneas ya impresas por la terminal.
create¶
Printer#create(config)
Cree una impresora de dispositivo para escribir datos de impresora.
Parámetros¶
- config: String vácia ("");
Devuelve¶
invalid o Printer creado.
write¶
Printer#write(dev, data, align)
Escribe datos con la impresora.
Parámetros¶
- dev: Instancia de dispositivo de impresora creada a partir de Printer#create;
- data: Datos a imprimir pueden ser String o streamFile;
- align: Alineación de la información a imprimir;
Devuelve¶
true en el éxito o false indicando falla.
checkPaper¶
Printer#checkPaper(dev)
Compruebe la existencia de un bonbina de impresión.
Parámetros¶
- dev: Instancia de dispositivo de impresora creada a partir de Printer#create;
Devuelve¶
true indica la presencia de papel y false indica ausencia.
feedPaper¶
Printer#feedPaper(dev)
Deje el papel en el punto de corte.
Parámetros¶
- dev: Instancia de dispositivo de impresora creada a partir de Printer#create;
Devuelve¶
true en el éxito o false indicando falla.
setFont¶
Printer#setFont(fontName)
Apuntar la font de impresión. Obs.: Actualmente, esta función solo se admite en terminales PAX S920
Parámetros¶
- fontName: String con el nombre de la font (la font debe estar cargada en la terminal)
Devuelve¶
true en el éxito o false si la font no está cargada.
setFontSize¶
Printer#setFontSize(fontName, width, height)
Apuntar la font y el tamaño de la altura y la anchura de los caracteres.
Obs.: Actualmente, esta función solo es compatible con terminales PAX S920.
Parámetros¶
- fontName: String con el nombre de la font a utilizar.
- width: Tamaño de ancho de carácter.
- height: Tamaño de la altura de los caracteres.
Devuelve¶
true en el éxito o false en caso de falla.
printBC¶
Printer#printBC(data)
Imprime el código de barras horizontalmente
Parámetros¶
- dev : Dispositivo tipo TYPE_PRINTER
- data: Escribiendo los datos TYPE_STRING que se utilizarán para generar el BC;
Devuelve¶
true en el éxito o false en caso de falla.
Exemplos:¶
use url Device "package://libs#dev/dev.wmlsc"; use url Printer "package://libs#dev/printer.wmlsc"; function test () { var dev = Printer#create(""); if (Device#connect(dev)) { Printer#setFontSize("COURIER.TTF", 10, 20); if (Printer#checkPaper(dev)) { Printer#write(dev, "PRINT TEST", Printer#ALIGN_CENTER()); Printer#feedPaper(dev); } } }Salida:
PRINT TEST
Touch¶
| package://libs#dev/touch.wmlsc |
|---|
Interface para usar el dispositivo Touch
Sumario¶
Función Descripción create Crear dispositivo Touch add Incluya un área sensible al tacto en la pantalla. remove Eliminar un área agregada anteriormente. isSupported Indica soporte de touchscreen sin terminal. wait Espere hasta que se seleccione (reproduzca) un área para registrar.
create¶
Touch#create(config)
Crear dispositivo Touch
Parámetros¶
- config String vácia ("") para la patrón de configuración
Devuelve¶
invalid o Touch creado
add¶
Touch#add(x, y, width, height, code, beep)
Incluya un área sensible al tacto en la pantalla.
Parámetros¶
- x Integer que representa la posición horizontal (X) en pixel.
- y Integer que representa la posición vertical (Y) en pixel.
- width Integer que representa el ancho de pixel.
- height Integer que representa la altura en pixel.
- code Valor asociado a la región.
- beep duración al tocar la zona. Si es 0, no se emitirá ningún beep.
Devuelve¶
Se agregó un ID de área y invalid si la touchscreen no es compatible o se produce un error.
remove¶
Touch#remove(id)
Elimina un área previamente agregada.
Parámetros¶
- id Integer que representa el ID del área.
Devuelve¶
true si encuentra y elimina el área o false en caso contrario.
isSupported¶
Touch#isSupported()
Indica si la touchscreen es compatible con la terminal.
Devuelve¶
true caso de soporte y false si no es compatible.
wait¶
Touch#wait(timeout)
Espere hasta que se seleccione (reproduzca) un área para registrar.
Parámetros¶
- timeout Integer que representa el tiempo de espera (ms).
Devuelve¶
Id del área seleccionada, -1 en el tiempo de espera y invalid si la touchscreen no es compatible o se produce un error.
Ejemplos¶
use url Device "package://libs#dev/dev.wmlsc"; use url Touch "package://libs#dev/touch.wmlsc"; function test () { if (Touch#isSupported()) { var touch = Touch#create(""); if (Device#connect(touch)) { var id = Touch#add(0, 0, 10, 10, 0, 0); if (isvalid id && (id >= 0)) { if (Touch#wait(10000) >= 0) { Dialogs.alert("Tacto detectado"); } else { Dialogs.alert("Undefined área fue tocada"); } Touch#remove(id); } } } }Salida:
Tacto detectado
VM¶
Implementa scripts de propósito general de VM (Virtual Machine). Máquina virtual propietaria responsable de interpretar dos scripts compilados e instalados en el dispositivo.
Core¶
Script Descripción Call Proporciona funciones para la ejecución directa de scripts. Init Proporciona funciones para interpretar archivos .ini Map Proporciona funciones para manipular listas mapeadas (clave, valor) iniFile Proporciona funciones para leer y escribir archivos INI
Call¶
| package://vm#core/call.wmlsc |
|---|
Sumario de Funciones¶
Función Descripción call Ejecute directamente una función en un script. getModule Extrae el módulo del String informado como parámetro getFunction Extrae la función de la String informada como parámetro
call¶
Call#call (function_path, params); Ejecute directamente una función en un script. La función debe contener en su firma el modificador externo.
Parámetros¶
- function_path - Stringque contiene el paquete con el script y la función a ejecutar en el formato package://pacote/script.wmlsc# function
- params - PhList que contiene los parámetros que se pasarán a la función.
Devuelve¶
invalid en caso de falla o devolución puntual de la función ejecutada.
getModule¶
Call#getModule (function_path, default_module); Extrae el módulo del String informado como parámetro
Parámetros¶
- function_path - String que contiene el paquete con el script y la función a ejecutar en el formato package://pacote/script.wmlsc# function
- default_module - módulo default que se Devuelveá si función no puede extraer el módulo de path.
Devuelve¶
módulo extraído o default_module
getFunction¶
Call#getFunction (function_path); Extrae la función de la String informada como parámetro
Parámetros¶
- function_path - String que contiene el paquete con el script y la función a ejecutar en el formato package://pacote/script.wmlsc# function
Devuelve¶
invalid en caso de falla o el String con la función extraída de function_path
Ejemplo¶
use url Call "package://vm#core/call.wmlsc"; /*function que sera executada via chamada call */ extern function exibeAlert() { Dialogs.alert("corriendo a través de la llamada call"); } function testeCall() { var function_path = "package://scripttest/doc.wmlsc#exibeAlert"; Dialogs.alert("Modulo: " + Call#getModule(function_path, "module default")); Dialogs.alert("function: " + Call#getFunction(function_path)); Call#call(function_path, []); }Salida¶
Modulo: package://scripttest/doc.wmlsc function: exibeAlert corriendo a través de la llamada call
Init¶
| package://vm#core/init.wmlsc |
|---|
Implementación de un analizador de archivos INI. A través de esta api es posible cargar un archivo ini para un objeto Map.
Constantes Descripción Init#G_PHVM_INI_FILENAME Devuelve el nombre del archivo ini "PHVM.INI"
Sumario de Funciones¶
Función Descripción getSession Devuelve las claves y valores de una sesión.
getSession¶
Init#getSession (stream, session); Devuelve las claves y valores de una sesión.
Parámetros¶
- stream - vm#stream con los datos.
- session - Nombre de la sesión para recuperar el valor de la clave.
Devuelve¶
map con clave, valor o invalid en caso de error.
Vea: map.wmlsc
Ejemplo¶
use url StreamFile "package://vm#stream/file.wmlsc"; use url Ini "package://vm#core/init.wmlsc"; use url Map "package://vm#core/map.wmlsc"; function testeINI() { var stream = StreamFile#createExt("cfg", StreamFile#O_RDONLY()); if (isvalid stream) { var map = Ini#getSession(stream, "General"); if (isvalid map) Dialogs.alert("Skin: " + Map#get(map, "skinName")); else Dialogs.alert("sesión no encontrada"); } else Dialogs.alert("No es posible abrir el archivo"); }Salida¶
Skin: VX690;
Map¶
| package://vm#core/map.wmlsc |
|---|
Map es una de las implementaciones que conforman el núcleo de los scripts de VM (Virtual Machine) de propósito general. Ser responsable de proporcionar funciones que permitan la manipulación de listas mapeadas (clave, valor). Un objeto Map es un mapa de clave / valor simple sobre el que se pueden iterar sus elementos en el orden de inserción. A continuación, enumeramos las funciones nativas de Map y un ejemplo descriptivo de la implementación de estas funciones.
Sumario de Funciones¶
Función Descripción create Crea um map (lista mapeada con clave, valor). isMap Comprueba si el objeto informado es un map. put Insertar un elemento (clave, valor) en el map. get Recuperar un valor del map. remove Eliminar un elemento del map. keys Devuelve las claves en el map. values Devuelve los valores en el map. size Devuelve el número de elementos en el map. isEmpty Comprueba si el map está vacío putOrder Insertar elementos de forma ordenada en el map. concat Concatenar un map a otro map.
create¶
Map#create()
Crea un objeto de map (lista mapeada con clave, valor).
Parámetros¶
No hay.
Devuelve¶
Map creado.
isMap¶
Map#isMap(map)
Comprueba si el objeto informado es un map.
Parámetros¶
- map - Objeto de map creado a través de #create();
Devuelve¶
true si el objeto informado es un map. false si el objeto no es un map.
put¶
Map#put(map, key, value)
Inserte un elemento (clave, valor) en el map. Si el elemento ya existe, se sobrescribirá.
Parámetros¶
- map - Objeto de map creado a través de #create();
- key - Clave para el valor (value);
- value - Valor que desea guardar;
Devuelve¶
true éxito o false en caso de falla;
get¶
Map#get(map, key)
Recupera un valor del map según la clave informada.
Parámetros¶
- map - Objeto de map creado a través de #create();
- key - Clave para el valor (value);
Devuelve¶
invalid en caso de error o el valor de la clave.
remove¶
Map#remove(map, key)
Al pasar una clave del map, se elimina el valor.
Parámetros¶
- map - Objeto de map creado a través de #create();
- key - Clave para el valor (value);
Devuelve¶
true éxito o false en caso de falla;
keys¶
Map#keys(map)
Devuelve las claves en el map.
Parámetros¶
- map - Objeto de map creado a través de #create();
Devuelve¶
PhList con las claves que existen en el map.
values¶
Map#values(map)
Devuelve los valores en el map.
Parámetros¶
- map - Objeto de map creado a través de #create();
Devuelve¶
PhList con los valores que existen en el map.
size¶
Map#size(map)
Devuelve la cantidad de elementos en el map.
Parámetros¶
- map - Objeto de map creado a través de #create();
Devuelve¶
Integer con la cantidad de elementos.
isEmpty¶
Map#isEmpty(map)
Comprueba si el map está vacío.
Parámetros¶
- map - Objeto de map creado a través de #create();
Devuelve¶
true en el éxito o false en caso falla.
putOrder¶
Map#putOrder(map, key, value)
Coloque los elementos de forma ordenada en el map.
Parámetros¶
- map - Objeto de map creado a través de #create();
- key - Clave para el valor (value);
- value - Valor que desea guardar;
Devuelve¶
true éxito o false en caso de falla.
concat¶
Map#concat(map1, map2)
Concatenar un map a otro map.
Parámetros¶
- map1 - Map de destino que recibirá nuevos valores;
- map2 - Map que será concatenado;
Devuelve¶
map1 que contiene los dos maps o invalid en caso de error.
Ejemplo:¶
use url Map "package://vm#core/map.wmlsc"; function testeMap() { var map = Map#create(); if (Map#isMap(map)) { Dialogs.alert("Map valido"); if (Map#isEmpty(map)) { Dialogs.alert("Map está vazio"); } Map#put(map, "Clave1", "valor1"); Map#put(map, "Clave2", "valor2"); Map#put(map, "Clave3", "valor3"); Map#put(map, "Clave4", "valor4"); var qtd = Map#size(map); Dialogs.alert("Qtd de itens: " + qtd); var keys = Map#keys(map); for (var x = 0; x < PhList.count(keys); x++) Dialogs.alert(keys[x]); var values = Map#values(map); for (x = 0; x < PhList.count(values); x++) Dialogs.alert(values[x]); Map#remove(map, "Clave3"); values = Map#values(map); for (x = 0; x < PhList.count(values); x++) Dialogs.alert(values[x]); var map2 = Map#create(); Map#put(map2, "key1", "value1"); Map#put(map2, "key2", "value2"); map = Map#concat(map, map2); keys = Map#keys(map); for (x = 0; x < PhList.count(keys); x++) { Dialogs.alert(keys[x] + " = " + Map#get(map, keys[x])); } var key = Map#get(map, "Clave1"); Dialogs.alert(key); } }Salida¶
Map válido Map está vacío Qtd de itens: 4 Clave1 Clave2 Clave3 Clave4 Valor1 Valor2 Valor3 Valor4 Valor1 Valor2 Valor4 Clave1 = valor1 Clave2 = valor2 Clave4 = valor4 key1 = value1 key2 = value2 valor1
iniFile¶
| package://vm#core/inifile.wmlsc |
|---|
Interface para leer y escribir archivos INI.
Sumario de Funciones¶
Función Descripción create Crea un stream de un archivo ini para leer y escribir. Devuelve un map - phast#utils/map. getSession Devuelve claves y valores para una sesión. getSection Devuelve claves de sesión y valores de un map - phast#utils/map. readSectionsFromStream Devuelve un Map con los nombres de sesión en la propiedad de key de una stream de archivo. readSections Devuelve un PhList con los nombres de sesión en la propiedad de la key. sectionExists Compruebe si existe la sesión. Devuelve true o false. deleteSection Devuelve claves y valores para una sesión. addSection Agregue una sesión al map que representa el archivo ini. addSectionWithValue Agregue una sesión clave / valor al map que representa el archivo ini. deleteKey Eliminar una clave del map que representa el archivo ini. KeyExists Compruebe si existe la sesión. Devuelve true o false. getString String o invalid en caso de error. setString Asignar un valor de String a una clave. Devuelve boolean true/false setInteger Asignar un valor de integer a una clave. Devuelve boolean true/false getInteger Devuelve un integer o invalid en caso de error. flush Método que escribe los datos del map que representan el ini en la memoria en el archivo físico.
create¶
IniFile#create (fileName); Crea un stream de un archivo ini para leer y escribir. Devuelve un map - phast#utils/map.
Parámetros¶
- fileName - String con el nombre del archivo.
Devuelve¶
map con clave, valor o invalid en caso de error.
Vea: map.wmlsc
Ejemplo¶
use url IniFile "package://vm#core/inifile.wmlsc"; use url Map "package://vm#core/map.wmlsc"; extern function sample01() { var ini = IniFile#create("f.ini"); //lendo todas as sessões do arquivo ini var sNameSection = IniFile#readSections(ini); for (var i = 0; i < PhList.count(sNameSection); i++) { Dialogs.alertExt("sesión name: " + String.toString(sNameSection[i]), 1); } }
getSession¶
IniFile#getSession (stream, session); Devuelve claves y valores para una sesión.
Parámetros¶
- stream - vm#stream con los datos.
- session - Nombre de la sesión para recuperar el valor de la clave.
Devuelve¶
map con clave, valor o invalid en caso de error.
Vea: map.wmlsc
Ejemplo¶
use url StreamFile "package://vm#stream/file.wmlsc"; use url IniFile "package://vm#core/inifile.wmlsc"; use url Map "package://vm#core/map.wmlsc"; function testeINI() { var stream = StreamFile#createExt("cfg", StreamFile#O_RDONLY()); if (isvalid stream) { var map = IniFile#getSession(stream, "General"); if (isvalid map) Dialogs.alert("Skin: " + Map#get(map, "skinName")); else Dialogs.alert("Sesión no encontrada"); } else Dialogs.alert("No es posible abrir el archivo"); }Salida¶
Skin: VX690;
getSection¶
IniFile#getSection (map, sessionName); Devuelve claves de sesión y valores de un map que representa o arquivo ini.
Parámetros¶
- map - map - phast#utils/map
- sessionName - Nombre de la sesión para recuperar el valor de la clave.
Devuelve¶
map con clave, valor o invalid en caso de error.
Vea: map.wmlsc
Ejemplo¶
use url IniFile "package://vm#core/inifile.wmlsc"; use url Map "package://vm#core/map.wmlsc"; extern function sample02() { var ini = IniFile#create("f.ini"); //lendo todas as key/value de uma sessão do arquivo ini var str = Input#getString ("Digite a Sessão:", "", "", 15, invalid, true); if (String.length(str) > 0) { var sections = IniFile#getSection(ini, str); var keys = Map#keys(sections); var values = Map#values(sections); for (var i = 0; i < Map#size(sections); i++) { Dialogs.alertExt( String.toString(keys[i] ) + " = " + String.toString(values[i]), 2); } } }
readSectionsFromStream¶
IniFile#readSectionsFromStream (stream); Devuelve un Map con los nombres de sesión en la propiedad de key de una stream de archivo.
Parámetros¶
- stream vm#stream con los datos
Devuelve¶
map con clave, valor o invalid en caso de error.
Vea: map.wmlsc
Ejemplo¶
Consulte el ejemplo SampleIni del SDK.
readSections¶
IniFile#readSections (map); Devuelve un map con los nombres de sesión en la propiedad key de una stream de archivos.
Parámetros¶
- map - map phast#utils/map con los datos del archivo ini cargados desde el método de create
Devuelve¶
PhList con las claves oo invalid.
Ejemplo¶
Consulte el ejemplo SampleIni del SDK.
sectionExists¶
IniFile#sectionExists (map, sectionName); Compruebe si existe la sesión. Devuelve True o False.
Parámetros¶
- map - map phast#utils/map con los datos del archivo ini cargados desde el método de create
- sectionName - String con el nombre de la sesión.
Devuelve¶
Boolean true/false
Ejemplo¶
Consulte el ejemplo SampleIni del SDK.
deleteSection¶
IniFile#deleteSection (map, sectionName); Elimine la sesión del map que representa el archivo ini.
Parámetros¶
- map - map phast#utils/map con los datos del archivo ini cargados desde el método create
- sectionName - String con el nombre de la sesión.
Devuelve¶
boolean true/false
Ejemplo¶
Consulte el ejemplo SampleIni del SDK.
addSection¶
IniFile#addSection (map, sectionName); Agregue una sesión al map que representa el archivo ini.
Parámetros¶
- map - map phast#utils/map con los datos del archivo ini cargados desde el método create
- sectionName - String con el nombre de la sesión.
Devuelve¶
boolean true/false
Ejemplo¶
Consulte el ejemplo SampleIni del SDK.
addSectionWithValue¶
IniFile#addSectionWithValue (map, sectionName, keyValues); Agregue una sesión clave / valor al map que representa el archivo ini.
Parámetros¶
- map - map phast#utils/map con los datos del archivo ini cargados desde el método create
- sectionName - String con el nombre de la sesión.
- keyValues - map phast#utils/map que representa la clave de sesión y la información del valor.
Devuelve¶
boolean true/false
Ejemplo¶
Consulte el ejemplo SampleIni del SDK.
deleteKey¶
IniFile#deleteKey (map, sectionName, keyValues); Eliminar una clave del map que representa el archivo ini.
Parámetros¶
- map - map phast#utils/map con los datos del archivo ini cargados desde el método create
- sectionName - String con el nombre de la sesión.
- keyValues - map phast#utils/map que representa la clave de sesión y la información del valor.
Devuelve¶
boolean true/false
Ejemplo¶
Consulte el ejemplo SampleIni del SDK.
KeyExists¶
IniFile#KeyExists (map, sectionName, key); Compruebe si existe la sesión. Devuelve true o false.
Parámetros¶
- map - map phast#utils/map con los datos del archivo ini cargados desde el método de create
- sectionName - String con el nombre de la sesión.
- key - String clave para ser encontrada
Devuelve¶
boolean true/false
Ejemplo¶
Consulte el ejemplo SampleIni del SDK.
getString¶
IniFile#getString (map, section, key, defaultValue); Devuelve String o invalid en caso de error.
Parámetros¶
- map - map phast#utils/map con los datos del archivo ini cargados desde el método create
- section - String con el nombre de la sesión.
- key - String clave para ser encontrada
- defaultValue - String con el valor default que se Devuelveá si no se encuentra el valor buscado.
Devuelve¶
String
Ejemplo¶
Consulte el ejemplo SampleIni del SDK.
setString¶
IniFile#setString (map, section, key, value); Asigné una String al mapa que representa el archivo ini.
Parámetros¶
- map - map phast#utils/map con los datos del archivo ini cargados desde el método create
- section - String con el nombre de la sesión.
- key - String clave para ser encontrada
- value - String para ser asignado.
Devuelve¶
Boolean true/false.
Ejemplo¶
Consulte el ejemplo SampleIni del SDK.
setInteger¶
IniFile#setInteger (map, section, key, value); He asignado un Integer al mapa que representa el archivo ini.
Parámetros¶
- map - map phast#utils/map con los datos del archivo ini cargados desde el método create
- section - String con el nombre de la sesión.
- key - String clave para ser encontrada
- value - Integer para ser asignado.
Devuelve¶
Boolean true/false.
Ejemplo¶
Consulte el ejemplo SampleIni del SDK.
getInteger¶
IniFile#getInteger (map, section, key, defaultValue); Devuelve un integer o invalid en caso de error.
Parámetros¶
- map - map phast#utils/map con los datos del archivo ini cargados desde el método create
- section - String con el nombre de la sesión.
- key - String clave para ser encontrada
- defaultValue - String con valor default que se Devuelveá si no se encuentra el valor buscado.
Devuelve¶
Integer
Ejemplo¶
Consulte el ejemplo SampleIni del SDK.
flush¶
IniFile#flush (ini); Método que escribe los datos del map que representa el ini en la memoria en el archivo físico. Para que los cambios realizados se conserven físicamente, es necesario ejecutar este método.
Parámetros¶
- ini - map phast#utils/map con los datos del archivo ini cargados desde el método create
Devuelve¶
void
Ejemplo¶
Consulte el ejemplo SampleIni del SDK.
Stream¶
Script Descripción StreamBuffer Dirige el flujo de datos (Stream) a buffers StreamData Permite la lectura y escritura de tipos nativos en streams de datos. StreamEndian Implementa el envío de datos big endian en stream de datos StreamFile Proporciona interface de lectura y escritura de arquivos Gzip Proporciona interface de lectura y escritura en el formato GZ StreamPhTAR Proporciona interface de lectura y escritura en el formato TAR Stream Proporciona interface patrón de lectura y escritura de datos
StreamBuffer¶
| package://vm#stream/bfwriter.wmlsc |
|---|
StreamBufferes una de las implementaciones que constituyen el núcleo de los scripts de propósito general para el VM (Virtual Machine). Ser responsable de proporcionar funciones que permitan la copia de datos en el buffer, escribiéndolos y controlando el flujo de esta operación. A continuación, enumeramos las funciones nativas de StreamBuffer y un ejemplo descriptivo de la implementación de estas funciones.
Sumario de Funciones¶
Función Descripción create Decora una stream para copiar datos en buffer. write Escribiendo datos en buffer, los datos son enviados por flush. flush Envía datos en la memoria al destino correcto. Constantes¶
Constantes Valor StreamBuffer#FLUSH_NONE 0 StreamBuffer#FLUSH_READ 1 StreamBuffer#FLUSH_WRITE 2 StreamBuffer#FLUSH_ALL 3
create¶
StreamBuffer#create(stream);
Decorar (preparar) una stream para copiar datos en buffer.
Parámetros¶
- stream - stream ya existe;
Devuelve¶
Stream decorado para escribir en buffer.
write¶
StreamBuffer#write(self, buffer)
Escribiendo datos en buffer, los datos son enviados por flush.
Parámetros¶
- self - controlador de stream creado previamente por StreamBuffer#create;
- buffer - con los datos que quieres enviar;
Devuelve¶
Número de bytes enviados o -1.
flush¶
StreamBuffer#flush(stream, type)
Envía datos en la memoria al destino correcto.
Parámetros¶
- stream - controlador de stream creado previamente por StreamBuffer#create;
- type - integer expresado por constante; - ver listado
Devuelve¶
-1 en caso de error o 0 en caso contrario.
Ejemplo:¶
use url Map "package://vm#core/map.wmlsc"; extern function test() { var stream = StreamBuffer#create(StreamCore#create(invalid, PhBuffer.create(0), invalid)); if (isvalid stream) { var str = StreamBuffer#write(stream, PhBuffer.create("Teste do buffer")); var flh = StreamBuffer#flush(stream, 2 ); if(flh == 0) { Dialogs.alert("Datos guardatos exitosamente"); } else if(flh == -1) { Dialogs.alert("Error de grabación!"); } } else { Dialogs.alert("falla al grabar"); } }Salida¶
Datos guardatos exitosamente
StreamData¶
| package://vm#stream/data.wmlsc |
|---|
Permite la lectura y escritura de tipos nativos en streams de datos.
Formatos¶
Constantes Descripción SHORT_BIGENDIANN Big Endian 2 bytes SHORT_LITTLEENDIANN Little Endian 2 bytes LONG_BIGENDIANN Big Endian 4 bytes LONG_LITTLEENDIANN Little Endian 4 bytes
Sumario de Funciones¶
Función Descripción writeString Escribe un String en stream. readString Leer una String de la stream. writeInteger Escribe un integer en el formato especificado en la stream. readInteger Lê do stream um integer sem formato indicado writePhType Escribe el tipo PhType en la stream con el formato CSTD readPhType Lee el tipo PhType con el formato de la stream CSTD
writeString¶
StreamData#writeString(stream, value); Escribe un String en stream.
Parámetros¶
- stream - Controlador de stream creado previamente
- value - Valor que se convertirá en String y se copiará
Devuelve¶
número de bytes copiados o número negativo que indica error
readString¶
StreamData#readString(stream, length); Leer una String de la stream.
Parámetros¶
- stream - Controlador de stream creado previamente
- length - tamaño máximo de String
Devuelve¶
invalid ou a String lida
writeInteger¶
StreamData#writeInteger(stream, value, format); Escribe un integer en el formato especificado en la stream.
Parámetros¶
- stream - Controlador de stream creado previamente
- value - Valor que se convertirá y copiará
- format - # ENDIANNESS
Devuelve¶
Número de bytes copiados o número negativo que indica error
readInteger¶
StreamData#readInteger(stream, length); Lee un Integer sin formato de la stream.
Parámetros¶
- stream - Controlador de stream creado previamente
- length - tamaño máximo de String
Devuelve¶
invalid o el valor leído
writePhType¶
StreamData#writePhType(stream, phtype); Escribe el tipo PhType en la stream con el formato CSTD
Parámetros¶
- stream - Controlador de stream creado previamente
- phtype - Valor que se escribirá
Devuelve¶
Número de bytes copiados o número negativo que indica error
readPhType¶
StreamData#readPhType(stream, phtype); Escribe el tipo PhType en la stream con el formato CSTD
Parámetros¶
- stream - Controlador de stream creado previamente
- PhType que se ajustará con el valor leído de la stream
Devuelve¶
Número de bytes leídos o número negativo que indica error
Ejemplo¶
use url StreamData "package://vm#stream/data.wmlsc"; use url StreamFile "package://vm#stream/file.wmlsc"; use url StreamCore "package://vm#stream/stream.wmlsc"; function testeStreamData() { var fileData = StreamFile#createExt("TST", StreamFile#O_CREAT()); var dataTypeStr = PhType.create(PhType.STRING); var dataTypeInt = PhType.create(PhType.WORD); var dataStr = "Teste String"; var dataInt = 1; /* Gravar */ StreamData#writeString(fileData, dataStr); StreamData#writeInteger(fileData, dataInt, StreamData#SHORT_LITTLEENDIANN()); PhType.set(dataTypeStr, "Teste PhType"); PhType.set(dataTypeInt, 2); StreamData#writePhType(fileData, dataTypeStr); StreamData#writePhType(fileData, dataTypeInt); /* Ler */ StreamCore#seek(fileData, 0, StreamCore#SEEK_SET()); Dialogs.alert(StreamData#readString(fileData, 12)); Dialogs.alert(StreamData#readInteger(fileData, StreamData#SHORT_LITTLEENDIANN())); var TypeStr = PhType.create(PhType.STRING); StreamData#readPhType(fileData, TypeStr); Dialogs.alert(PhType.get(TypeStr)); var TypeInt = PhType.create(PhType.WORD); StreamData#readPhType(fileData, TypeInt); Dialogs.alert(PhType.get(TypeInt)); }Salida¶
Teste String 1 Teste PhType 2
StreamEndian¶
| package://vm#stream/endian.wmlsc |
|---|
Implementa la transmisión de datos big endian en la stream de datos.
Sumario de Funciones¶
Función Descripción create Crea un stream decorado con big endianness. write Escribir datos en stream read Lee datos destream available Devuelve cuántos bytes hay en el canal
create¶
StreamEndian#create(stream, format) Crea un stream decorado con big endianness.
Parámetros¶
- stream - Controlador de stream creado previamente
- format - ver formatos stream/data
Devuelve¶
Stream decorado
write¶
StreamEndian#write(self, buffer) Escribir datos en stream
Parámetros¶
- self - Controlador de stream creado previamente
- buffer - PhBuffer con los datos que quieres enviar
Devuelve¶
Número de bytes enviados o -1
read¶
StreamEndian#read(self, buffer) Leer datos de la stream
Parámetros¶
- self - Controlador de stream creado previamente
- buffer - PhBuffer quién recibirá los datos leídos
Devuelve¶
Número de bytes leídos o -1
available¶
StreamEndian#available(self) Devuelve cuántos bytes hay en el canal
Parámetros¶
- self - Controlador de stream creado previamente
Devuelve¶
Número de bytes que se pueden leer.
Ejemplo¶
use url StreamLen "package://vm#stream/endian.wmlsc"; use url StreamFile "package://vm#stream/file.wmlsc"; use url StreamCore "package://vm#stream/stream.wmlsc"; function testeEndian() { var file = StreamFile#createExt("TST", StreamFile#O_CREAT()); var endian = StreamLen#create(file, StreamData#SHORT_LITTLEENDIANN()); StreamLen#write(endian, PhBuffer.create("Teste Endian")); StreamCore#seek(file, 0, StreamCore#SEEK_SET()); Dialogs.alert("Disponible: " + StreamLen#available(endian)); var readBuffer = PhBuffer.create(""); PhBuffer.resize(readBuffer, StreamLen#available(endian)); StreamLen#read(endian, readBuffer); Dialogs.alert(PhBuffer.getAsString(readBuffer, 0, PhBuffer.getSize(readBuffer))); }Salida¶
Disponible: 12 Teste Endian
StreamFile¶
| package://vm#stream/file.wmlsc |
|---|
Proporciona abstracción de archivos de lectura y escritura.
Permissões¶
Constantes Descripción StreamFile#O_CREAT Creará un archivo vacío. StreamFile#O_WRONLY Abra el archivo con permiso de escribiendo. StreamFile#O_RDONLY Abra el archivo con permiso de leyendo. StreamFile#O_RDWR Abra el archivo con permiso de leyendo y escribiendo. StreamFile#O_APPEND Abra el archivo para actualizar ya colocado al final del mismo. StreamFile#O_TRUNC Abra el archivo para escribir, si existe el tamaño será 0. StreamFile#O_CODEFILE Indica que los bytes copiados en esta stream deben tratarse como ejecutables. StreamFile#O_RAWNAME Forzar a la API a usar el nombre exacto pasado para acceder al archivo. StreamFile#O_FLASH_MODE Forzar a la API a utilizar el sistema de archivos en la memoria FLASH. StreamFile#O_VOLATILE Indica que arquivo criado com esse modo será voltátil, ou seja, quando o arquivo for fechado o contéudo será perdido. StreamFile#O_CACHE Habilita el caché
Sumario de Funciones¶
Función Descripción create Cree una nueva stream para manejar archivos createExt Cree una nueva stream para manejar archivos en flash si la terminal lo admite; de lo contrario, crea una stream en la memoria patrón. erase Eliminar el archivo. eraseExt Eliminar archivo con soporte de memoria flash. getRealName Devuelve el nombre real el archivo creado en el disco rename Cambiar el nombre del archivo. createVolatile Cree una nueva stream para la manipulación de archivos en la memoria volátil. getContext Devuelve el nombre del contexto de la aplicación. createDir Crea un nuevo directório compress Comprime un archivo uncompress Descomprime un archivo
create¶
StreamFile#create(filename, mode)
Cree una nueva stream para manejar archivos
Parámetros¶
- filename - El nombre del recurso que se creará
- mode - Permiso del archivo Ver Constantes
Devuelve¶
Boolean - true en caso de éxito o false de lo contrario
createExt¶
StreamFile#createExt(filename, mode)
Cree una nueva stream para manejar archivos en flash si la terminal lo admite; de lo contrario, crea una stream en la memoria patrón. Obs: La función también es compatible con O_FLASH_MODE para la terminal Vx670
Parámetros¶
- filename - El nombre del recurso que se creará
- mode - Ver Constantes
Devuelve¶
true en caso de éxito o false de lo contrario
erase¶
StreamFile#erase(filename, mode)
Eliminar el archivo
Parámetros¶
- filename - El nombre del recurso que se creará
- mode - 0 (Cero) o #O_RAWNAME
Devuelve¶
true en caso de éxito o false de lo contrario
eraseExt¶
StreamFile#eraseExt(filename, mode)
Eliminar archivo con soporte de memoria flash
Funciones de stream compatibles read/seek
Parámetros¶
- filename - El nombre del recurso que se creará
- mode - 0 (Cero) o #O_RAWNAME admite internamente O_FLASH_MODE para terminal Vx670
Devuelve¶
true en caso de éxito o false de lo contrario
getRealName¶
StreamFile#getRealName(filename)
Retorna o nome real do arquivo criado em disco
Parámetros¶
- filename - El nombre original del archivo
Devuelve¶
Invalid o String
rename¶
StreamFile#rename(filename, newname, mode)
Cambiar el nombre del archivo
Parámetros¶
- filename - El nombre del recurso que se creará
- newName - Nuevo nombre de archivo
- mode - 0 (Cero) o #O_RAWNAME
Devuelve¶
true en caso de éxito o false de lo contrario
createVolatile¶
StreamFile#createVolatile(filename) Cree una nueva stream para la manipulación de archivos en la memoria volátil
Funciones de stream compatibles write/read/seek
Parámetros¶
- filename - El nombre del recurso que se creará. Tamaño hasta 4 bytes
- mode - 0 (Cero) o #O_RAWNAME admite internamente O_FLASH_MODE para terminal Vx670
Devuelve¶
invalid en caso de error o handle para la stream file
getContext¶
StreamFile#getContext()
Devuelve el contexto de la aplicación en ejecución
Devuelve¶
String que representa el nombre del contexto, suele ser un nombre de app en mayúsculas.
Ejemplo¶
use url StreamFile "package://vm#stream/file.wmlsc"; function testeFile() { var file = StreamFile#createExt("TST", StreamFile#O_CREAT()); if (StreamFile#rename("TST", "TST2", 0)) Dialogs.alert("Archivo renombrado"); else Dialogs.alert("Falla al cambiar el nombre"); if (StreamFile#erase("TST2", 0)) Dialogs.alert("Archivo eliminado"); else Dialogs.alert("Falla al eliminar"); }Salida¶
Archivo renombrado Archivo eliminado
createDir¶
StreamFile#createDir(path_)
Crear un nuevo directorio
Parámetros¶
- path_ - Ruta donde se creará el directorio
Devuelve¶
Invalid o Boolean - (true en caso de éxito o false de lo contrario)
compress¶
StreamFile#compress(origName, destName)
Comprime un archivo en Zip
Parámetros¶
- origName - Nombre del archivo a comprimir
- destName - Nombre de destino del archivo a comprimir
Devuelve¶
Invalid o Boolean - (true en caso de éxito o false de lo contrario)
uncompress¶
StreamFile#uncompress(origName, destName)
Descomprime un archivo.
Parámetros¶
- origName - Nombre del archivo a descomprimir
- destName - Nombre de destino del archivo.
Devuelve¶
Invalid o Boolean - (true en caso de éxito o false de lo contrario)
Gzip¶
| package://vm#stream/gzip.wmlsc |
|---|
Proporciona abstracción de lectura y escritura en el formato GZ.
Sumario de Funciones¶
Función Descripción create Cree una nueva stream para la manipulación de archivos dentro del gzip createExt Cree una nueva stream para la manipulación de archivos dentro del gzip processed Devuelve el offset del archivo. flushWrite Convierte la stream en Gzip.
Funciones¶
create¶
Gzip#create(stream, buffered) Cree una nueva stream para la manipulación de archivos dentro del gz
Funciones de stream compatibles read/seek
Parámetros¶
- stream - Controlador de stream para decorar
- buffered - Indicará el tamaño del buffer de trabajo interno.
Devuelve¶
invalid en caso de error o handle para o stream gz
Ejemplo¶
use url StreamFile "package://vm#stream/file.wmlsc"; use url GZ "package://vm#stream/gzip.wmlsc"; function testeGzip() { var file = StreamFile#createExt("ZIP", StreamFile#O_RDONLY()); var gzip = GZ#create(file, 4096); if (isvalid gzip) Dialogs.alert("Gzip creado con éxito"); else Dialogs.alert("Falla al crear el Gzip"); }Salida¶
Gzip creado con éxito
createExt¶
Gzip#createExt(stream, buffered, isWrite) Criar um novo stream para manipulação de arquivos dentro do gz
Funciones de stream compatibles read/seek
Parámetros¶
- stream - Controlador de stream para decorar
- buffered - Indicará el tamaño del buffer de trabajo interno.
- isWrite - Boolean - Indica si hay permiso de escritura.
Devuelve¶
invalid en caso de error o handle para o stream gz
processed¶
Gzip#processed(stream) Devuelve el offset del archivo.
Parámetros¶
- stream - Controlador de stream
Devuelve¶
invalid o el número de bytes para el desplazamiento(offset)
flushWrite¶
Gzip#flushWrite(stream) Convierte la stream en Gzip.
Parámetros¶
- stream - Controlador de stream
Devuelve¶
invalid
StreamPhTAR¶
| package://vm#stream/phtar.wmlsc |
|---|
Abstracción para escribir y leer en el formato TAR.
Sumario de Funciones¶
Función Descripción create Cree una nueva stream para leer archivos dentro del tar first Ajuste para que los bytes leídos sean del primer archivo en el tar next Ajuste en el siguiente archivo en tar add Agrega un archivo al tar
create¶
StreamPhTAR#create(stream) Cree una nueva stream para leer archivos dentro del tar
Parámetros¶
- stream - Stream en el que se encuentran los bytes que hacen referencia al TAR
Devuelve¶
invalid en caso de error o un handle para o stream
first¶
StreamPhTAR#first(tarstream); Ajuste para que los bytes leídos sean del primer archivo en tar
También borrará los errores de los pasos anteriores.
Parámetros¶
- stream - Controlador de stream TAR
Devuelve¶
invalid por error o el nombre del archivo que se está leyendo en stream tar
next¶
StreamPhTAR#next(tarstream); Ajuste en el siguiente archivo en tar
También borrará los errores de los pasos anteriores.
Parámetros¶
- stream - Controlador de stream TAR
Devuelve¶
invalid por error o el nombre del archivo que se está leyendo en stream tar
Ejemplo¶
use url StreamFile "package://vm#stream/file.wmlsc"; use url TAR "package://vm#stream/phtar.wmlsc"; function TesteTar() { var file = StreamFile#createExt("TAR", StreamFile#O_RDONLY()); var tar = TAR#create(file); if (isvalid tar) { Dialogs.alert("Tar creado con éxito"); var nome = TAR#first(tar); Dialogs.alert("nombre: " + nome); nome = TAR#next(tar); Dialogs.alert("nombre: " + nome); } else Dialogs.alert("Falla al crea el Tar"); }Salida¶
Tar creado con éxito nombre: archivo1 nombre: archivo2
add¶
StreamPhTAR#add(tarstream, path, filename); Agrega un archivo al tar
Parámetros¶
- stream - Controlador de stream TAR
- path - Directório del archivo
- fileName - Nombre del archivo.
Devuelve¶
invalid ou boolean
Stream¶
| package://vm#stream/stream.wmlsc |
|---|
Interface patrón a operaciones de Escribiendo y lectura los datos.
Tipos de Operaciones¶
Constantes Descripción Stream#OPERATION_WRITE Operación de Escribiendo en ejecución Stream#OPERATION_READ Operación de lectura en ejecución Stream#OPERATION_NOP Operación de espera, usó a espera de los datos
Tipos de Flush¶
Constantes Descrição Stream#FLUSH_NONE Solo libera recursos Stream#FLUSH_READ Descargar bytes para ser leídos. Stream#FLUSH_WRITE Descargar bytes ya escritos Stream#FLUSH_ALL Descargar todos
Stream de Navegación¶
Constantes Descripción Stream#SEEK_SET Mover el puntero de archivo al inicio Stream#SEEK_CUR Operación corriente del puntero de archivo Stream#SEEK_END Mover el puntero de archivo al fin
Erros¶
Constantes Descripción Stream#E_SUCCESS Éxito Stream#E_CANCELED Cancelación Stream#E_TIMEOUT Timeout Stream#E_NO_DATA Sin datos Stream#E_UNKNOW Error desconocido Stream#E_POS_INV Posición no válido Stream#E_ER_OP_INV Operación no soportada con Stream Stream#E_ER_WRITE Error de escritura Stream#E_ER_READ Erro de lectura Stream#E_ER_SCKT_BASE Errores base de la API de socket
Sumario de Funciones¶
Función Descripción create Crear una stream de datos read Lectura de datos del stream write Escribiendo de datos del stream seek Mover el puntero en la stream flush Enviar datos en memoria al destino correcto available Indica el numero de bytes disponible en la stream a función de lectura copy Copia datos en medio streams getType Recupera los tipos o el módulo que implementa la stream getCustom Recupera el parámetro de customization getParent Recupera la stream principal del stream informado getTimeout Recupera el tiempo de espera en lectura/Escribiendo de datos setTimeout Ajusta el tiempo de espera en lectura/Escribiendo de datos getLastError Recupera el código de error de la última operación en la stream setLastError Definir el código de error de la última operación en la stream setFeedback Ajustar el módulo quien tiene el tratamiento de feedback getFeedback Recuperar el módulo de tratamiento del feedback feedback Función callback a casos de operaciones de alto costo
create¶
Stream#create(stream, source, customization); Crear una stream de datos
Parámetros¶
- stream - Stream para ser decorado o invalid
- source PhFile | PhComm | PhBuffer | Módulo en script que implementará operaciones de stream
- customization - Se mantendrá en la stream y se puede recuperar mediante getCustom(stream)
Devuelve¶
invalid o stream creado
read¶
Stream#read(stream, buffer, start, length); Lectura de datos en stream
Parámetros¶
- stream - Controlador de stream creado previamente
- buffer - Debe ser un PhBuffer que recibirá los datos.
- start - Posición del buffer que recibirá el primer byte
- length - Cuantidad de bytes que debería ser copiado
Devuelve¶
Número de bytes leídos o número negativo que indica el error
write¶
Stream#write(stream, buffer, start, length); Escribiendo datos en stream
Parámetros¶
- stream - Controlador de stream creado previamente
- buffer - Debe ser un PhBuffer que recibirá los datos.
- start - Posición del buffer que recibirá el primer byte
- length - Cuantidad de bytes que debería ser copiado
Devuelve¶
Número de bytes copiados o número negativo que indica el error
seek¶
Stream#seek(stream, offset, origin); Mover el puntero del stream
Parámetros¶
- stream - Controlador de stream creado previamente
- offset - Numero de bytes para desplazamiento
- origin - Punto de inicio para desplazamiento
Devuelve¶
Numero de bytes deslocados ou negativo com o código de erro.
Validar si el estado no es PHSTREAM_ER_OP_INV
flush¶
Stream#flush(stream, type); Enviar datos en memoria al destino correcto
Parámetros¶
- stream - Controlador de stream creado previamente
- type - Tipo de flush
Devuelve¶
true en el éxito o false en caso de error
available¶
Stream#available(stream); Indica el numero de bytes disponible en la stream a función de lectura
Parámetros¶
- stream - Controlador de stream creado previamente
Devuelve¶
Integer con el número de bytes que se pueden leer
copy¶
Stream#copy(outStream, inStream, length, block); Copiar length del datos de inStream a outStream
Las posiciones actuales del streams será respetado.
Parámetros¶
- outStream - Destino para os bytes em istream
- inStream - Fuente de bytes que se copiarán a outStream
- length - Número de bytes que se deben copiar
- block - Tamaño de los bloques
Devuelve¶
Integer con el número de bytes copiado
getType¶
Stream#getType(stream); Recupera el tipo o módulo que implementa la stream.
Parámetros¶
- stream - Controlador de stream creado previamente
Devuelve¶
Integer con el tipo o String con el URI del módulo
getCustom¶
Stream#getCustom(stream); Recupera el parámetro de customization
Parámetros¶
- stream - Controlador de stream creado previamente
Devuelve¶
El valor que se pasó para la customization en el create
getParent¶
Stream#getParent(stream); Recupera la stream principal del stream informado
Parámetros¶
- stream - Controlador de stream creado previamente
Devuelve¶
Stream pricipal del stream informado en el parámetro
getTimeout¶
Stream#getTimeout(stream); Recupera o tempo de espera na leitura/escrita de datos
Parámetros¶
- stream - Controlador de stream creado previamente
Devuelve¶
integer en ms contiendo el tiempo de timeout
setTimeout¶
Stream#setTimeout(stream, timeout); Ajusta el tiempo de espera en lectura/Escribiendo de datos
Parámetros¶
- stream - Controlador de stream creado previamente
- timeout - Tiempo de espera en lectura/Escribiendo de datos
Devuelve¶
true en el éxito o false en caso de error
getLastError¶
Stream#getLastError(stream); Recupera el código de error de la última operación en la stream
Parámetros¶
- stream - Controlador de stream creado previamente
Devuelve¶
0 si no ocurrió ningún error registrado o el código de error
setLastError¶
Stream#setLastError(stream, code); Ajusta el código de error de la última operación en la secuencia
Parámetros¶
- stream - Controlador de stream creado previamente
- Cero para borrar o un código de error válido
Devuelve¶
true en el éxito o false en caso de error
setFeedback¶
Stream#setFeedback(stream, module); Ajustar el módulo quien tiene el tratamiento de feedback
Parámetros¶
- stream - Controlador de stream creado previamente
- module - Módulo con la implementación de función: extern feedback(self, operation, step, total)
Devuelve¶
true en el éxito o false en caso de error
getFeedback¶
Stream#getFeedback(stream); Recuperar el módulo de tratamiento del feedback
Parámetros¶
- stream - Controlador de stream creado previamente
Devuelve¶
Módulo que maneja la feedback. String vacía indicará que no hay tratamiento
feedback¶
Stream#feedback(stream, operation, step, total); Función callback a casos de operaciones de alto costo Esta función DEBE ser siempre NO bloqueante. En caso de cancelación, la stream tendrá el error #PHSTREAM_CANCELED
Parámetros¶
- stream - Controlador de stream creado previamente
- operation - Puede ser #OPERATION_WRITE o #OPERATION_READ
- step - El paso actual dentro del total
- total - Total o cero cuando no conoces el total
Devuelve¶
true para continuar procesando o false para cancelar
Ejemplo¶
use url StreamCore "package://vm#stream/stream.wmlsc" function TesteStream() { var buffer = PhBuffer.create("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam eget ligula eu lectus lobortis condimentum."); var saida = PhBuffer.create(""); PhBuffer.resize(saida, PhBuffer.getSize(buffer)); var stream = StreamCore#create(invalid, buffer, invalid); var streamext = StreamCore#create(invalid, saida, saida); StreamCore#seek(buffer, 0, StreamCore#SEEK_SET()); Dialogs.alert("disponible: " + StreamCore#available(stream)); /* Ler 10 bytes do stream */ var buffer2 = PhBuffer.create(10); StreamCore#read(stream, buffer2, 0, 10); Dialogs.alert("salida: " + PhBuffer.getAsString(buffer2, 0, 10)); buffer2 = PhBuffer.create("Ipsum Lorem"); Dialogs.alert("tipo:" + StreamCore#getType(stream)); StreamCore#seek(stream, 0, StreamCore#SEEK_SET()); if (StreamCore#write(stream, buffer2, 0, 10) > 0) { StreamCore#flush(stream); Dialogs.alert("Datos guardatos exitosamente"); } else Dialogs.alert("falla al grabar"); StreamCore#seek(stream, 0, StreamCore#SEEK_SET()); StreamCore#copy(streamext, stream, 10, 1024); StreamCore#flush(streamext); var custom = StreamCore#getCustom(streamext); Dialogs.alert("salida: " + String.toString(PhBuffer.getAsString(custom, 0, 10))); }disponible: 106 salida: Lorem ipsu tipo:2 Datos guardatos con éxito salida:Ipsum Lore
Compression¶
| package://phpacket/compression.wmlsc |
|---|
Prover interface para uso de compresión de datos.
Sumario de Funciones¶
Función Descripción compression Comprime un buffer pasado. unCompression Descomprime un buffer pasado.
Constantes Descripción COMPRESSION_NONE() Tipo de compresión nula. COMPRESSION_GZIP() Tipo de compresión GZiP. COMPRESSION_ZIP() Tipo de compresión ZIP.
compression¶
Compression#compression(streamIn, streamOut, Lenght, compressionType, &writed)
Comprime los datos de entrada.
Parámetros¶
- streamIn - Stream - Buffer para ser procesado.
- streamOut - Stream - Buffer procesado
- Lenght - Integer - Lenght de los datos para ser copiado
- compressionType - Integer - Tipo da compresión de acuerdo con las constantes.
- &writed - Integer - Almacena por referencia el número de bytes escritos
Devuelve¶
true o false.
Obs: "writed" contiene el número de bytes escritos y "streamOut" el Buffer procesado.
Ejemplo¶
use url Compression "package://phpacket/compression.wmlsc"; use url Stream "package://vm#stream/stream.wmlsc"; function test() { var writed = 0; var bufferIn = PhBuffer.create(2); PhBuffer.set(bufferIn, 0, 255); PhBuffer.set(bufferIn, 1, 255); var streamIn = Stream#create(invalid, bufferIn , ""); var bufferOut = PhBuffer.create(2); var streamOut = Stream#create(invalid, bufferOut, ""); var isCompression = Compression#compression(streamIn, streamOut, Stream#available(streamIn), Compression#COMPRESSION_GZIP(), &writed); var result = invalid; if(isCompression) { result = streamOut; } PhLog.debug("Cuantid de bytes: "+writed); PhLog.debug("Compresión ok? "+String.toString(isCompression)); return result; }Salida
- Cuantid de bytes: 28 - Compresión ok? true
unCompression¶
Compression#unCompression(streamIn, streamOut, Lenght, compressionType)
Descomprime los datos de entrada.
Parámetros¶
- streamIn - Stream - Buffer a ser procesado.
- streamOut - Stream - Buffer procesado
- Lenght - Integer - Lenght de los datos a ser copiado
- compressionType - Integer - Tipo de compresión de acurdo con constantes.
Devuelve¶
true o false.
Obs: "streamOut" contiene lo Buffer procesado
Ejemplo¶
use url Compression "package://phpacket/compression.wmlsc"; use url Stream "package://vm#stream/stream.wmlsc"; function test() { var writed = 0; var bufferIn = PhBuffer.create(2); PhBuffer.set(bufferIn, 0, 255); PhBuffer.set(bufferIn, 1, 255); var streamIn = Stream#create(invalid, bufferIn , ""); var buffer = PhBuffer.create(2); var stream = Stream#create(invalid, buffer, ""); var isCompression = Compression#compression(streamIn, stream, Stream#available(streamIn), Compression#COMPRESSION_GZIP(), &writed); var isUnCompression = false; if(isCompression) { var tmpBuffer = PhBuffer.create(0); var unStream = Stream#create(invalid, tmpBuffer, ""); Stream#seek(stream, 0, Stream#SEEK_SET()); isUnCompression = Compression#unCompression(stream, unStream, Stream#available(stream), Compression#COMPRESSION_GZIP()); } var result = invalid; if(isUnCompression) { result = unStream; } PhLog.debug("Descompresión ok? "+String.toString(isUnCompression)); return result; }Salida
- Descompresión ok? true
Comunicación¶
Comm¶
| package://libs#comm/comm.wmlsc |
|---|
Implementar funciones para uso de comunicación.
Sumario¶
Función Descripción socket Crear una stream TCP/IP Ya se está conectando al destino. direct Crear una Stream de flujo de datos directo con el dispositivo. disconnect Desconectar. Después de esta llamada a las funciones de stream Devuelve error. connected Función de utilidad para comprobar el estado de la conexión. isComm Comprueba si la instancia es una conexión. waitConnection Realiza el establecimiento de un bloqueo de conexión de socket. socketListen Abre un puerto de conexión para escuchar (sin bloqueo). La escucha se realiza en background y se debe observar la detección del establecimiento de una conexión a través de función Comm#connected().
Funciones¶
socket¶
Comm#socket(ip, porta, protocol, timeout, useTLS, CAfile, serverName, certName, cache)
Crear una stream TCP/IP Ya se está conectando al destino.
- Obs. Si se admite un socket sin bloqueo, se aplicará. La conexión se comprobará de nuevo en la primera read o write de la stream.
Parámetros¶
- ip - String que representa la dirección (IPv4) de la máquina de destino
- port - Puerta de destino (integer)
- protocol - Comm#COMM_PRTCL_TCP() o Comm#COMM_PRTCL_UDP()
- timeout - Tiempo de espera en ms
- useTLS - Utilice el protocolo de seguridad TLS en la comunicación
- caFile - String con el nombre del certificado digital que se utilizará con el protocolo TLS
- serverName - string con la dirección del servidor
- certName - string con nombre del certificado
- cache - Indica si se debe usar el mecanismo de caché
Devuelve¶
Stream para flujo de datos o invalid
direct¶
Comm#direct(dev)
Crear una Stream de flujo de datos directo con el dispositivo.
Parámetros¶
- dev - controlador de dispositivo
Devuelve¶
Stream para flujo de datos o invalid
disconnect¶
Comm#disconnect(handle)
Desconectar. Después de esta llamada a las funciones de stream Devuelve error.
Parámetros¶
- handle - creado previamente con Comm#socket() o Comm#direct()
Devuelve¶
No ya
connected¶
Comm#connected(handle)
Función utilidad para comprobar el estado de la conexión
Parámetros¶
- handle - creado previamente con Comm#socket() o Comm#direct()
Devuelve¶
booelan indicando si el socket está conectado o no
isComm¶
Comm#isCom(handle)
Comprueba si la instancia es una conexión.
Parámetros¶
- handle - creado previamente con Comm#socket() o Comm#direct()
Devuelve¶
true si es una conexión o false en caso contrario.
waitConnection¶
Comm#waitConnection(handle)
Realiza el establecimiento de un bloqueo de conexión de socket.
Parámetros¶
- handle - creado previamente con Comm#socket() o Comm#direct()
Devuelve¶
true al establece la conexión o false si falló
socketListen¶
Comm#socketListen(protocol, port)
Abre un puerto de conexión para escuchar (sin bloqueo). La escucha se realiza en background y se debe observar la detección del establecimiento de una conexión a través de función Comm#connected().
Parámetros¶
- protocol - Comm#COMM_PRTCL_TCP() o Comm#COMM_PRTCL_UDP()
Devuelve¶
Stream para flujo de datos o invalid
Ejemplo¶
use url Comm "package://libs#comm/comm.wmlsc"; function testeComm(useTLS, dev) { var caFile = invalid; if (useTLS) caFile = "certicado.pem"; var socket = Comm#socket("192.168.0.1", "1234", Comm#COMM_PRTCL_TCP(), 60000, useTLS, caFile); if (! isvalid socket) { socket = Comm#direct(dev); if (! isvalid socket) { Dialogs.alert("Conexión fallo!"); } } if (Comm#isComm(socket) && Comm#connected(socket)) { Dialogs.alert("Socket conectado con éxito!"); Comm#disconnect(socket); Dialogs.alert("Socket desconectado!"); } /* Testando conexao blocante */ socket = Comm#socket("192.168.0.1", "1234", Comm#COMM_PRTCL_TCP(), 60000, invalid, invalid); Dialogs.alert("Bloqueará aquí"); Comm#waitConnection(socket); Dialogs.alert("Obtuvo, timeout o fue cancelada"); if (Comm#isComm(socket) && Comm#connected(socket)) { Comm#disconnect(socket); } /* Testando recebimento de conexao */ socket = Comm#socketListen(Comm#COMM_PRTCL_TCP(), "1234"); while (! Comm#connected(socket)); if (Comm#connected(socket)) Dialogs.alert("conecto"); else Dialogs.alert("conexión fallo"); }Salida¶
Socket conectado con éxito! Socket desconectado! Bloqueará aquí Obtuvo, timeout o fue cancelada conecto
Http¶
| package://libs#ms/http.wmlsc |
|---|
Proporciona funciones para la comunicación mediante el protocolo Http..
Sumario¶
Función Descripción create Crea una sesión Http request Envia una solicitud Http getInfo Recupera informaciones de la sesión Http get Envia una solicitud usando el método GET post Envia una solicitud usando el método POST put Envia una solicitud usando el método PUT del Envia una solicitud usando el método DELETE head Envia una solicitud usando el método HEAD getStatusCode Devuelve el código de status de respuesta (vea HTTP Status Messages) getContentLength Devuelve el tamaño de contenido de respuesta. getSentLength Devuelve la cuantid de datos enviados. getReceivedLength Devuelve la cuantid de datos del recibió. addHeader Agregar parámetros al Header de solicitud.
Métodos Http¶
Constantes Descripción Http#GET Método GET Http#POST Método POST Http#HEAD Método HEAD Http#PUT Método PUT Http#DELETE Método DELETE
Información del Http¶
Constantes Descripción Http#STATUS_CODE Código de status de respuesta (vea HTTP Status Messages) Http#CONTENT_LENGTH Devuelve el tamaño de contenido de respuesta. Http#BODY_LENGTH_SENT Devuelve la cuantid de datos enviados. Http#BODY_LENGTH_RECEIVED Devuelve la cuantid de datos del recibió.
Códigos de retorno¶
Constantes Descripción Http#SUCCESS Ejecutado con éxito Http#UNKNOWN_ERROR Error desconocido Http#ERROR_INVALID_HANDLE HTTP sesión inválido (vea create) Http#ERROR_SOCKET_INVALID Intentando utilizar un handle de stream inválido (vea create) Http#ERROR_SOCKET_RECV Error al recibió del datos Http#ERROR_SOCKET_SEND Error al enviar los datos Http#ERROR_HEADER_RECV Error al recibió los headers del servidor Http#ERROR_BAD_VERB Método HTTP incorrecto o No soportado Http#ERROR_LONG_INPUT Parámetro recibido con un tamaño mayor que el soportado Http#ERROR_BAD_URL Error en el parse de url Http#ERROR_BAD_HEADER Error al identificar los elementos recibidos en el header Http#ERROR_NOT_IMPLEMENTED Funcionalidad aún no implementada Http#EOS Fin del mensaje en stream
create¶
Http#create(stream);
Crea una sesión Http
Parámetros¶
- stream handle de conexión para enviar y recibir datos (vea Comm)
Devuelve¶
Http Session creado o invalid en caso de error
Ejemplos¶
use url Http "package://libs#ms/http.wmlsc"; use url Comm "package://libs#comm/comm.wmlsc"; use url Device "package://libs#dev/dev.wmlsc"; use url Eth "package://libs#dev/eth.wmlsc"; function test () { var eth = Eth#create(""); if (Device#connect(eth)) { var socket = Comm#socket("192.168.1.176", 8082, Comm#COMM_PRTCL_TCP(), 30000, false, invalid); if (isvalid socket) { var httpSession = Http#create(socket); if (isvalid httpSession) { Dialogs.alert("sesión Http creada"); } } } }Salida:
sesión Http creada
request¶
Http#request(httpSession, method, requestUrl, output, data);
Envia una solicitud Http
Parámetros¶
- httpSession Handle para Http sesión creado
- method Método Http que se utilizará en la solicitud
- requestUrl Dirección de recurso deseada
- output Stream de salida para recibir datos
- data String que contiene los datos para enviar al servidor
Devuelve¶
Integer con el código de error del request (0 == SUCCESS).
Ejemplos¶
use url Http "package://libs#ms/http.wmlsc"; use url Stream "package://vm#stream/stream.wmlsc"; use url Comm "package://libs#comm/comm.wmlsc"; use url Device "package://libs#dev/dev.wmlsc"; use url Eth "package://libs#dev/eth.wmlsc"; function test () { var eth = Eth#create(""); if (Device#connect(eth)) { var socket = Comm#socket("127.0.0.1", 8080, Comm#COMM_PRTCL_TCP(), 30000, false, invalid); if (isvalid socket) { var httpSession = Http#create(socket); if (isvalid httpSession) { var buffer = PhBuffer.create(0); var stream = Stream#create(invalid, buffer, ""); Http#request(httpSession, Http#GET(), "http://127.0.0.1:8080", stream, ""); Stream#flush(stream); PhLog.debug("Response: " + PhBuffer.getAsString(buffer, 0, PhBuffer.getSize(buffer))); PhLog.debug("Size: " + PhBuffer.getSize(buffer)); } } } }Salida:
Response: respostaTeste Size: 13
getInfo¶
Http#getInfo(httpSession, info);
Recuperar información de la sesión Http
Parámetros¶
- httpSession Handle de Http Session creado
- info Código de información deseada
Devuelve¶
Información deseada o invalid en caso de error
Ejemplos¶
use url Http "package://libs#ms/http.wmlsc"; use url Stream "package://vm#stream/stream.wmlsc"; use url Comm "package://libs#comm/comm.wmlsc"; use url Device "package://libs#dev/dev.wmlsc"; use url Eth "package://libs#dev/eth.wmlsc"; use url Map "package://vm#core/map.wmlsc"; function test () { var eth = Eth#create(""); if (Device#connect(eth)) { var socket = Comm#socket("127.0.0.1", 8080, Comm#COMM_PRTCL_TCP(), 30000, false, invalid); if (isvalid socket) { var httpSession = Http#create(socket); if (isvalid httpSession) { var buffer = PhBuffer.create(0); var stream = Stream#create(invalid, buffer, ""); var params = Map#create(); Http#request(httpSession, Http#GET(), "http://127.0.0.1:8080", stream, ""); Stream#flush(stream); PhLog.info("Status Code: " + Http#getInfo(httpSession, Http#STATUS_CODE())); } } } }Salida:
Status Code: 200
get¶
Http#get(httpSession, requestUrl, output, params)
Envía una solicitud usando el método GET
Parámetros¶
- httpSession Handle de Http Session creado
- requestUrl Dirección de recurso deseada
- output Stream de salida para recibir datos
- params Map que contiene los parámetros que se enviarán
Devuelve¶
Integer con el código de error del request (0 == SUCCESS).
Ejemplos¶
use url Message "package://tefui#ui/message.wmlsc"; use url Http "package://libs#ms/http.wmlsc"; use url Stream "package://vm#stream/stream.wmlsc"; use url Comm "package://libs#comm/comm.wmlsc"; use url GlobalComm "package://phast#comm/global_comm.wmlsc"; use url CommSelect "package://phast#comm/select.wmlsc"; function test () { var requestUrl = "http://127.0.0.1:3000/users"; var addr = "127.0.0.1"; var hostIp = Comm#dnsLookup(addr); var MODULE_NAME = "HTTPPOST"; GlobalComm#resetUsedPriorityLevels(); var ret = GlobalComm#startConnection(MODULE_NAME, hostIp, 3000, invalid, true); if(ret == GlobalComm#E_COMM_OK()) { var global = GlobalComm#getGlobalComm(); var comm = CommSelect#getConnectionComm(global); if (isvalid comm) { var httpSession = Http#create(comm); var buffer = PhBuffer.create(0); var stream = Stream#create(invalid, buffer, ""); var httpRet = Http#get(httpSession, requestUrl, stream, invalid); if (httpRet == Http#SUCCESS() || httpRet == Http#EOS()) { Dialogs.alert("Response: " + PhBuffer.getAsString(buffer, 0, PhBuffer.getSize(buffer))); Message#showMessage("Status code: " + Http#getStatusCode(httpSession), Message#DELAY_ALERT(), Message#BEEP_MESSAGE()); } else { Message#showMessage("Falla en request Http: " + httpRet, Message#DELAY_ALERT(), Message#BEEP_MESSAGE()); } } else { Message#showMessage("Falla al conectar!", Message#DELAY_ALERT(), Message#BEEP_MESSAGE()); } } else { Message#showMessage("Falla al conectar!", Message#DELAY_ALERT(), Message#BEEP_MESSAGE()); } GlobalComm#finishConnection(MODULE_NAME); }Salida:
Response: {"name":"testandoGet"} Status code: 200
post¶
Http#post(httpSession, requestUrl, output, params, data)
Envía una solicitud usando el método POST
Parámetros¶
- httpSession Handle para Http Sesión creada
- requestUrl Dirección de recurso deseada
- output Stream de salida para la recepción de datos
- params Map que contiene los parámetros a enviar
- data String que contiene los datos que se enviarán al servidor
Devuelve¶
Integer con el código de error del request (0 == SUCCESS).
Ejemplos¶
use url Message "package://tefui#ui/message.wmlsc"; use url Http "package://libs#ms/http.wmlsc"; use url Stream "package://vm#stream/stream.wmlsc"; use url Comm "package://libs#comm/comm.wmlsc"; use url GlobalComm "package://phast#comm/global_comm.wmlsc"; use url CommSelect "package://phast#comm/select.wmlsc"; use url Json "package://libs#json/json.wmlsc"; function test () { var requestUrl = "http://127.0.0.1:3000/users"; var addr = "127.0.0.1"; var hostIp = Comm#dnsLookup(addr); var MODULE_NAME = "HTTPPOST"; GlobalComm#resetUsedPriorityLevels(); var ret = GlobalComm#startConnection(MODULE_NAME, hostIp, 3000, invalid, true); if(ret == GlobalComm#E_COMM_OK()) { var global = GlobalComm#getGlobalComm(); var comm = CommSelect#getConnectionComm(global); if (isvalid comm) { var httpSession = Http#create(comm); var buffer = PhBuffer.create(0); var stream = Stream#create(invalid, buffer, ""); var json = Json#create(); Json#add(json, "name", "testandoPost"); var httpRet = Http#post(httpSession, requestUrl, stream, invalid, Json#encode(json)); if (httpRet == Http#SUCCESS() || httpRet == Http#EOS()) { Dialogs.alert("Response: " + PhBuffer.getAsString(buffer, 0, PhBuffer.getSize(buffer))); Message#showMessage("Status code: " + Http#getStatusCode(httpSession), Message#DELAY_ALERT(), Message#BEEP_MESSAGE()); } else { Message#showMessage("Falla en request Http: " + httpRet, Message#DELAY_ALERT(), Message#BEEP_MESSAGE()); } } else { Message#showMessage("Falla al conectar!", Message#DELAY_ALERT(), Message#BEEP_MESSAGE()); } } else { Message#showMessage("Falla al conectar!", Message#DELAY_ALERT(), Message#BEEP_MESSAGE()); } GlobalComm#finishConnection(MODULE_NAME); }Salida:
Response: {"name":"testandoPost"} Status code: 201
put¶
Http#put(httpSession, requestUrl, output, params, data)
Envía una solicitud usando el método PUT
Parámetros¶
- httpSession Handle para Http Sesión creada
- requestUrl Dirección de recurso deseada
- output Stream de salida para la recepción de datos
- params Map que contiene los parámetros a enviar
- data String que contiene los datos que se enviarán al servidor
Devuelve¶
Integer con el código de error del request (0 == SUCCESS).
Ejemplos¶
use url Message "package://tefui#ui/message.wmlsc"; use url Http "package://libs#ms/http.wmlsc"; use url Stream "package://vm#stream/stream.wmlsc"; use url Comm "package://libs#comm/comm.wmlsc"; use url GlobalComm "package://phast#comm/global_comm.wmlsc"; use url CommSelect "package://phast#comm/select.wmlsc"; use url Json "package://libs#json/json.wmlsc"; function test (id) { var requestUrl = "http://127.0.0.1:3000/users/" + id; var addr = "127.0.0.1"; var hostIp = Comm#dnsLookup(addr); var MODULE_NAME = "HTTPPUT"; GlobalComm#resetUsedPriorityLevels(); var ret = GlobalComm#startConnection(MODULE_NAME, hostIp, 3000, invalid, true); if(ret == GlobalComm#E_COMM_OK()) { var global = GlobalComm#getGlobalComm(); var comm = CommSelect#getConnectionComm(global); if (isvalid comm) { var httpSession = Http#create(comm); var buffer = PhBuffer.create(0); var stream = Stream#create(invalid, buffer, ""); var json = Json#create(); Json#add(json, "name", "testandoPut"); var httpRet = Http#post(httpSession, requestUrl, stream, invalid, Json#encode(json)); if (httpRet == Http#SUCCESS() || httpRet == Http#EOS()) { Dialogs.alert("Response: " + PhBuffer.getAsString(buffer, 0, PhBuffer.getSize(buffer))); Message#showMessage("Status code: " + Http#getStatusCode(httpSession), Message#DELAY_ALERT(), Message#BEEP_MESSAGE()); } else { Message#showMessage("Falla en request Http: " + httpRet, Message#DELAY_ALERT(), Message#BEEP_MESSAGE()); } } else { Message#showMessage("Falla al conectar!", Message#DELAY_ALERT(), Message#BEEP_MESSAGE()); } } else { Message#showMessage("Falla al conectar!", Message#DELAY_ALERT(), Message#BEEP_MESSAGE()); } GlobalComm#finishConnection(MODULE_NAME); }Salida:
Response: {"name":"testandoPut"} Status code: 201
del¶
Http#del(httpSession, requestUrl, output, params, data)
Envía una solicitud usando el método DELETE
Parámetros¶
- httpSession Handle de Http Session creado
- requestUrl Dirección de recurso deseada
- output Stream de salida para recibir datos
- params Map que contiene los parámetros que se enviarán
- data String que contiene los datos que se enviarán al servidor
Devuelve¶
Integer con el código de error del request (0 == SUCCESS).
Ejemplos¶
use url Message "package://tefui#ui/message.wmlsc"; use url Http "package://libs#ms/http.wmlsc"; use url Stream "package://vm#stream/stream.wmlsc"; use url Comm "package://libs#comm/comm.wmlsc"; use url GlobalComm "package://phast#comm/global_comm.wmlsc"; use url CommSelect "package://phast#comm/select.wmlsc"; function test (id) { var requestUrl = "http://127.0.0.1:3000/users/" + id; var addr = "127.0.0.1"; var hostIp = Comm#dnsLookup(addr); var MODULE_NAME = "HTTPDELETE"; GlobalComm#resetUsedPriorityLevels(); var ret = GlobalComm#startConnection(MODULE_NAME, hostIp, 3000, invalid, true); if(ret == GlobalComm#E_COMM_OK()) { var global = GlobalComm#getGlobalComm(); var comm = CommSelect#getConnectionComm(global); if (isvalid comm) { var httpSession = Http#create(comm); var buffer = PhBuffer.create(0); var stream = Stream#create(invalid, buffer, ""); var httpRet = Http#del(httpSession, requestUrl, stream, invalid, invalid); if (httpRet == Http#SUCCESS() || httpRet == Http#EOS()) { Dialogs.alert("Response: " + PhBuffer.getAsString(buffer, 0, PhBuffer.getSize(buffer))); Message#showMessage("Status code: " + Http#getStatusCode(httpSession), Message#DELAY_ALERT(), Message#BEEP_MESSAGE()); } else { Message#showMessage("Falha no request Http: " + httpRet, Message#DELAY_ALERT(), Message#BEEP_MESSAGE()); } } else { Message#showMessage("Falha ao conectar!", Message#DELAY_ALERT(), Message#BEEP_MESSAGE()); } } else { Message#showMessage("Falha ao conectar!", Message#DELAY_ALERT(), Message#BEEP_MESSAGE()); } GlobalComm#finishConnection(MODULE_NAME); }Salida¶
Status code: 204
head¶
Http#head(httpSession, requestUrl, output, params)
Envía una solicitud usando el método HEAD
Parámetros¶
- httpSession Handle de Http Session creado
- requestUrl Dirección de recurso deseada
- output Stream de salida para recibir datos
- params Map que contiene los parámetros que se enviarán
Devuelve¶
Integer con el código de error del request (0 == SUCCESS).
Ejemplos¶
use url Http "package://libs#ms/http.wmlsc"; use url Stream "package://vm#stream/stream.wmlsc"; use url Comm "package://libs#comm/comm.wmlsc"; use url Device "package://libs#dev/dev.wmlsc"; use url Eth "package://libs#dev/eth.wmlsc"; use url Map "package://vm#core/map.wmlsc"; function test () { var eth = Eth#create(""); if (Device#connect(eth)) { var socket = Comm#socket("127.0.0.1", 8080, Comm#COMM_PRTCL_TCP(), 30000, false, invalid); if (isvalid socket) { var httpSession = Http#create(socket); if (isvalid httpSession) { var buffer = PhBuffer.create(0); var stream = Stream#create(invalid, buffer, ""); var params = Map#create(); Map#put(params, "id", 1); Http#head(httpSession, "http://127.0.0.1:8080", stream, params); Stream#flush(stream); PhLog.debug("Response: " + PhBuffer.getAsString(buffer, 0, PhBuffer.getSize(buffer))); PhLog.debug("Size: " + PhBuffer.getSize(buffer)); } } } }Salida:
Response: respostaTeste Size: 13
getStatusCode¶
Http#getStatusCode(httpSession)
Devuelve el código de estado de respuesta (vea HTTP Status Messages)
Parámetros¶
- httpSession Handle de Http Session creado
Devuelve¶
Integer con el código de error del request (0 == SUCCESS).
Ejemplos¶
use url Http "package://libs#ms/http.wmlsc"; use url Stream "package://vm#stream/stream.wmlsc"; use url Comm "package://libs#comm/comm.wmlsc"; use url Device "package://libs#dev/dev.wmlsc"; use url Eth "package://libs#dev/eth.wmlsc"; use url Map "package://vm#core/map.wmlsc"; function test () { var eth = Eth#create(""); if (Device#connect(eth)) { var socket = Comm#socket("127.0.0.1", 8080, Comm#COMM_PRTCL_TCP(), 30000, false, invalid); if (isvalid socket) { var httpSession = Http#create(socket); if (isvalid httpSession) { var buffer = PhBuffer.create(0); var stream = Stream#create(invalid, buffer, ""); var params = Map#create(); Http#request(httpSession, Http#GET(), "http://127.0.0.1:8080", stream, ""); Stream#flush(stream); PhLog.info("Status Code: " + Http#getStatusCode(httpSession)); } } } }Salida:
Status Code: 200
getContentLength¶
Http#getContentLength(httpSession)
Devuelve el tamaño del contenido de la respuesta.
Parámetros¶
- httpSession Handle de Http Session creado
Devuelve¶
Integer con el código de error del request (0 == SUCCESS).
Ejemplos¶
use url Http "package://libs#ms/http.wmlsc"; use url Stream "package://vm#stream/stream.wmlsc"; use url Comm "package://libs#comm/comm.wmlsc"; use url Device "package://libs#dev/dev.wmlsc"; use url Eth "package://libs#dev/eth.wmlsc"; use url Map "package://vm#core/map.wmlsc"; function test () { var eth = Eth#create(""); if (Device#connect(eth)) { var socket = Comm#socket("127.0.0.1", 8080, Comm#COMM_PRTCL_TCP(), 30000, false, invalid); if (isvalid socket) { var httpSession = Http#create(socket); if (isvalid httpSession) { var buffer = PhBuffer.create(0); var stream = Stream#create(invalid, buffer, ""); var params = Map#create(); Http#request(httpSession, Http#GET(), "http://127.0.0.1:8080", stream, ""); Stream#flush(stream); PhLog.info("Content length: " + Http#getContentLength(httpSession)); } } } }Salida:
Content length: 13
getSentLength¶
Http#getSentLength(httpSession)
Devuelve la cantidad de datos enviados.
Parámetros¶
- httpSession Handle de Http Session creado
Devuelve¶
Integer con el código de error del request (0 == SUCCESS).
Ejemplos¶
use url Http "package://libs#ms/http.wmlsc"; use url Stream "package://vm#stream/stream.wmlsc"; use url Comm "package://libs#comm/comm.wmlsc"; use url Device "package://libs#dev/dev.wmlsc"; use url Eth "package://libs#dev/eth.wmlsc"; use url Map "package://vm#core/map.wmlsc"; function test () { var eth = Eth#create(""); if (Device#connect(eth)) { var socket = Comm#socket("127.0.0.1", 8080, Comm#COMM_PRTCL_TCP(), 30000, false, invalid); if (isvalid socket) { var httpSession = Http#create(socket); if (isvalid httpSession) { var buffer = PhBuffer.create(0); var stream = Stream#create(invalid, buffer, ""); var params = Map#create(); Http#request(httpSession, Http#POST(), "http://127.0.0.1:8080", stream, "testHttp"); Stream#flush(stream); PhLog.info("Sent length: " + Http#getSentLength(httpSession)); } } } }Salida:
Sent length: 8
getReceivedLength¶
Http#getReceivedLength(httpSession)
Devuelve la cantidad de datos recibidos.
Parámetros¶
- httpSession Handle de Http Session creado
Devuelve¶
Integer con el código de error del request (0 == SUCCESS).
Ejemplos¶
use url Http "package://libs#ms/http.wmlsc"; use url Stream "package://vm#stream/stream.wmlsc"; use url Comm "package://libs#comm/comm.wmlsc"; use url Device "package://libs#dev/dev.wmlsc"; use url Eth "package://libs#dev/eth.wmlsc"; use url Map "package://vm#core/map.wmlsc"; function test () { var eth = Eth#create(""); if (Device#connect(eth)) { var socket = Comm#socket("127.0.0.1", 8080, Comm#COMM_PRTCL_TCP(), 30000, false, invalid); if (isvalid socket) { var httpSession = Http#create(socket); if (isvalid httpSession) { var buffer = PhBuffer.create(0); var stream = Stream#create(invalid, buffer, ""); var params = Map#create(); Http#request(httpSession, Http#GET(), "http://127.0.0.1:8080", stream, ""); Stream#flush(stream); PhLog.info("Received length: " + Http#getReceivedLength(httpSession)); } } } }Salida:
Received length: 20
addHeader¶
Http#addHeader(httpSession, requestField, value)
Agregue campos en el encabezado de una solicitud HTTP/HTTPS.
Parámetros¶
- httpSession Handle de Http Session creado
- requestField Campo de solicitud
- value Valor asignado al campo de solicitud
Ejemplos¶
package samplehttp; use url Http "package://libs#ms/http.wmlsc"; use url Stream "package://vm#stream/stream.wmlsc"; use url Comm "package://libs#comm/comm.wmlsc"; use url Device "package://libs#dev/dev.wmlsc"; use url Eth "package://libs#dev/eth.wmlsc"; use url Json "package://libs#json/json.wmlsc"; extern function execute() { var eth = Eth#create(""); if (Device#connect(eth)) { var socket = Comm#socket("127.0.0.1", 3000, Comm#COMM_PRTCL_TCP(), 30000, false, invalid); if (isvalid socket) { var httpSession = Http#create(socket); if (isvalid httpSession) { var buffer = PhBuffer.create(0); var stream = Stream#create(invalid, buffer, ""); var json = Json#create(); Json#add(json, "id", 6); Json#add(json, "name", "phoebus"); Json#add(json, "location", "Brazil"); Http#addHeader(httpSession, "Authorization", "Bearer " + "token"); Http#addHeader(httpSession, "Accept-Encoding", "gzip"); var strJson = Json#encode(json); Http#post(httpSession, "http://127.0.0.1:3000/users", stream, invalid, strJson); Stream#flush(stream, Stream#FLUSH_WRITE()); Dialogs.alert("Response: " + PhBuffer.getAsString(buffer, 0, PhBuffer.getSize(buffer))); Dialogs.alert("Size: " + PhBuffer.getSize(buffer)); } } } }Salida:
Response: 200
Mensajería¶
Json¶
| package://libs#json/json.wmlsc |
|---|
Interface para uso do parser Json (Java Script Object Notation)
Sumario¶
Función Descripción add Agregar un elemento al JSON getAt Devuelve el valor de un índice JSON determinado create Crea un objeto JSON count Devuelve la cantidad de elementos en el objeto o elemento JSON decode Transformar el String recibido en un objeto JSON decodeUTF8 convierte una String UTF-8 a ISO-8859-1 (patrón windows) encode Transforma el objeto JSON recibido en una String en formato JSON get Devuelve un ítem de JSON getKey Devuelve la clave de un cierto índice de la JSON isJson Comprueba si la instancia pertenece a la clase JSON.
Funciones¶
add¶
Json#add(json, key, value)
Agregar un elemento al JSON
Parámetros¶
- Objeto json
- Identificador del ítem requerido
- Valor de algún tipo nativo (int, boolean o String) o un objeto JSON
Devuelve¶
Devuelve true en el éxito o false en caso de falla.
getAt¶
Json#at(json, index)
Devuelve el valor de un cierto índice de la JSON
Parámetros¶
- json - Objeto json
- index - Index del valor
Devuelve¶
Devuelve el valor del índice informado en el parámetro.
create¶
Json#create()
Crea un objeto Json
Parámetros¶
No hay
Devuelve¶
Objeto Json creado
count¶
Json#count(json)
Devuelve la cuantid de itens del objeto json o del item
Parámetros¶
Objeto json
Devuelve¶
El cuantid de ítems en la array o un número negativo si el parámetro pasado no es válido.
decode¶
Json#decode(String)
Transforma la String recibida en un objeto Json
Parámetros¶
String en el formato Json
Devuelve¶
Objeto Json o invalid cen caso de que no sea posible hacer lo parse del String recibido.
decodeUTF8¶
Json#decodeUTF8(String)
convierte una String UTF-8 a ISO-8859-1 (patrón windows) los caracteres que no se pueden convertir se reemplazan con un signo de interrogación al revés.
Parámetros¶
String en el formato UTF-8
Devuelve¶
String en el formato ISO-8859-1
encode¶
Json#encode(json)
Transforma el objeto JSON recibido en una String en formato JSON.
Parámetros¶
Objeto Json
Devuelve¶
String en el formato Json
get¶
Json#get(json, key)
Devuelve un ítem Json. Los elementos se pueden Devuelve con algún tipo nativo (int, boolean o String) o un objeto JSON
Parámetros¶
- Objeto json
- Identificador del ítem requerido
Devuelve¶
El valor del artículo con el identificador requerido o invalid si el item no existe.
getKey¶
Json#getKey(json, index)
Devuelve la clave de un cierto índice de el JSON
Parámetros¶
- Objeto json
- index
Devuelve¶
Devuelve la clave del índice informado en el parámetro.
isJson¶
Json#isJson(json)
Comprueba si la instancia pertenece a la clase JSON.
Parámetros¶
Objeto json
Devuelve¶
Devuelve true si es un JSON y false de lo contrario.
Ejemplo¶
use url Json "package://libs#json/json.wmlsc"; function testeJson() { var strJson = '{' + '"botaoEjemplo": {' + '"area": {' + '"x": 20,' + '"y": 20,' + '"w": 90,' + '"h": 50 ' + '},' + '"background": {' + '"image": {' + '"name": "BOT1",' + '"code": 13,' + '"align": [' + '"left",' + '"vertical"' + ']' + '}' + '},' + '"label": {' + '"visible": true,' + '"align": [' + '"center",' + '"vertical"' + ']' + '}' + '}' + '}'; var json = Json#decode(strJson); if (isvalid json) { if (Json#isJson(json)) { Dialogs.alert("obj json:"+String.toString(json)); Dialogs.alert("Qtd de itens: " + String.toString(Json#count(json))); Dialogs.alert(Json#encode(json)); var botao = Json#get(json, "botaoEjemplo"); Dialogs.alert(Json#encode(Json#get(botao, "background"))); var label = Json#get(botao, "label"); Dialogs.alert("label antes: " + Json#encode(label)); Json#add(label, "teste", "teste add"); Dialogs.alert("label depois: " + Json#encode(label)); } else Dialogs.alert("No es un obj json"); } else Dialogs.alert("Json invalido"); }Salida¶
{ "botaoEjemplo": { "area": { "y": 20, "w": 90, "h": 50 }, "background": { "image": { "name": "BOT1", "code": 13, "align": [ "left", "vertical" ] } }, "label": { "visible": true, "align": [ "center", "vertical" ] } } } Qtd de itens: 1 "image": { "name": "BOT1", "code": 13, "align": [ "left", "vertical" ] } label antes: { "visible": true, "align": [ "center", "vertical" ] } label depois: { "visible": true, "align": [ "center", "vertical" ], "teste": "teste add" }
XML¶
| package://libs#xml/xml.wmlsc |
|---|
Utilidad para usar lenguaje de marcado XML
Sumario¶
Función Descripción create Crear un objeto XML. getText Obtener el texto de una tag XML. getChild Obtener un elemento principal por el nombre. getTag Obtener el nombre de tag root del objeto XML. getAttribute Obtener el valor de un atributo XML por el nombre. addChild Agrega un elemento descendiente a un objeto XML. setAttribute Agregue un atributo a un objeto XML. count Devuelve el número de elementos descendientes de un objeto XML. parse Transforma la String en un objeto XML.. toString Transforma un objeto XML en una String. childAt Obtener un elemento XML descendientes del índice. saveToFile Guarde el objeto pasado en un archivo XML. isXml Comprueba si un objeto es de tipo XML.
Funciones¶
create¶
XML#create(tagname);
Devuelve um objeto xml.
Parámetros¶
**tagName** - String que indica o nome da tag do objeto xml a ser criado.Ejemplo:
use url XML "package://libs#xml/xml.wmlsc"; var xml = XML#create("tag"); Dialogs.alert(XML#isXml(xml));Salida:
True
getText¶
XML#getText(xmlObj);
Devuelve el contenido en el objeto XML pasado
Parámetros¶
**xmlObj** - Objeto XML.Ejemplo:
use url XML "package://libs#xml/xml.wmlsc"; var xml = XML#parse("<hello>Ola!</hello>"); var result = XML#getText(xml); Dialogs.alert(result);Salida:
"Ola!"
getChild¶
XML#getChild(xmlObj, "child");
Devuelve el descendiente o invalid si no encuentra un descendiente con el apellido.
Parámetros¶
**xmlObj** - Objeto XML. **child** - Objeto XML descendiente que quieres conseguir.Ejemplo:
use url XML "package://libs#xml/xml.wmlsc"; var xml = XML#parse("<hello><f>Ola!</f></hello>"); var result = XML#getChild(xml, "f"); Dialogs.alert(XML#isXml(result));Salida:
true
getTag¶
XML#getTag(xmlObj);
Devuelve el nombre de la tag del objeto XML pasado
Parámetros¶
**xmlObj** - Objeto XML.Ejemplo:
use url XML "package://libs#xml/xml.wmlsc"; var xml = XML#create("root"); var tagName = XML#getTag(xml); Dialogs.alert(tagName);Salida:
"root"
getAttribute¶
XML#getAttribute(xmlObj, AttributeName);
Devuelve el valor de atributo
Parámetros¶
**xmlObj** - Objeto XML.AttributeName - Nnombre del atributo que desea obtener el valor.
Ejemplo:
use url XML "package://libs#xml/xml.wmlsc"; var xml = XML#parse("<produto preco='2000'>Computador</produto>"); var att = XML#getAttribute(xml, "preco"); Dialogs.alert(att);Salida:
"2000"
addChild¶
XML#addChild(parent, child);
Agregar contenido al XML anterior
Parámetros¶
parent - Objeto XML Principal.
child - Contenido que se agregará al Principal. Puede ser otro objeto XML o texto.
Ejemplo:
use url XML "package://libs#xml/xml.wmlsc"; var xmlPai = XML#create("pai"); var xmlFilho = XML#create("filho"); XML#addChild(xmlPai, xmlFilho); var filho = XML#getChild(xmlPai, "filho"); Dialogs.alert(XML#isXml(filho)); var root = XML#create("root"); XML#addChild(root,"sou a tag root"); Dialogs.alert(XML#getText(root));Salida:
true "sou a tag root"
setAttribute¶
XML#setAttribute(xmlObj, chave, valor);
Agrega un atributo al objeto XML pasado.
Parámetros¶
**xmlObj** - Objeto xml.chave - Clave de atributo.
valor - Valor de atributo.
Ejemplo:
use url XML "package://libs#xml/xml.wmlsc"; var root = XML#create("produto"); XML#setAttribute(root, "preco", "200"); Dialogs.alert(XML#getAttribute(root, "preco"));Salida:
"200"
count¶
XML#count(xmlObj);
Cuenta el número de descendiente del objeto XML pasado.
Parámetros¶
**xmlObj** - Objeto xml.Ejemplo:
use url XML "package://libs#xml/xml.wmlsc"; var xml = XML#parse("<produtos><produto></produto><produto></produto><produto></produto></produtos>"); Dialogs.alert(XML#count(xml));Salida:
3
parse¶
XML#parse(stringXml);
Devuelve un objeto xml de la String pasada.
Parámetros¶
**StringXml** - String no formato xml que deseja converter para um objeto xml.Ejemplo:
use url XML "package://libs#xml/xml.wmlsc"; var xml = XML#parse("<produtos><produto></produto><produto></produto><produto></produto></produtos>"); Dialogs.alert(XML#isXml(xml));Salida:
true
toString¶
XML#toString(xml);
Transforma un objeto XML en una String
Parámetros¶
**xml** - Objeto XML.Ejemplo:
use url XML "package://libs#xml/xml.wmlsc"; var xml = XML#create("cliente"); var nome = XML#create("nombre"); XML#addChild(nome, "phoebus"); XML#addChild(xml, nome); Dialogs.alert(XML#toString(xml));Salida:
"<?xml version='1.0' encoding='UTF-8'?><cliente><nombre>phoebus</nombre></cliente>"
childAt¶
XML#childAt(xml, index);
Devuelve el descendiente del xml pasado en función de la posición pasada.
Parámetros¶
**xml** - Objeto XML. **index** - Posición dónde el descendientes se encontra.Ejemplo:
use url XML "package://libs#xml/xml.wmlsc"; var xml = XML#parse("<pai><filho1></filho1><filho2></filho2></pai>"); var filho2 = XML#childAt(xml, 1); Dialogs.alert(XML#isXml(filho2)); Dialogs.alert(XML#toString(filho2));Salida:
true "<?xml version='1.0' encoding='UTF-8'?><filho2></filho2>"
saveToFile¶
XML#saveToFile(xml, stream);
Guarde el objeto pasado en un archivo XML. Devuelve true si tiene éxito y false si no.
Parámetros¶
**xml** - Objeto XML. **stream** - Stream donde se guardará el objeto.Ejemplo:
use url XML "package://libs#xml/xml.wmlsc"; var xml = XML#parse("<pai><filho1></filho1><filho2></filho2></pai>"); var stream = File#createExt(fileName, File#O_CREAT()); var result = XML#saveToFile(xml, stream); return result;Salida:
true
isXml¶
XML#isXml(xmlObj);
Devuelve true si el parámetro pasado es un objeto xml.
Parámetros¶
**xml** - Objeto XML.Ejemplo:
use url XML "package://libs#xml/xml.wmlsc"; var xml = XML#create("root"); Dialogs.alert(XML#isXml(xml));Salida:
true
TLV¶
| package://libs#tlv/tlv.wmlsc |
|---|
Implementa suporte a tipos de datos TLV (Tag-Length-Value)
Sumario¶
Función Descripción create Crea un objeto TLV set Ajusta el valor del objeto TLV get Recupera el valor del objeto TLV load Crea un objeto para manipular una colección TVL. Sin embargo, los elementos TLV presentes en el stream save Serializar colección pasada
Funciones¶
create¶
Tlv#create(tag, value)
Crea un objeto TLV
Parámetros¶
- tag - Valor de tag para los datos ingresados
- value - PhBuffer con el valor de TAG a copiar
Devuelve¶
Objeto TLV
set¶
Tlv#set(tlv, value)
Ajustar el valor del objeto TLV
Parámetros¶
- tlv - Objeto a ajustar creado con libs#tlv/tlv# create
- value - PhBuffer con el valor de TAG que se va a configurar
Devuelve¶
Objeto TLV actualizado
get¶
Tlv#get(tlv)
Recuperar el valor de un objeto TLV
Parámetros¶
- tlv - Objeto a ajustar creado con libs#tlv/tlv.wmlsc# create
Devuelve¶
Copie los datos en un PhBuffer
load¶
Tlv#load(stream)
Recuperar el valor de un objeto TLV
Parámetros¶
stream - stream con los datos en formato BER-TLV
Devuelve¶
invalid en caso de error o el controlador de la colección
save¶
Tlv#save(stream)
Serializar colección pasada
Parámetros¶
*stream - stream que recibirá los datos en formato BER-TLV *list - Phlist a realizar o objeto TLV
Devuelve¶
invalid indica problemas en los parámetros o número de objetos serializados
Ejemplo¶
use url Tlv "package://libs#tlv/tlv.wmlsc"; use url StreamCore "package://vm#stream/stream.wmlsc"; function BufferLoad(tlvObj) { var buffer = PhBuffer.create(0); var stream = StreamCore#create(invalid, buffer, ""); Tlv#save(stream, tlvObj); StreamCore#flush(stream); return buffer; } function testeTLVFull() { var tlv = Tlv#create(0x1, PhBuffer.create("teste load")); var newTlv = Tlv#set(tlv, PhBuffer.create("teste do set")); var valueBuffer = Tlv#get(newTlv); var valor = PhBuffer.getAsString(valueBuffer, 0, PhBuffer.getSize(valueBuffer)); Dialogs.alert("valor: " + valor); var buffer = PhBuffer.create(0); var stream = StreamCore#create(invalid, buffer, ""); if (isvalid stream) { if (Tlv#save(stream, tlv)) { StreamCore#seek(stream, StreamCore#SEEK_SET(),0); var loadTLV = Tlv#load(stream); if (isvalid loadTLV) { var result = typeof(loadTLV) == 6; if (result) { var newBuffer = bufferLoad(loadTLV); if (isvalid newBuffer) { valor = PhBuffer.getAsString(newBuffer, 0, PhBuffer.getSize(newBuffer)); Dialogs.alert("valor recuperado: " + valor); } else Dialogs.alert("Falla en el get"); } else Dialogs.alert("result: "+String.toString(result)); } else Dialogs.alert("Falla en el loadTLV"); } else Dialogs.alert("Falla al guardar el tlv"); } else Dialogs.alert("stream invalido"); }Salida¶
valor: teste do set valor recuperado: teste do set
Utilitários¶
QRCode¶
| package://libs#qrcode/qrcode.wmlsc |
|---|
Componente para generar QR Codes (Quick Response Code)
Sumario¶
Función Descripción create Crea un objeto QR Code encode Codifica un QR Code setParam Configura algún parámetro específico para la generación de QR Code setVersion Define la versión del QR Code setMode Define el modo de codificación de datos de entrada para generar el QR Code setEcLevel Define el nivel de corrección de errores al generar QR Code. setMaskType Define el patrón de máscara para generar el QR Code.
Constantes utilizadas¶
Format¶
Constantes Valor QRCode#FMT_BMP 1 QRCode#FMT_PBM 3 QRCode#FMT_JSON 5 QRCode#FMT_DIGIT 6 QRCode#FMT_ASCII 7
Params¶
Constantes Valor QRCode#PARAM_VERSION 0x00 QRCode#PARAM_MODE 0x01 QRCode#PARAM_ECLEVEL 0x02 QRCode#PARAM_MASKTYPE 0x03
Input coding modes¶
Constantes Valor Descripción QRCode#MODE_AUTO -1 Automatic selection QRCode#MODE_NUMERIC 0 Numeric QRCode#MODE_ALNUM 1 Alphanumeric QRCode#MODE_8BIT 2 8-bit QRCode#MODE_KANJI 3 Chinese characters
Error Correction Levels¶
Constantes Valor Descripción QRCode#EC_LEVEL_L 0 Level L - Approx 7% QRCode#EC_LEVEL_M 1 Level M - Approx 15% QRCode#EC_LEVEL_Q 2 Level Q - Approx 25% QRCode#EC_LEVEL_H 3 Level H - Approx 30%
Funciones¶
create¶
QRCode#create(String)
Crea un objeto de QR Code según la String recibida como parámetro
Parámetros¶
String datos que serán codificados
Devuelve¶
QR Code creado o invalid si no es posible crear el QRCode
encode¶
QRCode#encode(qr, format, scale, stream)
Codifica un QR Code según los parámetros recibidos.
Parámetros¶
- qr - QR Code creado
- format - formato de salida de QR codificado (ver sección de constantes)
- scale - Define el nivel de aumento de el QR Code generado (1-16)
- stream - Stream de salida para datos codificados
Devuelve¶
true en caso de éxito, o false en caso contrario
setParam¶
QRCode#setParam(qr, param, value)
Configura algún parámetro específico para la generación de QR Code
Parámetros¶
- qr - QR Code creado
- param - Parámetro a configurar (ver sección de constantes)
- value - Valor a configurar en el parámetro
Devuelve¶
true en caso de éxito, o false en caso contrario
setVersion¶
QRCode#setVersion(qr, version)
Define la versión del QR Code.Las versiones están entre 1 y 40. En la versión 1, la capacidad es de 20 caracteres alfanuméricos (EC Nivel M). En la versión 40, la capacidad es de 3391 caracteres(EC Nivel M).
En patrón, la versión se configura automáticamente.
Parámetros¶
- qr - QRCode creado
- version - Integer (1-40) con la versión a utilizar.
Devuelve¶
true en caso de éxito, o false en caso contrario
setMode¶
QRCode#setMode(qr, mode)
Define el modo de codificación de datos de entrada para generar el QR Code.
Parámetros¶
- qr - QRCode creado
- mode - Modo a utilizar (ver sección de constantes).
Devuelve¶
true en caso de éxito, o false en caso contrario
setEcLevel¶
QRCode#setEcLevel(qr, ecLevel)
Establece el nivel de corrección de errores al generar QR Code. La corrección de errores permite QRCode ser decodificado incluso si está parcialmente dañado.
En patrón, el nivel de corrección establecido es EC_LEVEL_L.
Parámetros¶
- qr - QRCode creado
- ecLevel - Nivel de corrección que se utilizará (ver sección de constantes).
Devuelve¶
true en caso de éxito, o false en caso contrario
setMaskType¶
QRCode#setMaskType(qr, maskType)
Define el patrón de máscara para generar el QR Code.
En patrón, la máscara se configura automáticamente.
Parámetros¶
- qr - QRCode creado
- maskType - Integer (0-7) con la máscara que se utilizará.
Devuelve¶
true en caso de éxito, o false en caso contrario
Ejemplo¶
use url QRCode "package://libs#qrcode/qrcode.wmlsc"; function testeQrCodeFull() { var qrStr = "https://pt.wikipedia.org/wiki/Codigo_QR"; var qr = QRCode#create(qrStr); var result; if (isvalid qr) { Dialogs.alert("QRCode creado con éxito"); var buffer = PhBuffer.create(0); var stream = StreamCore#create(invalid, buffer, ""); if (QRCode#encode(qr, QRCode#FMT_BMP(), 4, stream)) { result = QRCode#setParam(qr, QRCode#PARAM_MODE(), QRCode#MODE_AUTO()); result = result && QRCode#setVersion(qr, 2); result = result && QRCode#setMode(qr, QRCode#MODE_NUMERIC()); result = result && QRCode#setEcLevel(qr, QRCode#EC_LEVEL_H()); result = result && QRCode#setMaskType(qr, 7); if (result) Dialogs.alert("El teste ejecutan correctamente"); else Dialogs.alert("Falla ejecutan los testes"); } else Dialogs.alert("Falla al codificar el QRCode"); } else { Dialogs.alert("Falla al crear el QRCode"); } }Salida¶
QRCode creado con éxito El teste ejecutan correctamente
Cron¶
| package://libs#cron/cron.wmlsc |
|---|
Proporciona funciones para programar y ejecutar tareas basadas en reloj, similares a las que se utilizan en sistemas operativos UNIX.
Sumario¶
Función Descripción cronExpression Realiza el parse de una expresión cron y crear un objeto CronExpression. cronNextFireDate Indica la próxima fecha/hora en que se ejecutará la tarea.
cronExpression¶
Cron#cronExpression(expression)
Realiza el parse de una expresión cron y crear un objetoCronExpression.
Parámetros¶
- expression - String con la representación del nuevo objeto a crear.
Devuelve¶
String con la descripción del error o un identificador del objeto CronExpression.
cronNextFireDate¶
Cron#cronNextFireDate(cron, afterdate)
Indica la próxima fecha/hora en que se ejecutará la tarea.
Parámetros¶
- cron - Handle del objeto CronExpression, obtenido a través de la función cronExpression.
- afterdate - Indica a partir de qué fecha/hora de inicio se comprobará el próximo evento.
Devuelve¶
Datetime de la próxima ejecución o invalid en caso de error.
Ejemplo¶
use url cron "package://libs#cron/cron.wmlsc"; use url Datetime "package://libs#date/datetime.wmlsc"; function cronTest() { var cron = cron#cronExpression("0 19 23 * * ?"); /* Ejecuta en 23:19 todos los dias */ var datetime = Datetime#getDateTime(); /* Fecha y hora corrientes ex: 10/04/2017 17:30:00 */ var nextDatetime = cron#cronNextFireDate(cron, datetime); Dialogs.alert("Proxima fecha/hora del cron: " + dateTimeAsStr("DD/MM/YY HH:MM:SS", nextDatetime)); }
Salida¶
Proxima fecha/hora del cron: 10/04/17 23:19:00
Regex¶
| package://libs#regex/regex.wmlsc |
|---|
Interface para el uso de expresiones regulares
Sumario¶
Función Descripción compile Crea un objeto JSON match Transforma el objeto JSON recibido en una String en formato JSON search Transforma la String recibida en uno objeto JSON sub Devuelve la cuantid de itens del objeto JSON o del ítem
Metacaracteres suportados¶
Metacaracteres Descripción \ Escape ^ Inicio de String . Cualquier caracter $ Fin de String | Alternancia (o) () Agrupamiento [] Clase de caracteres * 0 o más ocurrencias + 1 o más ocurrencias ? 1 o 0 ocurrencias {n} Exactamente n ocurrencias {n,} El minímo n ocurrencias {n,m} El minímo n y lo máximo m ocurrencias
caracteres de escape¶
caracteres Descripción \t Tabulación \n Nueva línea \r Devuelve el cursor \f Nueva página
Classes pré-definidas¶
Classe Descripción \w Alfanumérico [0-9a-zA-Z] \W No-alfanumérico \s Espacio \S Diferente de Espacio \d Dígitos (0-9) \D No-dígitos \x Dígitos hexadecimais \X Dígitos no hexadecimais \c caracteres de control \C caracteres que no son de control \p Puntuación \P No puntuación \b Límite de palabra (borde) \B caracteres que no están en el límite de palabras
Códigos de Erro¶
Constantes Descripción Regex#NO_MATCH Undefined correspondencia. Regex#BADPAT Expresión no válido Regex#ECOLLATE Agrupamiento inválido Regex#ECTYPE Clase de caracteres desconocido Regex#EESCAPE Escape inválido Regex#ESUBREG Referencia no válido Regex#EBRACK Uso incorrecto de operadores '[]' Regex#EPAREN Uso incorrecto de operadores '()' Regex#BADBR Uso incorrecto de operadores '{}' Regex#ERANGE Contenido inválido en '{}' Regex#ESPACE Problemas con la asignación de memoria Regex#BADRPT Uso no válido de operadores repetidos
Configuraciones Adicionales¶
Constantes Descripción Regex#FLAG_NONE comportamiento patrón Regex#FLAG_EXTENDED Habilitar patrones extendidos Regex#FLAG_IGNORE_CASE Sin restricciones en el caso mayúsculas y minúsculas Regex#FLAG_NEWLINE Tratar el '\n' como carácter de final de línea Regex#FLAG_NOSUB Ignorar subexpresiones. La String debe coincidir con el patrón integer. Función Devuelveá 0 si se encontró una coincidencia y un código de error en caso contrario.
Funciones¶
compile¶
Regex#compile(pattern, flags)
Compila un patrón y devuelve una instancia de Regex.
Parámetros¶
- pattern - Patrón buscado
- flags - Opciones (Vea sección Configuraciones Adicionales)
Devuelve¶
Instancia de Regex, código error (Consule la sección Códigos de Error) ou invalid em caso de parámetros incorretos
Ejemplos¶
use url Regex "package://libs#regex/regex.wmlsc"; function test () { var patterns = "(http|https|file):\\/\\/((\\w+\\.)" + "{1,}\\w*)\\/\\?((\\w*)=(\\w*)&?){0,}"; var re = Regex#compile(patterns, Regex#FLAG_NONE()); if (isvalid re) { Dialogs.alert("Patrón compilado"); } }Salida:
Patrón compilado
match¶
Regex#match(pattern, input, flags)
Validar si hay ocurrencias del pattern en input.
Parámetros¶
- pattern - String con patrón buscado o instancia de Regex (vea Regex#compile)
- input - String donde se hará la búsqueda
- flags - Opciones (Vea sección Configuraciones Adicionales)
Devuelve¶
Índice para la siguiente búsqueda de String en caso de éxito o código de error de lo contrario (consulte la sección Códigos de Error)
Ejemplos¶
use url Regex "package://libs#regex/regex.wmlsc"; function test () { var patterns = "(http|https|file):\\/\\/((\\w+\\.)" + "{1,}\\w*)\\/\\?((\\w*)=(\\w*)&?){0,}"; var re = Regex#compile(patterns, Regex#FLAG_NONE()); if (isvalid re) { var phUrl = "http://www.phoebus.com.br/?id=1"; var matches = Regex#match(re, phUrl, Regex#FLAG_NONE()); if (matches >= 0) { Dialog.alert("Patrón encontrado."); } } }Salida:
Patrón encontrado.
search¶
Regex#search(pattern, input, flags, captures)
Buscar patrón en pattern y devuelve una lista de ocurrencias
Parámetros¶
- pattern - Patrón deseado
- input - String donde se hará la búsqueda
- flags - Opciones (Consulte la sección Configuraciones Adicionales)
- captures - PhType.STRINGLIST que se llenará con las ocurrencias encontradas
Devuelve¶
Índice para la próxima búsqueda en String en código de éxito o error de lo contrario (Consule la sección Códigos de Error)
Ejemplos¶
use url Regex "package://libs#regex/regex.wmlsc"; function test () { var patterns = "(http|https|file):\\/\\/((\\w+\\.)" + "{1,}\\w*)\\/\\?((\\w*)=(\\w*)&?){0,}"; var re = Regex#compile(patterns, Regex#FLAG_NONE()); if (isvalid re) { var phUrl = "http://www.phoebus.com.br/?id=1"; var groups = PhType.create(PhType.STRINGLIST); if (Regex#search(re, phUrl, Regex#FLAG_NONE(), groups) >= 0) { for (var i = 0; i < PhType.count(groups); i++) { Dialogs.alert("group: " + String.toString(PhType.getValue(groups, i))); } } } }Salida:
group: http://www.phoebus.com.br/?id=1 -- group: http -- group: www.phoebus.com.br -- group: com. -- group: id=1 -- group: id -- group: 1
sub¶
Regex#sub(pattern, repl, String, flags, count)
Reemplaza la coincidencia encontrada por la String en repl
Parámetros¶
- pattern - Patrón deseado
- repl - String para reemplazar
- String - String donde se hará el reemplazo
- flags - Opciones (Consule la sección Configuraciones Adicionales)
- count - Número de ocurrencias que se pueden reemplazar
Devuelve¶
String código modificado o de error (Consule la sección Códigos de Error)
Ejemplos¶
use url Regex "package://libs#regex/regex.wmlsc"; function test () { var patterns = "(http|https|file):\\/\\/((\\w+\\.)" + "{1,}\\w*)\\/\\?((\\w*)=(\\w*)&?){0,}"; var re = Regex#compile(patterns, Regex#FLAG_NONE()); if (isvalid re) { var phUrl = "http://www.phoebus.com.br/?id=1"; var newUrl = Regex#sub(re, "\\1://\\2/?\\5=3", phUrl, Regex#FLAG_NONE(), 1); Dialogs.alert("newUrl: " + String.toString(newUrl)); } }Salida:
newUrl: http://www.phoebus.com.br/?id=3
PhdmService¶
| package://libs#phdm/service.wmlsc |
|---|
El Phdm (Phoebus Download Manager) es el servicio responsable del deploy de aplicación remota en POS.
Constantes¶
Tamaños¶
Tamaños definidos para el paramSet
Constantes Valor PhdmService#SIZE_BYTE 1 PhdmService#SIZE_WORD 2 PhdmService#SIZE_DWORD 4
Constantes Valor PhdmService#SIZE_TYPE_BIG_ENDIAN 2 PhdmService#SIZE_TYPE_LITTLE_ENDIAN 3 PhdmService#SIZE_TYPE_SHORT_BIG 4 PhdmService#SIZE_TYPE_SHORT_LITTLE 1
Comandos¶
Constantes Valor Descripción PhdmService#CMD_DM_VERSION 0xA1 TAG del comando que devuelve la versión de la aplicación de telecarga PhdmService#CMD_DM_BOOT 0xA2 TAG del comando que realiza tratamientos especiales en el boot PhdmService#CMD_DM_UPDATE 0xA3 TAG del comando que configura y ejecuta todo el proceso de telecarga PhdmService#CMD_DM_RESET 0xA4 TAG del comando que borra todas las configuraciones y archivos de download
Tags - Parámetros de entrada¶
Constantes Valor Descripción PhdmService#TAG_DM_FRAGMENT 0x1F01 Tamaño de bytes del fragmento PhdmService#TAG_DM_HASH 0x1F02 Estrategia de verificación de la integridad de los datos PhdmService#TAG_DM_COMPRESSION 0x1F03 Estrategia de compresión de datos PhdmService#TAG_DM_TIMEOUT 0x1F04 Timeoutpara la recepción de datos, en milisegundos PhdmService#TAG_DM_SIZE_HEADER 0x1F05 Tipo de tamaño enviado en el encabezado del protocolo PhDM PhdmService#TAG_DM_INTERRUPTION_LIMIT 0x1F06 Limitar el número de interrupciones en el proceso de telecarga PhdmService#TAG_DM_LOGICAL_NUMBER 0x1F07 Identificación lógica de terminales PhdmService#TAG_DM_APP_VERSIONS 0x3F08 Template con pares de tags de aplicación: nombre + versión PhdmService#TAG_DM_VERSION_NAME 0x1F08 Nombre y versión de la aplicación PhdmService#TAG_DM_LOG 0x1F0B Permite el registro de información durante la telecarga PhdmService#TAG_DM_APPID 0x1F10 Identificación de la aplicación de destino de la telecarga PhdmService#TAG_DM_PROJECTID 0x1F11 Identificación del proyecto de telecarga PhdmService#TAG_DM_SITEID 0x1F12 Identificación del establecimiento PhdmService#TAG_DM_MSG_PROGRESS_TT 0x1F13 Mensaje con título de progreso PhdmService#TAG_DM_MSG_PROGRESS 0x1F14 Mensaje de progreso con cancelamento PhdmService#TAG_DM_MSG_PROGRESS_OBRG 0x1F15 Mensaje obligatorio de progreso PhdmService#TAG_DM_MSG_DEPLOY 0x1F16 Mensaje de carga de archivos PhdmService#TAG_DM_MSG_INSTALL 0x1F17 Mensaje de actualización completada
Tags - Parámetros de salida¶
Constantes Valor Descripción PhdmService#CMD_DM_RETURN 0x3F20 Respuesta a todos los comandos PhdmService#TAG_DM_RETURN 0x1F20 TAG utilizado para Devuelve comandos PhdmService#TAG_DM_VERSION 0x1F21 Informar la versión del módulo de descarga
Devuelve del comandos¶
Constantes Valor Descripción PhdmService#RET_DM_OK 0 Éxito en la ejecución de la operación PhdmService#RET_DM_INVPARAM 1 Parámetro de entrada no válido PhdmService#RET_DM_MISSPARAM 2 Falta un parámetro de entrada del comando PhdmService#RET_DM_NOT_CONNECTED 3 Comando enviado antes de que se estableciera la conexión PhdmService#RET_DM_UNAUTHORIZED 4 Telecarga no autorizada al terminal en cuestión PhdmService#RET_DM_BUSY 5 Falla en telecarga debido a sobrecarga del sistema PhdmService#RET_DM_CONNECTION_ERROR 6 La conexión ya no está establecida PhdmService#RET_DM_RECEIVE_TIMEOUT 7 Timeout al recibir los datos PhdmService#RET_DM_INTERRUPTED 8 Telecarga interrumpido por el operador PhdmService#RET_DM_DEPLOY_ERROR 9 Los recursos de la telecarga no están disponibles PhdmService#RET_DM_INSTALL_ERROR 10 Falla en instalación de aplicaciones PhdmService#RET_DM_ALLOC_MEMORY 11 Problema de asignación de memoria PhdmService#RET_DM_REQUEST_ERROR 12 Problema al enviar la request de telecarga PhdmService#RET_DM_RESPONSE_ERROR 13 Problema al iniciar la respuesta de telecarga
Errorones¶
Constantes Valor Descripción PhdmService#RET_ERR_NOK -1 Error de ejecución de la operación PhdmService#RET_ERR_ACCESS -2 Sin privilegios para realizar la operación con la aplicación de telecarga PhdmService#RET_ERR_MEMORY -3 Problemas para solicitar memoria PhdmService#RET_ERR_SEND -4 No fue posible enviar el comando a la aplicación de descarga. PhdmService#RET_ERR_REC -5 No se puede leer el comando de la aplicación de descarga. PhdmService#RET_ERR_PARAM -6 Algunos parámetros no se pueden procesar al intercambiar comandos con la aplicación PhdmService#RET_ERR_CONNECTED -7 La aplicación ya ha solicitado una conexión con la aplicación de telecarga. PhdmService#RET_ERR_OVERFLOW -8 El tamaño del comando excede el límite establecido PhdmService#RET_ERR_INSUFFICIENT_BUFFER -9 El tamaño del valor de la tag TAG_DM_VERSION excede el tamaño de buffer asignado PhdmService#RET_ERR_EMPTY_VERSION -10 La tag TAG_DM_VERSION estaba vacía
Funciones¶
Sumario¶
Función Descripción init Inicie la aplicación PhDM Client open Inicializa el medio de comunicación con la aplicación PhDM Client. close Finaliza los medios de comunicación con la aplicación PhDM Client. paramSet Establecer un valor de tipo Byte, Word, DWord, String o grupo de bytes a un parámetro de entrada paramSetStrList Establecer un valor de template en un parámetro de entrada cmdVersion Devuelve la versión del módulo de telecarga en formato M.m.p (Major, Minor y Patch) cmdBoot Comando necesario para manejar problemas pendientes de telecargas anteriores sin terminar cmdUpdate Iniciar o continuar el proceso de descarga
init¶
PhdmService#init()
Inicie la aplicación PhDM Client.
Parámetros¶
No hay
Devuelve¶
true en caso de éxito y false en caso de falla.
Ejemplo¶
use url PhdmService "package://libs#phdm/service.wmlsc"; function testePhdm() { var result = PhdmService#init(); if (result) { Dialogs.alert("El servicio de Phdm se inició con éxito"); } else Dialogs.alert("Falla en inicio del servico Phdm"); }Salida¶
El servicio de Phdm se inició con éxito
open¶
PhdmService#open()
Inicializa el medio de comunicación con la aplicación PhDM Client..
Parámetros¶
No hay
Devuelve¶
true en caso de éxito y false en caso de falla.
Ejemplo¶
use url PhdmService "package://libs#phdm/service.wmlsc"; function testePhdm() { var result = PhdmService#open(); if (result) { Dialogs.alert("Comunicación iniciada con éxito"); } else Dialogs.alert("Falla en el inicio del comunicacación"); }Salida¶
Comunicación iniciada con éxito
close¶
PhdmService#close()
Finaliza los medios de comunicación con la aplicación PhDM Client..
Parámetros¶
No hay
Devuelve¶
true en caso de éxito y false en caso de falla.
Ejemplo¶
use url PhdmService "package://libs#phdm/service.wmlsc"; function testePhdm() { if (PhdmService#open()) { if (PhdmService#close()) Dialogs.alert("Comunicación completado con éxito"); else Dialogs.alert("Falla al terminar la comunicación"); } else Dialogs.alert("Falla al iniciar la comunicación"); }Salida¶
Comunicación completado con éxito
paramSet¶
PhdmService#paramSet(tag, value)
Establecer un valor de tipo Byte, Word, DWord, String o grupo de bytes a un parámetro de entrada.
Parámetros¶
- tag - Valor de TAG que debe ser del tipo de template
- value - PhType con valor en tag
Devuelve¶
true en caso de éxito y false en caso de falla.
Ejemplo¶
use url PhdmService "package://libs#phdm/service.wmlsc"; function testePhdm2() { var result = PhdmService#paramSet(PhdmService#TAG_DM_INTERRUPTION_LIMIT(), PhType.set(PhType.create(PhType.BYTE), 3)); if (result) { Dialogs.alert("Parámetro configurado correctamente"); } else Dialogs.alert("Falla al configura el parametro"); }Salida¶
Parámetro configurado correctamente
paramSetStrList¶
PhdmService#paramSetStrList(tag, value)
Establecer un valor de template en un parámetro de entrada.
Crea la TAG que tiene como determinada una lista de tags con el mismo valor pero tipo primitivo
Parámetros¶
- tag - Valor de TAG que debe ser del tipo de template
- values - Lista de valores de tags primitivos
Devuelve¶
true en caso de éxito y false en caso de falla. invalid em caso de erro.
Ejemplo¶
use url PhdmService "package://libs#phdm/service.wmlsc"; function testePhdm3() { var version = PhdmService#cmdVersion(); var result = PhdmService#paramSetStrList(PhdmService#TAG_DM_APP_VERSIONS(), [PhType.set(PhType.create(PhType.STRING), "PhDMClient"), version]); if (result) { Dialogs.alert("Parámetro configurado correctamente"); } else Dialogs.alert("Falla al configura el parámetro"); }Salida¶
Parámetro configurado correctamente
cmdVersion¶
PhdmService#cmdVersion()
Devuelve la versión del módulo de telecarga en formato M.m.p (Major, Minor y Patch); Ejemplo, "1.0.0".
Parámetros¶
No hay
Devuelve¶
version String con la versión del módulo de telecarga, en el formato M.m.p (Major, Minor e Patch), Ejemplo, "1.0.0". (previamente asignado). o invalid en caso de error.
Ejemplo¶
use url PhdmService "package://libs#phdm/service.wmlsc"; function testePhdm3() { var version = PhdmService#cmdVersion(); if (isvalid version) { Dialogs.alert("Versión recuperada con éxito"); } else Dialogs.alert("Falla al recupera la versión"); }Salida¶
Versión recuperada con éxito
cmdBoot¶
PhdmService#cmdBoot()
Comando necesario para manejar problemas pendientes de telecargas anteriores sin terminar.
Parámetros¶
No hay
Devuelve¶
true caso de sucesso, false em caso de falha no envio do comando ou invalid em caso contrário
Ejemplo¶
use url PhdmService "package://libs#phdm/service.wmlsc"; function testePhdm4() { var result = PhdmService#cmdBoot(); if (result) { Dialogs.alert("Comando ejecutado con éxito"); } else Dialogs.alert("Falla en ejecución de comando"); }Salida¶
Comando ejecutado con éxito
cmdUpdate¶
PhdmService#cmdUpdate()
Iniciar o continuar el proceso de descarga. Si se interrumpió una telecarga anterior, se continuará por esta misma operación.
Parámetros¶
No hay
Devuelve¶
true caso de éxito o false en caso de falla en el envío del comando y uno de los siguientes valores en caso contrario:
- RET_DM_INVPARAM
- RET_DM_MISSPARAM
- RET_DM_NOT_CONNECTED
- RET_DM_UNAUTHORIZED
- RET_DM_BUSY
- RET_DM_CONNECTION_ERROR
- RET_DM_RECEIVE_TIMEOUT
- RET_DM_INTERRUPTED
- RET_DM_DEPLOY_ERROR
- RET_DM_INSTALL_ERROR
Ejemplo¶
use url PhdmService "package://libs#phdm/service.wmlsc"; function testePhdm4() { var versions = [ "APP1 1.0", "APP2 2.0", "_APP3 5.6", invalid ]; PhdmService#open(); PhdmService#paramSet(PhdmService#TAG_DM_FRAGMENT(), PhType.set(PhType.create(PhType.DWORD), 2048)); PhdmService#paramSet(PhdmService#TAG_DM_LOGICAL_NUMBER(), PhType.set(PhType.create(PhType.STRING), "00000001")); PhdmService#paramSet(PhdmService#TAG_DM_SIZE_HEADER(), PhType.set(PhType.create(PhType.BYTE), 4)); PhdmService#paramSet(PhdmService#TAG_DM_INTERRUPTION_LIMIT(), PhType.set(PhType.create(PhType.BYTE), 10)); PhdmService#paramSet(PhdmService#TAG_DM_APPID(), PhType.set(PhType.create(PhType.DWORD), 1010)); PhdmService#paramSet(PhdmService#TAG_DM_PROJECTID(), PhType.set(PhType.create(PhType.DWORD), 1061)); PhdmService#paramSetStrList(PhdmService#TAG_DM_APP_VERSIONS(), versions); PhdmService#paramSetStr(PhdmService#TAG_DM_SITEID(), "1"); if (PhdmService#cmdUpdate()) Dialogs.alert("Comando ejecutado con éxito"); else Dialogs.alert("Falla en ejecución"); PhdmService#close(); }Salida¶
Comando ejecutado con éxito
PhastService¶
| package://phast#applet/service.wmlsc |
|---|
Es el servicio encargado de dar de alta y realizar los servicios en el Phast.
Sumario¶
Función Descripción register Registrar un servicio para ser llamado por el Phast. execute Ejecute el servicio que se registró anteriormente en Phast.
register¶
PhastService#register(service, script, func, inputs)
Registrar un servicio para ser llamado por el Phast.
Parámetros¶
- service - String con el nombre del servicio que se registrará.
- script - String con el módulo de script que representa el servicio que se ejecutará.
- func - String con el nombre de la función que se llamará.
- inputs - Lista con los parámetros de entrada.
Devuelve¶
void
Ejemplo¶
use url AppletService "package://phast#applet/service.wmlsc"; extern function publicServices() { var script = "package://tef/services.wmlsc"; AppletService#register("tef.enable", script, "paymentEnable", 1); }
execute¶
PhastService#execute(service, params)
Ejecute el servicio que se registró anteriormente en Phast.
Parámetros¶
- service - String con el nombre del servicio que se registrará.
- params - Lista con los parámetros del servicio.
Devuelve¶
void
Ejemplo¶
use url Service "package://phast#applet/service.wmlsc"; extern function tefEnabled() { Service#execute("tef.enable", [true]); }
Persistencia¶
DB¶
| package://libs#db/db.wmlsc |
|---|
Implementa la manipulación de la base de datos.
Archivos binarios basados en estructuras que utilizan el patrón CSTD. CSTD (Communication Standard) es un formato de base de datos patentado desarrollado por Phoebus que funciona como un modelo de datos jerárquico. Puede contener una o más subtables dentro de la misma table.
Sumario¶
Función Descripción open Abra una nueva conexión a la base de datos. openFromStream Abre una nueva conexión de base de datos desde una stream de datos. insert Insertar un nuevo registro en la base de datos. getSubTable Devuelve la subtable asociada con el registro y el index de la table actual. first Mueva el puntero de registro al primer registro de la table. last Mueve el puntero de registro al último registro de la table. next Avanza el puntero al siguiente registro de la table, si lo hay. prior Volver el puntero al registro anterior de la table, si lo hay. exportSubTable Exporte una subtable a una nueva table o archivo independiente. count Devuelve el número de registros en la table. set Persiste el registro actual con los valores encontrados en todos los campos de la estructura definida para la table. get Recupera el registro actual de la table y carga los valores de campo de la estructura definida en la table. setField Asigna el valor al campo en la estructura definida para la table. getField Obtener el valor de un campo previamente cargado. seek Mover el registro actual a la posición determinada por el index. erase Eliminar una table de la base de datos. recordDelete Eliminar registro actual. size Devuelve el tamaño físico que ocupa la table en el dispositivo de almacenamiento en bytes. recordSize Devuelve el tamaño, en bytes, de los registros contenidos en la table. recordGet Carga los valores encontrados en el registro actual en la definición de estructura. recordUpdate Actualiza el registro actual con los valores encontrados en todos los campos de la estructura definida para la table. setStruct Asigna la definición de la estructura que contendrá los valores del registro a la tabla informada en el parámetro. getStruct Recupera la definición de la estructura que contendrá los valores del registro. recordNumber Devuelve el número de registros en la table. getOwner Devuelve el dueño de la tabla. subTablesSize Devuelve el tamaño de una tabla y sus subtablas. getLFG Recuperar el valor de LFG. insertSubTable Esta función establece una estructura jerárquica agregando una subtabla a la tabla pasada por parámetro. setLFG Asignar el valor LFG. copy Copiar una tabla. isDB Comprueba si la instancia pertenece a la clase PH_DB. structAsBuffer Transforma una estructura en un buffer. getName Recuperar el nombre de la tabla. getItem Devuelve una copia del registro actual al que apunta la base de datos. find Devuelve el primer registro de una base de datos con un id específica. findNext Devuelve el siguiente registro de una base de datos con un id específica. getAll Devuelve una lista de todos los registros en una base de datos. tableCopy Copia todos los registros de la tabla src a la tabla dst. La copia incluye subtablas. tableCopyLimit Copias limitadas de registros de la tabla src a la tabla dst. La copia incluye subtablas. recordCopy Copia un registro de la tabla src a la tabla dst. La copia incluye subtablas. filter Devuelve una lista con todos los registros de una base de datos que pasaron los criterios.
open¶
Db#open(stream, struct_);
Abre una nueva conexión a la base de datos. Si el archivo no existe, se creará.
Parámetros¶
- stream - Stream para manejar archivos que deben apuntar a la base de datos o una String con el nombre del archivo.
- struct_ PhStruct o definición de la estructura que contiene la estructura a registrar. Este parámetro no debe contener subestructuras.
Devuelve¶
Un objeto Table o invalid si el parámetro de entrada no es válido. Devuelve false en caso de errores.
openFromStream¶
Db#openFromStream(stream, struct_)
Abre una nueva conexión de base de datos a través de un stream de datos
Parámetros¶
- stream - Stream para manejar archivos que deben apuntar a la base de datos.
- struct_ PhStruct o definición de la estructura que contiene la estructura a registrar. Este parámetro no debe contener subestructuras.
Devuelve¶
Un objeto Table o invalid si el parámetro de entrada no es válido. Devuelve false en caso de errores.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; use url StreamFile "package://vm#stream/file.wmlsc"; function testeDb() { var definition = "{codigo:String; nome:String}"; var file = StreamFile#createExt("DBTS", StreamFile#O_CREAT()); var tb = db#openFromStream(file, definition); if (isvalid tb) { Dialogs.alert("Tabla creada con éxito!"); } else { Dialogs.alert("Error al crear la tabla"); } return tb; }Salida¶
Tabla creada con éxito!
insert¶
Db#insert(table)
Insertar un nuevo registro en la base de datos.
Parámetros¶
- table - Objeto de tabla resultante de una llamada previa de open.
Devuelve¶
- true - si la inserción es exitosa. false se devuelve en caso de errores.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; use url StreamFile "package://vm#stream/file.wmlsc"; function testeDb() { var definition = "{codigo:String; nome:String}"; var file = StreamFile#createExt("DBTS", StreamFile#O_CREAT()); var tb = Db#openFromStream(file, definition); if (isvalid tb) { Dialogs.alert("Tabla creada con éxito!"); } else { Dialogs.alert("Error al crear la tabla"); } return tb; } function testeDb2(tb) { if (isvalid tb) { var data = Db#getStruct(tb); PhStruct.set(data, "codigo", "1234"); PhStruct.set(data, "nome", "Produto teste"); if (Db#insert(tb)) { Dialogs.alert("Registro ingresado exitosamente"); } else { Dialogs.alert("Error al insertar el registro"); } } else { Dialogs.alert("Tabla inválida"); } } function main() { testeDb2(testeDb()); }Salida¶
Tabla creada con éxito! Registro ingresado exitosamente
getSubTable¶
Db#getSubTable(table, index)
Devuelve la subtable asociada con el registro y el index de la table actual.
Parámetros¶
- table - Objeto de tabla resultante de una llamada previa de open.
- index - Posición de la subtabla solicitada. Si se recibe un valor menor que cero, se asumirá el valor cero. Asimismo, para un valor mayor que el número de subtablas existentes Devuelveá la última.
Devuelve¶
Un objeto table si la operación fue exitosa o invalid si un parámetro de entrada no es apropiado o en caso de errores.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb3(tb) { if (isvalid tb) { Db#insertSubTable(tb, "{}"); var subTable = Db#getSubTable(tb, 0); if (isvalid subTable) { Dialogs.alert("Subtabla recuperada con éxito"); } else { Dialogs.alert("Falló la recuperación de la subtabla"); } } else { Dialogs.alert("Tabla inválida"); } }Salida¶
Subtabla recuperada con éxito
first¶
Db#first(table)
Mueva el puntero de registro al primer registro de la table.
Parámetros¶
table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable ().
Devuelve¶
- true si la operación fue exitosa. Devuelve false en caso de errores.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb4(table) { if (isvalid table) { if (Db#first(table)) { Dialogs.alert("Estoy en el primer registro"); } else { Dialogs.alert("Falla en ejecución del método first"); } } else { Dialogs.alert("Tabla inválida"); } }Salida¶
Estoy en el primer registro
last¶
Db#last(table)
Mueve el puntero de registro al último registro de la table.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
Devuelve¶
true si la operación fue exitosa. Devuelve false en caso de errores.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb5(table) { if (isvalid table) { if (Db#last(table)) { Dialogs.alert("Este no es el último registro"); } else { Dialogs.alert("Falla en ejecución del método last"); } } else { Dialogs.alert("Tabla inválida"); } }Salida¶
Este no es el último registro
next¶
Db#next(table)
Avanza el puntero al siguiente registro de la table, si lo hay.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
Devuelve¶
true si la operación fue exitosa. Devuelve false en caso de errores.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb6(table) { if (isvalid table) { if (Db#next(table)) { Dialogs.alert("Adelanté un registro"); } else { Dialogs.alert("Falla en ejecución del método next"); } } else { Dialogs.alert("Tabla inválida"); } }Salida¶
Adelanté un registro
prior¶
Db#prior(table)
Volver el puntero al registro anterior de la table, si lo hay.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
Devuelve¶
true si la operación fue exitosa. Devuelve false en caso de errores.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb7(table) { if (isvalid table) { if (Db#prior(table)) { Dialogs.alert("Volver un registro"); } else { Dialogs.alert("Falla en ejecución del método prior"); } } else { Dialogs.alert("Tabla inválida"); } }Salida¶
Volver un registro
exportSubTable¶
Db#exportSubTable(table, index, stream)
Las tablas deben contener una o más subtablas. La función exportSubTable permite guardarlos en una nueva tabla separada o en un archivo.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
- index - Identifica la subtabla, donde 0 es el índice de la primera, 1 es el índice de la segunda, y así sucesivamente..
- stream - Stream para manipular archivos donde se copiará la subtabla.
Devuelve¶
true si la operación fue exitosa. Devuelve false en caso de errores.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; use url StreamFile "package://vm#stream/file.wmlsc"; function testeDb8(table) { if (isvalid table) { Db#insertSubTable(table, "{}"); var temp = Db#getSubTable(table, 0); var file = StreamFile#createExt("SAIDA", StreamFile#O_CREAT()); if (Db#exportSubTable(table, 0, file)) { Dialogs.alert("Subtabla exportada con éxito"); } else { Dialogs.alert("Error al exportar la subtabla"); } } else { Dialogs.alert("Error al abrir la tabla"); } }Salida¶
Subtabla exportada con éxito
count¶
Db#count(table, index, stream)
Devuelve el número de registros en la table. Este número es independiente de la posición actual del registro.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
Devuelve¶
El número de registros de éxito, o invalid si el parámetro de entrada no es apropiado o en caso de errores.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb9(table) { if (isvalid table) { var qtd = Db#count(table); if (qtd) Dialogs.alert("El número de registros es: " + String.toString(qtd)); else Dialogs.alert("Falla en ejecución"); } else { Dialogs.alert("Error al abrir la tabla"); } }Salida¶
El número de registros es: 1
set¶
Db#set(table)
- Persiste el registro actual con los valores encontrados en todos los campos de la estructura definida para la table.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
Devuelve¶
true si la operación fue exitosa. Devuelve false en caso de errones.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb10(table) { if (isvalid table) { var estrutura = Db#getStruct(table); var nome = PhStruct.get(estrutura, "nome"); PhStruct.set(estrutura, "nome", "Teste do set"); if (Db#set(table)) Dialogs.alert("Tabla configurada correctamente"); else Dialogs.alert("Falla en ejecución del método"); } else { Dialogs.alert("Tabla inválida"); } }Salida¶
Tabla configurada correctamente
get¶
Db#get(table)
Recupera el registro actual de la table y carga los valores de campo de la estructura definida en la table.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
Devuelve¶
true si la operación fue exitosa. Devuelve false en caso de errores.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; use url StreamFile "package://vm#stream/file.wmlsc"; function testeDb11() { var definition = PhStruct.create("{codigo:String; nome:String}"); var file = StreamFile#createExt("DBTS", StreamFile#O_RDONLY()); var tb = Db#openFromStream(file, definition); if (isvalid tb) { if (Db#get(tb)) { Dialogs.alert("Nombre: "+ PhStruct.get(definition, "nome")); } else Dialogs.alert('Falla en ejecución del método'); } else { Dialogs.alert("Tabla inválida"); } }Salida¶
Nombre: Teste do set
setField¶
Db#setField(table, field, value);
Asigna el valor al campo en la estructura definida para la table.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
- field - Indica el campo cuyo valor se debe configurar.
- value - Nuevo valor de campo.
Devuelve¶
true si la operación fue exitosa. Devuelve false en caso de errores.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb12(table) { if (isvalid table) { if (Db#setField(table, "nome", "Teste SetField")) Dialogs.alert('Campo configurado con éxito'); else Dialogs.alert('Falla en ejecución del método'); } else { Dialogs.alert("Tabla inválida"); } }Salida¶
Campo configurado con éxito
getField¶
Db#getField(table, field);
Obtener el valor de un campo previamente cargado.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
- field - Indica el campo cuyo valor se va a recuperar.
Devuelve¶
El valor contenido en el campo especificado, en caso de éxito. Devuelve invalid si los parámetros pasados no son válidos.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb13(table) { if (isvalid table) { var nome = Db#getField(table, "nome"); if (isvalid nome) Dialogs.alert('Nombre recuperado: ' + nome); else Dialogs.alert('Falla en ejecución del método'); } else { Dialogs.alert("Tabla inválida"); } }Salida¶
Nombre recuperado: Teste do Set
seek¶
Db#seek(table, index);
Mover el registro actual a la posición determinada por el index.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
- index - Identifica el puesto solicitado. El rango va de 0 a (número de registros - 1). Los valores fuera de este rango se convertirán a uno de los límites.
Devuelve¶
true si la operación fue exitosa. Devoler false en caso de errones.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb14(table) { if (isvalid table) { if (Db#seek(table, 0)) Dialogs.alert('Estoy registrado 0'); else Dialogs.alert('Falla en ejecución del método'); } else { Dialogs.alert("Error al abrir la tabla"); } }Salida¶
Estoy registrado 0
erase¶
Db#erase(table);
Eliminar una table de la base de datos.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
Devuelve¶
true si la operación fue exitosa. Devoler false en caso de errones.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb15(table) { if (isvalid table) { if (Db#erase(table)) Dialogs.alert('Tabla eliminada con éxito'); else Dialogs.alert('Falla en ejecución del método'); } else { Dialogs.alert("Tabla inválida"); } }Salida¶
Tabla eliminada con éxito
recordDelete¶
Db#recordDelete(table);
Elimina el registro actual y mueve el puntero al siguiente registro. Si se elimina el último registro, el puntero se moverá al registro anterior, si lo hubiera.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
Devuelve¶
true si la operación fue exitosa. Devoler false en caso de errones.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb16(table) { if (isvalid table) { if (Db#recordDelete(table)) Dialogs.alert('El registro actual ha sido eliminado'); else Dialogs.alert('Falla en ejecución del método'); } else { Dialogs.alert("Tabla inválida"); } }Salida¶
El registro actual ha sido eliminado
size¶
Db#size(table);
Devuelve el tamaño físico, en bytes, que ocupa la tabla en el dispositivo de almacenamiento.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
Devuelve¶
El tamaño de la tabla o invalid si el parámetro de entrada no es apropiado.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb17(table) { if (isvalid table) { var size = Db#size(table); if (isvalid size) Dialogs.alert('El tamaño de la tabla es: ' + String.toString(size) + " bytes"); else Dialogs.alert('Falla en ejecución del método'); } else { Dialogs.alert("Tabla inválida"); } }Salida¶
El tamaño de la tabla es: 45 bytes
recordSize¶
Db#recordSize(table);
Devuelve el tamaño, en bytes, de los registros contenidos en la table.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
Devuelve¶
El tamaño del registro o invalid si el parámetro de entrada no es apropiado.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb18(table) { if (isvalid table) { Db#seek(table, 1); var size = Db#recordSize(table); if (isvalid size) Dialogs.alert('El tamaño del registro es: ' + String.toString(size) + " bytes"); else Dialogs.alert('Falla en ejecución del método'); } else { Dialogs.alert("Tabla inválida"); } }Salida¶
El tamaño del registro es: 44 bytes
recordGet¶
Db#recordGet(table);
Vea Db#get()
recordUpdate¶
Db#recordUpdate(table);
Vea Db#set()
setStruct¶
Db#setStruct(table, struct_);
Asigna la definición de la estructura que contendrá los valores del registro a la tabla informada en el parámetro.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
- struct_ - Estructura de datos que contendrá valores de registro. Debe ser un objeto de clase PhStruct.
Devuelve¶
true si la operación fue exitosa. Devuelve false en caso de errores.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; use url StreamFile "package://vm#stream/file.wmlsc"; function testeDb22() { var def = "{codigo:String; nome:String;}"; var file = StreamFile#createExt("DBTS", StreamFile#O_RDWR()); var table = Db#openFromStream(file, def); if (isvalid table) { /* A estrutura original so contem codigo e nome * sera adicionado o campo qtd:word; */ var definition = PhStruct.create("{codigo:String; nome:String; qtd:word}"); if (Db#setStruct(table, definition)) { Db#seek(table, 1); Db#setField(table, "qtd", 1); Dialogs.alert("Codigo: " + PhStruct.get(definition, "codigo")); Dialogs.alert("Nomebr: " + PhStruct.get(definition, "nome")); Dialogs.alert("Qtd: " + String.toString(PhStruct.get(definition, "qtd"))); Db#set(table); } else Dialogs.alert("Error al redefinir la estructura"); } else Dialogs.alert("Tabla inválida"); }Salida¶
Codigo: 1234 Nome: Produto teste Qd: 1
getStruct¶
Db#getStruct(table);
Recupera la definición de la estructura que contendrá los valores del registro.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
Devuelve¶
Un objeto de la clase PhStruct si la operación es exitosa. En caso de errores, Devuelve invalid.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; use url StreamFile "package://vm#stream/file.wmlsc"; function testeDb23() { var def = "{codigo:String; nome:String; qtd:word}"; var file = StreamFile#createExt("DBTS", StreamFile#O_RDONLY()); var table = Db#openFromStream(file, def); if (isvalid table) { var definition = Db#getStruct(table); if (isvalid definition) { Db#seek(table, 1); Dialogs.alert("Codigo: " + PhStruct.get(definition, "codigo")); Dialogs.alert("Nome: " + PhStruct.get(definition, "nome")); Dialogs.alert("Qtd: " + String.toString(PhStruct.get(definition, "qtd"))); } else Dialogs.alert("Error al recuperar la definición de la estructura"); } else Dialogs.alert("Tabla inválida"); }Salida¶
Codigo: 1234 Nome: Produto teste Qd: 1
recordNumber¶
Db#recordNumber(table);
Devuelve el número de registros en la table.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
Devuelve¶
El número de registro donde se coloca el puntero de registro de la tabla.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb24(table) { if (isvalid table) { for(var x = 0; x < Db#count(table); x++) { Db#seek(table, x); Dialogs.alert("Estoy registrado: " + String.toString(Db#recordNumber(table))); } } else Dialogs.alert("Tabla inválida"); }Salida¶
Estoy registrado: 0 Estoy registrado: 1
getOwner¶
Db#getOwner(table);
Devuelve el dueño de la tabla. Si la tabla es el propietario, Devuelve la tabla en sí.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
Devuelve¶
nm objeto Table**si la operación ocurre correctamente o **invalid en caso de error o parámetro incorrecto.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb25(table) { if (isvalid table) { Dialogs.alert("table: " + String.toString(table)); var owner = Db#getOwner(table); if (isvalid owner) { Dialogs.alert("table Owner: " + String.toString(owner)); } else Dialogs.alert("No se pudo Devuelve el propietario de la tabla"); } else Dialogs.alert("Tabla inválida"); }Salida¶
table: [PhDB, refCount: 3] table Owner: [PhDB, refCount: 4]
subTablesSize¶
Db#subTablesSize(table);
Devuelve el tamaño de una tabla y sus subtablas.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
Devuelve¶
Un número integer que se refiere al tamaño de la tabla y subtablas, pasado por parámetro o inválido en caso de que ocurra algún error.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb26(table) { if (isvalid table) { var size = Db#subTablesSize(table); if (isvalid size) { Dialogs.alert("Tamaño de las subtablas: " + String.toString(size)); } else Dialogs.alert("Error al Devuelve el tamaño de las subtablass"); } else Dialogs.alert("Tabla inválida"); }Salida¶
Tamaño de las subtablas: 0
getLFG¶
Db#getLFG(table, field);
Recuperar el valor de LFG. LFG (Large Field Group) Este grupo de campos está destinado a campos generalmente grandes, en el que su lectura completa no sería posible en algunos dispositivos por falta de memoria.
Al leer el registro, solo se actualiza la referencia, dejando que el programador proporcione una forma segura de recuperar/usar los datos contenidos en estos campos.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
- field - Objeto que representa el LFG.
Devuelve¶
true en caso de éxito y false en caso de falla.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb27(table) { if (isvalid table) { var fd = StreamFile#create("BG01", StreamFile#O_RDONLY()); if (Db#getLFG(table, fd)) { Dialogs.alert("Campo LFG recuperado con éxito"); } else Dialogs.alert("Error al recuperar el campo LFG"); } else Dialogs.alert("Tabla inválida"); }Salida¶
Campo LFG recuperado con éxito
insertSubTable¶
Db#insertSubTable(table, definition);
Esta función establece una estructura jerárquica agregando una subtabla a la tabla pasada por parámetro. A partir de este modelo de inserción, una tabla puede tener más de una subtabla, pero solo puede tener una tabla principal.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
- definition - Objeto de tipo PhStruct o PhDB o alguna definición de estructura que contenga la estructura a almacenar.
Devuelve¶
Un objeto de tipo**table** en el éxito (esta tabla representa la subtabla recién insertada) en caso de error se Devuelveá invalid.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb27(table) { if (isvalid table) { var subTable = Db#insertSubTable(table, "{codigoSubTable:String; descricaoSubTable:String}"); if (isvalid subTable) { Dialogs.alert("Subtabla insertada correctamente"); } else Dialogs.alert("Falló la inserción de la subtabla"); } else Dialogs.alert("Tabla inválida"); }Salida¶
Subtabla insertada correctamente
setLFG¶
Db#setLFG(table, field);
Asignar el valor LFG. LFG (Large Field Group) Este grupo de campos está destinado a campos generalmente grandes, donde su lectura completa no sería posible en algunos dispositivos debido a la falta de memoria. Al leer el registro, solo se actualiza la referencia, dejando que el programador proporcione una forma segura de recuperar/usar los datos contenidos en estos campos.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior de PhDb#open() o PhDb#getSubTable().
- field - Objeto que representa el LFG.
Devuelve¶
true en caso de éxito y false en caso de falla.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb28(table) { if (isvalid table) { var fd = StreamFile#create("BG01", StreamFile#O_RDONLY()); if (Db#setLFG(table, fd)) { Dialogs.alert("Campo LFG configurado con éxito"); } else Dialogs.alert("Falla al configurar el campo LFG"); } else Dialogs.alert("Tabla inválida"); }Salida¶
Campo LFG configurado con éxito
copy¶
Db#copy(dest, src);
Copiar una tabla.
Parámetros¶
- dest - Objeto de tabla resultante de una llamada anterior a PhDB.open o PhDB.getSubTable;
- src - Objeto de tabla resultante de una llamada anterior a PhDB.open o PhDB.getSubTable;
Devuelve¶
true en caso de éxito y false en caso de falla.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb29(table) { if (isvalid table) { var def = "{codigo:String; nome:String; qtd:word}"; var file = StreamFile#create("DBT2", StreamFile#O_CREAT()); var dest = Db#openFromStream(file, def); if (Db#copy(dest, table)) { Dialogs.alert("Tabla copiada correctamente"); } else Dialogs.alert("Error al copiar la tabla"); } else Dialogs.alert("Tabla inválida"); }Salida¶
Tabla copiada correctamente
isDB¶
Db#isDB(table);
Comprueba si la instancia pertenece a la clase PH_DB.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior a PhDB.open o PhDB.getSubTable;
Devuelve¶
true si el objeto pertenece a la clase PH_DB y false de lo contrario.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb30(table) { if (isvalid table) { if (Db#isDB(table)) { Dialogs.alert("El objeto pertenece a la clase PH_DB"); } else Dialogs.alert("El objeto no pertenece a la clase PH_DB"); } else Dialogs.alert("Tabla inválida"); }Salida¶
El objeto pertenece a la clase PH_DB
structAsBuffer¶
Db#structAsBuffer(Struct);
Transforma una estructura en un buffer.
Parámetros¶
- Struct - referencia a una variable de tipo PhStruct
Devuelve¶
buffer - buffer que va a recibir el contenido del PhStruct
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb31(table) { if (isvalid table) { var structure = Db#getStruct(table); if (isvalid structure) { var buffer = Db#structAsBuffer(structure); if (isvalid buffer) { Dialogs.alert("Structure: " + PhBuffer.getAsString(buffer, 0, PhBuffer.getSize(buffer))); } else Dialogs.alert("Error al convertir la estructura"); } else Dialogs.alert("Error al recuperar la estructura"); } else Dialogs.alert("Tabla inválida"); }Salida¶
Structure: 1234 Produto teste
getName¶
Db#getName(table);
Devuelve el nombre del archivo en el disco asociado con la tabla.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior a PhDB.open o PhDB.getSubTable;
Devuelve¶
name - String con el nombre del archivo en disco.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb32(table) { if (isvalid table) { var nome = Db#getName(table); Dialogs.alert("Nambre: " + nome); } else Dialogs.alert("Tabla inválida"); }Salida¶
Nambre: DBTS
getItem¶
Db#getItem(table);
Devuelve una copia del registro actual apuntado por la base de datos. La copia se hace para que el objeto devuelto no sea alterado por futuras manipulaciones de la base de datos.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior a PhDB.open o PhDB.getSubTable;
Devuelve¶
struct - PhStruct con la copia de la estructura en la posición actual de la tabla
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb33(table) { if (isvalid table) { var structure = Db#getStruct(table); if (isvalid structure) { if (Db#get(table)) { var buffer = Db#structAsBuffer(structure); var bufStr = PhBuffer.getAsString(buffer, 0, PhBuffer.getSize(buffer)); var item = Db#getItem(table); buffer2 = Db#structAsBuffer(item); bufStr2 = PhBuffer.getAsString(buffer2, 0, PhBuffer.getSize(buffer2)); /* * Tenga en cuenta que son los mismos datos con diferentes referencias, es decir, es una copia * de la estructura original de la tabla. Por lo tanto, esta estructura no afectará los datos de la * estructura original */ Dialogs.alert("registro de tabla: " + bufStr + " referencia: " + String.toString(structure)); Dialogs.alert("registro de tabla: " + bufStr2 + " referencia: " + String.toString(item)); } else Dialogs.alert("Falla al recuperar datos para la estructura"); } else Dialogs.alert("Falla al recuperar la definición de la tabla"); } else Dialogs.alert("Tabla inválida"); }Salida¶
registro de tabla: 1234 Produto teste referencia: [PhStruct, refCount 3] registro de tabla: 1234 Produto teste referencia: [PhStruct, refCount 2]
find¶
Db#find(table, id);
Devuelve el primer registro de una base de datos con un id específica. La tabla debe contener un campo llamado "id" en su estructura.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior a PhDB.open o PhDB.getSubTable;
- id - integer con el valor de id que se encuentra.
Devuelve¶
copia del registro en la posición actual de id o invalid si no encuentra el registro
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb32(table) { if (isvalid table) { var id = 5; item = Db#find(table, id); if (isvalid item) Dialogs.alert("Item con id " + id + " existe en la tabla" ); else Dialogs.alert("Item no encontrado"); } else Dialogs.alert("Tabla inválida"); }Salida¶
Item con id 5 existe en la tabla
findNext¶
Db#findNext(table, id);
Devuelve el siguiente registro de una base de datos con un id específica. La tabla debe contener un campo llamado "id" en su estructura.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior a PhDB.open o PhDB.getSubTable;
- id - integer con el valor de id que se encuentra
Devuelve¶
copia del registro en la id actual o posición inválida si no se encuentra el registro
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb32(table) { if (isvalid table) { var id = 5; item = Db#find(table, id); if (isvalid item) { for (i = 1; isvalid (item = Db#findNext(table, id)); i++); Dialogs.alert("Existe(m) " + i + "Items con id " + id + " en la tabla" ); } else Dialogs.alert("Item no encontrado"); } else Dialogs.alert("Tabla inválida"); }Salida¶
Exite(m) 2 Items con id 5 en la tabla
getAll¶
Db#getAll(table);
Devuelve una lista de todos los registros en una base de datos.
Parámetros¶
- table - Objeto de tabla resultante de una llamada anterior a PhDB.open o PhDB.getSubTable;
Devuelve¶
Lista con copia de todos los registros de tabla
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb34(table) { if (isvalid table) { var all = Db#getAll(table); for (var x = 0; x < PhList.count(all); x++) { var buffer = Db#structAsBuffer(all[x]); var str = PhBuffer.getAsString(buffer, 0, PhBuffer.getSize(buffer)); Dialogs.alert(str); } } else Dialogs.alert("Tabla inválida"); }Salida¶
1234 Produto teste 1234 Produto teste 2
tableCopy¶
Db#tableCopy(dst, src);
Copia todos los registros de la tabla src a la tabla dst. La copia incluye subtablas.
Parámetros¶
- dst - Objeto de tabla resultante de una llamada anterior a PhDB.open o PhDB.getSubTable;
- src - Objeto de tabla resultante de una llamada anterior a PhDB.open o PhDB.getSubTable;
Devuelve¶
true en caso de éxito y false en caso de falla.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb35(table) { if (isvalid table) { var def = "{codigo:String; nome:String; qtd:word}"; var file = StreamFile#create("DBT2", StreamFile#O_CREAT()); var dest = Db#openFromStream(file, def); if (Db#tableCopy(dest, table)) { Dialogs.alert("Tabla copiada correctamente"); } else Dialogs.alert("Error al copiar la tabla"); } else Dialogs.alert("Tabla inválida"); }Salida¶
Tabla copiada correctamente
tableCopyLimit¶
Db#tableCopyLimit(dst, src, limit);
Copias limitadas de registros de la tabla src a la tabla dst. La copia incluye subtablas.
Parámetros¶
- dst - Objeto de tabla resultante de una llamada anterior a PhDB.open o PhDB.getSubTable;
- src - Objeto de tabla resultante de una llamada anterior a PhDB.open o PhDB.getSubTable;
- limit - n primer registro a copiar
Devuelve¶
true en caso de éxito y false en caso de falla.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb36(table) { if (isvalid table) { var def = "{codigo:String; nome:String; qtd:word}"; var file = StreamFile#create("DBT2", StreamFile#O_CREAT()); var dest = Db#openFromStream(file, def); /* Copiar apenas os 5 primeiro registros */ if (Db#tableCopyLimit(dest, table, 5)) { Dialogs.alert("Tabla copiada correctamente"); } else Dialogs.alert("Error al copiar la tabla"); } else Dialogs.alert("Tabla inválida"); }Salida¶
Tabla copiada correctamente
recordCopy¶
Db#recordCopy(dst, src);
Copia um registro de tabla src para a tabela dst. A cópia inclui subtables.
Parámetros¶
- dst - detino dos datos. Objeto de tabla resultante de una llamada anterior a PhDB.open o PhDB.getSubTable;
- src - origem dos datos. Objeto de tabla resultante de una llamada anterior a PhDB.open o PhDB.getSubTable;
Devuelve¶
true en caso de éxito y false en caso de falla.
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb37(table) { if (isvalid table) { var def = "{codigo:String; nome:String; qtd:word}"; var file = StreamFile#create("DBT2", StreamFile#O_CREAT()); var dest = Db#openFromStream(file, def); Db#seek(table, 1); if (Db#recordCopy(dest, table)) { Dialogs.alert("Registro copiado con éxito"); } else Dialogs.alert("Error al copiar registro"); } else Dialogs.alert("Tabla inválida"); }Salida¶
Registro copiado con éxito
filter¶
Db#filter(db, criteria_function, extraction_function);
Devuelve una lista con todos los registros de una base de datos que pasó el criterio de función criteria_function.
El retorno de función función_extracción sirve para llenar la lista devuelta con datos del registro en lugar del registro en sí.
Parámetros¶
- db - Objeto de tabla resultante de una llamada anterior a PhDB.open o PhDB.getSubTable;
- criteria_function - Función que controla los criterios utilizados para filtrar registros.
- extraction_function - Función que llena la lista devuelta
Devuelve¶
Lista con copia de los registros que cumplen con los criterios o invalid
Ejemplo¶
use url Db "package://libs#db/db.wmlsc"; extern function criteria(db) { var codigo = Db#getField(db, "codigo"); return String.compare(codigo, "1235") == 0; } extern function extractRec(db) { var element = PhStruct.create("{codigo:String; nome:String; qtd:word}"); PhStruct.set(element, "codigo", Db#getField(db, "codigo")); PhStruct.set(element, "nome", Db#getField(db, "nome")); PhStruct.set(element, "qtd", Db#getField(db, "qtd")); return element; } function testeDb38(table) { if (isvalid table) { var all = Db#filter(table, "package://scripttest/doc.wmlsc#criteria" , "package://scripttest/doc.wmlsc#extractRec"); if (isvalid all && PhList.count(all) > 0) { for(var i = 0; i < PhList.count(all); i++) { var buffer = Db#structAsBuffer(all[i]); if (isvalid buffer) { var str = PhBuffer.getAsString(buffer, 0, PhBuffer.getSize(buffer)); Dialogs.alert("elemento: " + str); } else Dialogs.alert("Falla al convertir struct"); } } else Dialogs.alert("Error al realizar el filtro"); } else Dialogs.alert("Tabla inválida"); }Salida¶
elemento: 1235 Product teste
Cstd¶
| package://libs#db/cstd.wmlsc |
|---|
Proporciona funciones para la comunicación utilizando el Communication Standard (Encapsulación de tabla DB)
Sumario¶
Función Descripción create Crea una estructura CSTD para comunicaciones. getField Obtiene el valor de un campo de la estructura CSTD. setField Establece el valor de un campo en la estructura definida. attachDB Adjuntar una tabla a la estructura CSTD pack Guardar CSTD en una stream unpack Cargar datos en una estructura cstd desde una Stream size Calcula el tamaño de los datos almacenados en CSTD
Constantes¶
Constante Valor Descripción Cstd#HDR_COMM 0 Identifica el encabezado de comunicación. Cstd#HDR_APP 1 Identifica el encabezado de la aplicación. Cstd#MAIN_DB 2 Identifica la tabela principal.
create¶
Cstd#create(def_header, def_main )
Crea una estructura CSTD para comunicaciones
Parámetros¶
- def_header - definición del header de la aplicación
- def_main - definición del main
Devuelve¶
Un objeto CSTD o invalid si los parámetros de entrada no son válidos.
Ejemplo¶
use url Cstd "package://libs#db/cstd.wmlsc"; function test () { var strc = "{field1:word;field2:byte;field3:version;field4:String}"; var hdrApp = PhStruct.create("{id:word}"), var mainDB = PhStruct.create("{id:word}"); var result = isvalid Cstd.create("", "") && isvalid Cstd.create("", mainDB) && isvalid Cstd.create(hdrApp, mainDB) && isvalid Cstd.create(strc, strc) && isvalid Cstd.create(hdrApp, strc) && isvalid Cstd.create("{id:word;id2:byte}", "{id:byte;field:version}"); if (result) { Dialogs.alert("testes de create del CSTD ejecutado con éxito"); } else Dialogs.alert("Error al crear objetos CSTD");Salida¶
testes de create del CSTD ejecutado con éxito ````
getField¶
Cstd#getField(cstd, type, field);
Obtiene el valor de un campo de la estructura CSTD.
Parámetros¶
- cstd - Objeto de tabla resultante de una llamada anterior a Cstd#create({}, {});
- type - #HDR_COMM, #HDR_APP, #MAIN_DB
- field - Indica el campo cuyo valor se va a recuperar.
Devuelve¶
El valor contenido en el campo especificado, en caso de éxito. Devuelve invalid si los parámetros pasados no son válidos.
Ejemplo¶
use url Cstd "package://libs#db/cstd.wmlsc"; function test (cstd) { var datetime = Cstd.getField(cstd, Cstd.HDR_APP, "timestamp"); if (isalid datetime) { Dialogs.alert("Campo recuperado con éxito"); } else Dialogs.alert("Falla se Devuelve el campo"); }Salida¶
Campo recuperado con éxito ````
setField¶
Cstd#setField(cstd, type, field, value);
Establece el valor de un campo en la estructura definida.
Parámetros¶
- cstd - Objeto de tabla resultante de una llamada anterior a Cstd#create({}, {});
- type - #HDR_COMM, #HDR_APP, #MAIN_DB
- field - field Indica el campo cuyo valor se debe configurar.
- value - Nuevo valor de campo.
Devuelve¶
true si la operación fue exitosa. Devuelve false en caso de errores.
Ejemplo¶
use url Cstd "package://libs#db/cstd.wmlsc"; function test (cstd) { var result = Cstd.setField(cstd, Cstd.HDR_COMM, "posType", 5); if (result) Dialogs.alert("Campo configurado con éxito"); else Dialogs.alert("Falla de escritura de campo"); }Salida¶
Campo configurado con éxito ````
attachDB¶
Cstd#attachDB(cstd, table);
Adjuntar una tabla a la estructura CSTD
Parámetros¶
- cstd - Objeto de tabla resultante de una llamada anterior a Cstd#create({}, {});
- table - Objeto de tabla resultante de una llamada anterior de PhDB#open o PhDB#getSubTable.
Devuelve¶
true si la operación fue exitosa. Devuelve false en caso de errores.
Ejemplo¶
use url Cstd "package://libs#db/cstd.wmlsc"; use url Db "package://libs#db/db.wmlsc"; function test () { var cstd = Cstd.create("{}", "{}"); var file = StreamFile#create("DBTS", StreamFile#O_RDONLY()); var tb = Db#openFromStream(file, "{codigo:String; nome:String}"); var result = PhCSTD.attachDB(cstd, tb); if (result) Dialogs.alert("Tabla adjunta con éxito"); else Dialogs.alert("Error al adjuntar la tabla"); }Salida¶
Tabla adjunta con éxito ````
pack¶
Cstd#pack(cstd, stream);
Guardar CSTD en una stream
Parámetros¶
- cstd - Objeto de tabla resultante de una llamada anterior a Cstd#create({}, {});
- stream - Stream para manipulación de archivos/buffer.
Devuelve¶
true si la operación fue exitosa. Devuelve false en caso de errores.
Ejemplo¶
use url Cstd "package://libs#db/cstd.wmlsc"; use url Db "package://libs#db/db.wmlsc"; function test () { var buffer = PhBuffer.create(0); var cstd = Cstd.create("{}", "{}"); var result = Cstd#pack(cstd, buffer); if (result) Dialogs.alert("CSTD guardado exitosamente"); else Dialogs.alert("Error al guardar"); }Salida¶
CSTD guardado exitosamente ````
unpack¶
Cstd#unpack(cstd, stream);
Cargar datos en una estructura CSTD desde una Stream
Parámetros¶
- cstd - Objeto de tabla resultante de una llamada anterior a Cstd#create({}, {});
- stream - Stream para manipulación de archivos/buffer.
Devuelve¶
true si la operación fue exitosa. Devuelve false en caso de errores.
Ejemplo¶
use url Cstd "package://libs#db/cstd.wmlsc"; use url Db "package://libs#db/db.wmlsc"; use url StreamFile "package://vm#stream/file.wmlsc"; use url Stream "package://vm#stream/stream.wmlsc"; function test () { var stream = StreamFile#createExt("TESTE", StreamFile#O_RDWR()); var cstd = Cstd#create("{}", "{}"); Stream#seek(stream, 0, Stream#SEEK_SET()); if (! Cstd#unPack(cstd, stream)) Dialogs.alert("Error de carga"); else Dialogs.alert("stream cargada correctamente"); }Salida¶
stream cargada correctamente ````
size¶
Cstd#size(cstd);
Calcula el tamaño de los datos almacenados en CSTD
Parámetros¶
- cstd - Objeto de tabla resultante de una llamada anterior a Cstd#create({}, {});
Devuelve¶
tamaño en bytes que se almacenan en la estructura
Ejemplo¶
use url Cstd "package://libs#db/cstd.wmlsc"; function test () { var cstd = Cstd#create("{}", "{}"); var size = cstd#size(cstd); Dialogs.alert("Tamaño de datos: " + String.toString(size)); }Salida¶
Tamaño de datos: 10 ````
Segurança¶
| package://libs#secSec |
|---|
Implementa funciones para el uso de la seguridad como cifrado y hash. Está dividido en 3 grupos de scripts.
- Channel
Script Descripción Channel Implementa algoritmos de cifrado sobre el stream de datos
- Crypt
Script Descripción AES Implementación para el uso de cifrado AES Crypt Implementar funciones para cifrado DES Implementación para el uso de cifrado DES RSA Implementación para el uso de cifrado RSA
- Hash
Script Descripción CRC Implementación para el uso de cifrado CRC DV Implementación para el uso de dígitos de control HASH Implementación para el uso de algoritmos hash MD5 Implementación para el uso de cifrado MD-5 (Message Digest 5) SHA Implementación para el uso de cifrado SHA (Secure Hash Algorithm)
Channel¶
| package://libs#sec#channel/channel.wmlsc |
|---|
Implementación para usar algoritmos de cifrado sobre stream de datos.
Sumario¶
Función Descripción create Crear una nueva stream de canal segura session Recuperar datos de la sesión anterior isAvailable ndica si se admite el cifrado sobre el stream de datos
create¶
Channel#create(stream, session);
Crear una nueva stream de canal segura.
Funciones de stream soportadas read/write
Parámetros¶
- stream - Controlador de stream a ser decorad
- session - datos de uma sessão valida (pode ser invalid, criará uma sessão nova)
Devuelve¶
invalid em caso de erro ou um handle para o stream seguro
session¶
Channel#session(stream);
Recuperar datos de la sesión anterior.
Parámetros¶
- stream - Controlador de stream a ser decorad
Devuelve¶
PhBuffer com os datos da sessão ou invalid em caso de erro.
isAvailable¶
Channel#isAvailable();
Indica si se admite el cifrado sobre el stream de datos
Parámetros¶
No hay
Devuelve¶
invalid o false en caso de error o true en caso de éxito.
Ejemplo¶
function testeChannel() { var result; var dev = DeviceEth#create(""); if (!SecStream#isAvailable()) { Dialogs.alert ("SIN soporte de canal seguro?!"); result = false; } if (Device#connect(dev)) { var socket = Comm#socket("127.0.0.1", "1234", Comm#COMM_PRTCL_TCP(), 30000, false, invalid); if (isvalid socket) { Dialogs.alert("Canal seguro"); var sec = SecStream#create(StreamBuffer#create(StreamLen#create(socket, StreamData#SHORT_BIGENDIANN())), ""); var session = SecStream#session(sec); if (isvalid session) Dialogs.alert("Sesión OK"); } } }Salida¶
Sesión OK
Crypt¶
Sumario¶
AES¶
| package://libs#sec#crypt/aes.wmlsc |
|---|
Implementación para el uso de cifrado AES. Advanced Encryption Standard (Patrón de cifrado avanzado)
vea: https://pt.wikipedia.org/wiki/Advanced_Encryption_Standard
Sumario¶
Función Descripción create Crea un controlador de cifrado AES
create¶
AES#create(mode, key)
Crea un controlador de cifrado AES.
Parámetros¶
- mode - Crypt#ECB o Crypt#CBC
- key - PhBuffer coN 16, 24 o 32 bytes (invalid generar aleatoriamente)
Devuelve¶
controlador para funciones en crypt.wmls
Ejemplo¶
function testeAES() { var key = PhBuffer.create("0x11223344556677880011335577991133"); var iv = PhBuffer.create("0x11223344556677880011335577991133"); var handler = AES#create(Crypt#CBC(iv), key); if (isvalid handler) Dialogs.alert("AES creado con éxito"); else Dialogs.alert("Falla al crear el AES"); }Salida¶
AES creado con éxito
Crypt¶
| package://libs#sec#crypt/crypt.wmlsc |
|---|
Implementación de cifrado utilizando los algoritmos vistos anteriormente (AES, DES e RSA).
Sumario¶
Función Descripción encrypt cifra los datos recibidos por parámetro decrypt recupera datos previamente encriptados con la cripta a función crypt. reset Devuelve el objeto de la cripta a su estado inicial description Recupera el nombre del controlador isCrypt Validar si el controlador pasado es compatible con las funciones lib crypt
encrypt¶
Crypt#encrypt(crypt, data, output, len);
cifra los datos recibidos por parámetro
Parámetros¶
- crypt - El controlador de cifrado puede ser DES o RSA.
- data - (PhBuffer, String o Stream) Datos a cifrar
- output - (PhBuffer o Stream) Destino de los datos tratados
- len - (Integer) valor que debe consumirse desde la fecha
Devuelve¶
result invalid en caso de problema con los parámetros o boolean true indicando éxito. False: error en la API de cifrado
decrypt¶
Crypt#decrypt(crypt, data, output, len);
recupera datos previamente encriptados con la cripta a función crypt.
Parámetros¶
- crypt - El controlador de cifrado puede ser DES o RSA.
- data - (PhBuffer, String o Stream) Datos a cifrar
- output - (PhBuffer o Stream) Destino de los datos tratados
- len - (Integer) valor que debe consumirse desde la fecha
Devuelve¶
result invalid en caso de problema con los parámetros o boolean true indicando éxito. False: error en la API de cifrado
reset¶
Crypt#reset(crypt);
Devuelve el objeto de la cripta a su estado inicial.
Se usa comúnmente en algoritmos como DES#CBC que es acumulativo
Parámetros¶
- crypt - El controlador de cifrado puede ser DES o RSA.
Devuelve¶
No hay
description¶
Crypt#description(crypt);
Recupera el nombre del controlador
Parámetros¶
- crypt - El controlador de cifrado puede ser DES o RSA.
Devuelve¶
String con el nombre del algoritmo que se está utilizando
isCrypt¶
Crypt#isCrypt(crypt);
Validar si el controlador pasado es compatible con las funciones lib crypt
Parámetros¶
- crypt - El controlador de cifrado puede ser DES o RSA.
Devuelve¶
boolean true en caso de éxito
Ejemplo¶
function testeCrypt() { var key = PhBuffer.create("0x11223344556677880011335577991133"); var iv = PhBuffer.create("0x1122334455667788"); var handler = DES#create(DES#DES3(), Crypt#CBC(iv), key); var input = "TEST"; var outbuffer = PhBuffer.create(0); var out = PhBuffer.create("0xcfb6f60c16dc2dc9"); var outlen = PhBuffer.getSize(out); if (! isvalid handler ) { Dialogs.alert ("Controlador invalido"); return; } else { /* Cifrado */ Crypt#reset(handler); if (!Crypt#encrypt(handler, input, outbuffer, String.length(input))) { Dialogs.alert("Error de cifrado"); return; } /* Descifrado */ Crypt#reset(handler); if (!Crypt#decrypt(handler, out, outbuffer, outlen)) { Dialogs.alert("Falló el descifrado"); return; } } Dialogs.alert("Testes realizadas con éxito"); }Salida¶
Testes realizadas con éxito
DES¶
| package://libs#sec#crypt/des.wmlsc |
|---|
Implementación para el uso de cifrado DES. Data Encryption Standard (Patrón del cifrado de datos)
Tipos¶
Constantes Valor DES#DES1 0x01 DES#DES3 0x02
Sumario¶
Función Descripción create Crea un controlador de cifrado DES
create¶
DES#create(type, mode, key)
Crea un controlador de cifrado DES.
Parámetros¶
- type - #DES1 o #DES3
- mode - Crypt#ECB o Crypt#CBC
- key - PhBuffer con 8 a 24 bytes (invalid generar aleatoriamente)
Devuelve¶
controlador para funciones en crypt.wmls
Ejemplo¶
function des() { var ID = "des3_cbc_"; var key = PhBuffer.create("0x11223344556677880011335577991133"); var iv = PhBuffer.create("0x1122334455667788"); var handler = DES#create(DES#DES3(), Crypt#CBC(iv), key); if (isvalid handler) Dialogs.alert("DES creado con éxito"); else Dialogs.alert("Falla al crear el DES"); }Salida¶
DES creado con éxito
RSA¶
| package://libs#sec#crypt/rsa.wmlsc |
|---|
Implementación para el uso de cifrado RSA.
Tipos¶
Constantes Valor RSA#RSA_PKCS1_PADDING 0x02 RSA#RSA_PKCS1_OAEP_PADDING 0x03 RSA#RSA_NO_PADDING 0x00
Sumario¶
Función Descripción create Crea un controlador de cifrado RSA builtin Crea un controlador usando una clave publica
create¶
RSA#create(module, exp, padding);
Crea un controlador de cifrado RSA.
Parámetros¶
- module - PhBuffer o BigInt
- exp - PhBuffer o BigInt
- padding - #RSA_PKCS1_PADDING
Devuelve¶
controlador para funciones en crypt.wmls
builtin¶
Crea un controlador usando una clave publica.
RSA#builtin(alias, padding);
Parámetros¶
- alias - Nombre clave
- padding - #RSA_PKCS1_PADDING
Devuelve¶
controlador para funciones en crypt.wmls
Ejemplo¶
function testeRSA() { var rsa = RSA#create(PhBuffer.create("0xa5261939975948bb7a58dffe5ff54e65f0498f9175f5a09288810b8975871e99"+ "af3b5dd94057b0fc07535f5f97444504fa35169d461d0d30cf0192e307727c06"+ "5168c788771c561a9400fb49175e9e6aa4e23fe11af69e9412dd23b0cb6684c4"+ "c2429bce139e848ab26d0829073351f4acd36074eafd036a5eb83359d2a698d3"), PhBuffer.create("0x010001"), RSA#RSA_NO_PADDING()); if (isvalid rsa) Dialogs.alert("Éxito al crear el RSA"); else Dialogs.alert("Falla al crear el RSA"); var rsa2 = RSA#builtin("test", RSA#RSA_NO_PADDING()); if (isvalid rsa2) Dialogs.alert("Éxito al crear el RSA builtin"); else Dialogs.alert("Falla al crear el RSA builtin"); }Salida¶
Éxito al crear el RSA Éxito al crear el RSA builtin
Hash¶
Implemente algoritmos de hash criptográfico.
Vea: https://pt.wikipedia.org/wiki/MD5 https://pt.wikipedia.org/wiki/SHA-1 https://pt.wikipedia.org/wiki/CRC
Sumario¶
Script Descripción CRC Implementación para el uso de cifrado CRC DV Implementación para el uso de dígitos de control HASH Implementación para el uso de algoritmos hash MD5 Implementación para el uso de cifrado MD-5 (Message Digest 5) SHA Implementación para el uso de cifrado SHA (Secure Hash Algorithm)
CRC¶
| package://libs#sec#hash/crc.wmlsc |
|---|
Cree un controlador CRC32 para usarlo con las funciones de script hash.wmlsc
create¶
CRC#create(value);
Parámetros¶
- value - valor inicial
Devuelve¶
Controlador creado o invalid en caso de falla
DV¶
| package://libs#sec#hash/dv.wmlsc |
|---|
Proporciona funciones para calcular dígitos de control
Módulos¶
Constantes Valor DV#MODULO_10 0 DV#MODULO_11 1 DV#MODULO_11_CPF 6 DV#MODULO_11_CNPJ 7 DV#MODULO_11_0 9 DV#MODULO_NONE 255
create¶
DV#create(codigo, modulo);
Crea un controlador DV basado en el módulo ingresado
Parámetros¶
- codigo - código que desea calcular o comparar el dígito de control. Para el cálculo, informe el código sin el dígito. Para verificar, informe el código con el dígito.
- modulo - indica el algoritmo que se aplicará en el cálculo.
Devuelve¶
Controlador de suma de comprobación creado o invalid en caso de error.
calculate¶
DV#calculate(controlador);
Calcula el dígito de control
Parámetros¶
- controlador - controlador creado con create, que ya tiene el código para calcular el dígito
Devuelve¶
Dígito de control calculado.
check¶
DV#check(controlador);
Realiza el cálculo del dígito de control y lo compara con el código ingresado.
Parámetros¶
- controlador - controlador creado con create, que ya tiene el código a comparar con el dígito
Devuelve¶
true si el dígito ingresado con el código coincide con el calculado.
false si el dígito ingresado con el código no coincide con el calculado.
Ejemplo¶
function testDV() { /* Para o calculo, informar sem os digitos */ var cpf1 = "012345678"; /* Para a checagem, incluir os digitos */ var cpf2 = "01234567809"; var ctrl1 = DV#create(cpf1, DV#MODULO_11_CPF()); var digito = DV#calculate(ctrl1, DV#MODULO_11_CPF()); Dialogs.alert("Digito del CUIL informado: " + digito); var ctrl2 = DV#create(cpf2, DV#MODULO_11_CPF()); if (DV#check(ctrl2)) Dialogs.alert("El CUIL está correcto."); else Dialogs.alert("CUIL invalido"); }Salida¶
Digito del CUIL informado: 09 El CUIL está correcto.
Hash¶
| package://libs#sec#hash/hash.wmlsc |
|---|
Proporciona funciones para cálculos hash utilizando los controladores que se ven arriba vea:
- CRC
- MD5
- Sha
update¶
Hash#update(safe, data, len);
Actualizar el controlador con nuevos datos
Parámetros¶
- safe - controlador que debe crearse con hash API
- data - stream, String o PhBuffer con los datos a computar
- len - cantidad de bytes que se deben procesar
Devuelve¶
boolean true en el éxito, invalid se puede Devuelve si no es posible convertir ningún parámetro
digest¶
Hash#digest(safe);
Calcula el hash según el controlador informado.
Parámetros¶
- safe - controlador que debe crearse con hash API
Devuelve¶
- 0 - invalid si safe no es válido
- 1 - PhBuffer con el hash
description¶
Hash#description(safe);
Recupera el nombre del controlador.
Parámetros¶
- safe - controlador que debe crearse con hash API
Devuelve¶
String con el nombre del algoritmo que se está utilizando
isHash¶
Hash#isHash(safe);
Recupera el nombre del controlador.
Parámetros¶
- safe - controlador que debe crearse con hash API
MD5¶
| package://libs#sec#hash/md5.wmlsc |
|---|
Cree un controlador MD5 para usarlo con las funciones de script hash.wmlsc
create¶
MD5#create();
Parámetros¶
No hay
Devuelve¶
Controlador creado o invalid en caso de falla
SHA¶
| package://libs#sec#hash/sha.wmlsc |
|---|
Cree un controlador Sha para usar con las funciones de script hash.wmlsc
create¶
SHA#create();
Parámetros¶
No hay
Devuelve¶
Controlador creado o inválido en caso de falla
Excepciones¶
Al desarrollar en PhVM, es posible que su aplicación arroje excepciones que son respuestas de la máquina virtual con respecto al desarrollo. A continuación se muestran los tipos de excepciones que PhVM puede generar:
Tipo Código Descripción eWIR_StackDirty -2 Ocurre cuando en una concurrencia(threads) el script que llamó al thread se libera antes del final del thread. eWIR_InternalError -1 Ocurre cuando se trata de un error genérico no asignado por la API. eWIR_OK 0 Uso interno de PhVM. eWIR_VerificationFailed 1 Ocurre cuando las llamadas remotas pasan URL o funciones que no existen. eWIR_FatalLibraryFunctionError 2 Uso interno de PhVM. eWIR_InvalidFunctionArguments 3 Se produce cuando la cantidad de parámetros no coincide con la cantidad de argumentos. eWIR_ExternalFunctionNotFound 4 Ocurre cuando el método no existe o es llamado externamente por otro script y el método no tiene el modificador "extern" eWIR_UnableToLoadCompilationUnit 5 Ocurre cuando PhVM no ha encontrado el script compilado. Suele haber un error en la importación de la URL. eWIR_AccessViolation 6 Ocurre cuando alguna parte del software intenta acceder a una dirección de memoria que no es válida o que ya está en uso. eWIR_StackUnderflow 7 Ocurre cuando PhVM intenta eliminar el objeto de la pila que ya no existe. eWIR_ProgrammedAbort 8 Ocurre cuando el usuario usa el método Lang.abort(). eWIR_StackOverflow 9 Ose ejecuta cuando el número de llamadas a funciones (normalmente anidadas) supera el número máximo de pila 1024. eWIR_OutOfMemory 10 Normalmente, este error se produce cuando la aplicación consume más memoria que el límite máximo permitido por el sistema operativo para el proceso. eWIR_UserInitiated 11 Este error aparece cuando el usuario usa el método Lang,exit(). eWIR_SystemInitiated 12 El error de procesamiento interno de la VM no pudo iniciar algún dispositivo o asignar memoria mediante el Ejemplo
Referencias¶
- WAP-194, Wireless Application Protocol WMLScript Standard Libraries Specification, Version 1.3. (2000). Disponible en: http://www.wapforum.org/tech/documents/WAP-194-WMLScriptLibs-20000324-a.pdf
