Saltar a contenido

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
  • showboolean. 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:

alt text

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

turnOnboolean - 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
  • msgString 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
  • msgString 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
  • msgString 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
  • msgString 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
  • streamStream 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
  • listHandle 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
  • listHandle 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
  • listHandle 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
  • listHandle 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
  • listHandle 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
  • listHandle 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], con idx siendo índice del elemento en la lista.

Parámetros
  • listHandle 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
  • listHandle 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
  • listHandle 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
  • listHandle 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
  • definitionString 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
  • definitionString que contiene los tipos y atributos que utilizará PhStruct.
  • nameString 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
  • nameString 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
  • nameString 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
  • sourceString 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

Device#connect(dev)

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.

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

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)

Vea: https://en.wikipedia.org/wiki/Type-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)

Vea: https://pt.wikipedia.org/wiki/C%C3%B3digo_QR

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.

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)

vea: https://pt.wikipedia.org/wiki/Data_Encryption_Standard

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.

vea: https://pt.wikipedia.org/wiki/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

  1. 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