Java Script Lite - API¶
Sumário das urls utilizadas na 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 contém um conjunto de funções que estão intimamente relacionados com o núcleo da linguagem. As funções deste módulo são especificadas no documento WAP-194. O Java Script Lite suporta a maioria das funções do módulo Lang especificado na WAP-194, exceto pelas seguintes funções:
Funções não suportadas¶
Função Descrição parseFloat Não suportado. isFloat Não suportado. float Não suportado.
Sumário¶
Função Descrição abs Retorna o valor absoluto de um número passado. min Retorna o menor valor de dois valores passados. max Retorna o maior valor de dois valores passados. parseInt Converte um valor passado para inteiro. isInt Verifica se o valor passado é inteiro. maxInt Retorna o inteiro máximo. minInt Retorna o menor inteiro. random Retorna um valor aleátorio maior que zero e menor que o valor passado. seed Inicializa uma sequência pseudo-aleátoria. characterSet Retorna o valor inteiro referente ao tipo de caracter utilizado.
abs¶
Lang.abs(value) Retorna o valor absoluto do número.
Parâmetros¶
- value – Valor númerico.
Retorno¶
Retorna o valor absoluto do número.
Exemplo¶
function useAbs() { var inteiro = -15; Dialogs.alert("Saida: " + Lang.abs(inteiro)); }Saida:
Saida: 15.
min¶
Lang.min(value1, value2) Esta função compara os dois valores recebidos.
Parâmetros¶
- value1 – Valor númerico.
- value2 – Valor númerico.
Retorno¶
Retorna o menor valor passado.
Exemplo¶
function useMin() { var value1 = 10; var value2 = 22; Dialogs.alert("Saida: " + Lang.min(value1, value2)); }Saida:
Saida: 10.
max¶
Lang.max(value1, value2) Esta função compara os dois valores recebidos.
Parâmetros¶
- value1 – Valor númerico.
- value2 – Valor númerico.
Retorno¶
Retorna o maior valor passado.
Exemplo¶
function useMax() { var value1 = 10; var value2 = 22; Dialogs.alert("Saida: " + Lang.max(value1, value2)); }Saida:
Saida: 22.
parseInt¶
Lang.parseInt(value) Esta função converte uma string para inteiro.
Parâmetros¶
- value – String que deseja converter para inteiro.
Retorno¶
Retorna um inteiro ou invalid.
Exemplo¶
function useParseInt() { var str = "10"; Dialogs.alert(str + 2); Dialogs.alert(Lang.parseInt(str) + 2); }Saida:
102. 12.
isInt¶
Lang.isInt(value) Esta função verifica se o valor passado é um inteiro.
Parâmetros¶
- value – Valor que deseja verificar se é um inteiro.
Retorno¶
Retorna true caso value seja um inteiro e false caso não seja.
Exemplo¶
function useIsInt() { var str = "dez"; var inteiro = 10; Dialogs.alert("É inteiro? " + Lang.isInt(str)); Dialogs.alert("É inteiro? " + Lang.isInt(inteiro)); }Saida:
É inteiro: false. É inteiro: true.
maxInt¶
Lang.maxInt() Esta função retorna o inteiro maximo.
Retorno¶
Retorna o inteiro maximo.
Exemplo¶
function useMaxInt() { var x = Lang.maxInt(); Dialogs.alert(x); }Saida:
2147483647.
minInt¶
Lang.minInt() Esta função retorna o menor valor inteiro.
Retorno¶
Retorna o menor valor inteiro.
Exemplo¶
function useMinInt() { var x = Lang.minInt(); Dialogs.alert(x); }Saida:
–2147483648.
random¶
Lang.random(value) Esta função retorna um valor randomico maior que 0 e menor que o valor passado.
Parâmetros¶
- value – Valor númerico.
Retorno¶
Retorna um inteiro ou invalid.
Exemplo¶
function useRandom() { var x = Lang.random(10); Dialogs.alert("Valor: " + x); }Saida:
Valor: 5.
seed¶
Lang.seed() Inicializa uma sequência pseudo-aleátoria.
Retorno¶
Retorna uma string vazia.
Exemplo¶
function useSeed() { Lang.seed(7); var x = Lang.random(10); Dialogs.alert("Saida: "x); Lang.seed(7); var y = Lang.random(10); Dialogs.alert("Saida: " + y); }Saida:
Saida: 6. Saida: 6.
characterSet¶
Lang.characterSet() Esta função retorna um inteiro referente ao tipo do character set.
Retorno¶
Retorna um inteiro.
Exemplo¶
function useCharacterSet() { Dialogs.alert(Lang.characterSet()); }Saida:
106.
String¶
Este módulo contém um conjunto de funções para manipulação de strings. A especificação das funções deste módulo pode ser encontrada no documento [WAP-194][1].
Além das funções definidas pela [WAP-194][1], o Java Script Lite dispõe de algumas funções adicionais descritas a seguir.
Sumário¶
Função Descrição getChar Converte o código ASCII recebido em um caractere. getValue Converte o caractere recebido no código ASCII correspondente. toLowerCase Retorna uma string convertida para minúsculo. toUpperCase Retorna uma string convertida para maiúsculo. toProperCase Retorna uma string onde cada nova palavra, separada por espaço, terá sua primeira letra capitalizada. normalize Retorna uma string com o mesmo valor textual da string recebida como parâmetro, porém, com sua representação binária em unicode. length Retorna a quantidade de caracteres que a string possui. isEmpty Retorna true caso a string esteja vazia e false caso contrário. charAt Retorna um caractere da string na posição indicada. subString Retorna uma substring com base nos parâmetros indicados. find Procura uma substring na string passada. replace Substitui uma substring por uma nova substring. elements Retorna a quantidade de elementos de uma string separados por um separador. elementAt Retorna o elemento na posição especificada. removeAt Remove o elemento no índice especificado. replaceAt Substitui o elemento no índice especificado por um novo elemento. insertAt Insere um novo elemento no índice especificado. squeeze Substitui multiplos espaços em branco por um. trim Remove o espaços em branco do começo e do fim da string. compare Compara duas strings com base em suas posições lexicográficas. toString Cria uma visualização em string do valor passado. format Formata o valor passado de acordo com o o format passado.
getChar¶
String.getChar(code) Converte o argumento recebido (numérico) em um caractere.
Parâmetros¶
- code – Valor inteiro entre 0 e 255.
Retorno¶
Retorna uma string contendo o caractere correspondente em caso de sucesso ou invalid em caso de erro.
Exemplo¶
function test() { var c = String.getChar(97); Dialogs.alert("Caractere: " + c); }Saida:
Caractere: a
getValue¶
String.getValue(caractere) Converte o caractere recebido no código ASCII correspondente.
Parâmetros¶
- caractere – Uma string contendo o caractere correspondente ao decimal que se deseja encontrar. Apenas o primeiro caractere da string será analisado.
Retorno¶
Retorna o código ASCII decimal do caractere passado. Em caso de erro, retorna invalid.
Exemplo¶
function test() {
var s = String.getValue("a");
Dialogs.alert("Codigo do caractere: " + s);
}
Saida:
Codigo do caractere: 97
toLowerCase¶
String.toLowerCase(str)
Esta função converte uma string para minúsculo.
Parâmetros¶
- str – String que se deseja converter para minúsculo.
Retorno¶
Retorna a string convertida para minúsculo. Em caso de erro, retorna invalid.
Exemplo¶
function test() {
var s = String.toLowerCase("CASE");
Dialogs.alert("String em lowercase: " + s);
}
Saida:
String em lowercase: case
toUpperCase¶
String.toUpperCase(str)
Esta função converte uma string para maiúsculo.
Parâmetros¶
- str – String que se deseja converter para maiúsculo
Retorno¶
Retorna a string convertida para maiúsculo. Em caso de erro, retorna invalid.
Exemplo¶
function test() { var s = String.toUpperCase("case"); Dialogs.alert("String em uppercase: " + s); }Saida:
String em uppercase: CASE
toProperCase¶
String.toProperCase(str)
Esta função converte a primeira letra de cada palavra de uma string (separada por espaço) para maiúsculo.
Parâmetros¶
- str – String que se deseja converter para o proper case.
Retorno¶
Retorna a string convertida. Em caso de erro, retorna invalid.
Exemplo¶
function test() { var s = String.toProperCase("programando em Java Script Lite"); Dialogs.alert("String em propercase: " + s); }Saida:
String em propercase: Programando Em Java Script Lite
normalize¶
String.normalize(str)
Esta função normaliza uma string, alterando a sua representação binária para Unicode.
Parâmetros¶
- str – A string que se deseja normalizar.
Retorno¶
A string normalizada em caso de sucesso ou invalid em caso de erro.
Exemplo¶
function test() { var s = String.normalize("você, é, não, número."); Dialogs.alert("String normalizada: " + s); }Saida:
String normalizada: voce, e, nao, numero.
length¶
String.length(str)
Esta função retorna a quantidade de caracteres que a string possui.
Parâmetros¶
- str – String que deseja saber a quantidade de caracteres.
Retorno¶
A quantidade de caracteres.
Exemplo¶
function useLength() { var nome = "Phoebus"; Dialogs.alert("Quantidade de caracteres: " + String.length(nome)); // 7 }Saida:
Quantidade de caracteres: 7.
isEmpty¶
String.isEmpty(str)
Esta função irá checar se a string está vazia ou não.
Parâmetros¶
- str – String que deseja verifiar se está vazia.
Retorno¶
Retorna true caso o length da string seja 0 e false caso contrário
Exemplo¶
function useIsEmpty() { var nome1 = ""; var nome2 = "Phoebus"; Dialogs.alert("Está vazio? " + String.isEmpty(nome1)); Dialogs.alert("Está vazio? " + String.isEmpty(nome2)); }Saida:
Está vazio? true. Está vazio? false.
charAt¶
String.charAt(str, index)
Esta função retornara o caractere no índice especificado.
Parâmetros¶
- str – String.
- índice – Posição da string que deseja pegar o caractere.
Retorno¶
Retorna o caractere na posição especificada.
Exemplo¶
function useCharAt() { var nome = "Phoebus"; Dialogs.alert("Caractere: " + String.charAt(nome, 2)); }Saida:
Caractere: o.
subString¶
String.subString(str, startindex, length)
Esta função retornará uma substring baseada nos parametros passados.
Parâmetros¶
- str – String.
- startIndex – Índice inicial da substring.
- length – Quantidade de caracteres que deseja retornar na substring.
Retorno¶
Retorna uma subtring.
Exemplo¶
function useSubString() { var nome = "Phoebus Tecnologia"; Dialogs.alert("Substring: " + String.subString(nome, 2, 4)); }Saida:
Substring: oebu
find¶
String.find(str, substring)
Vai procurar uma substring na string passada.
Parâmetros¶
- str – String.
- substring – Substring a ser procurada na string.
Retorno¶
Retorna o índice do primeiro caractere da substring caso encontre uma ou -1 caso não encontre uma substring.
Exemplo¶
function useFind() { var nome = "Phoebus Tecnologia"; Dialogs.alert("Índice: " + String.find(nome, "Tec")); }Saida:
Índice: 8
replace¶
String.replace(str, oldsubstring, newsubstring)
Esta função irá substituir uma substring por outra.
Parâmetros¶
- str – String.
- oldSubString – Substring a ser substituida.
- newSubString – Substring a ser adicionado no lugar da oldSubString.
Retorno¶
Retorna uma nova string com a substituição de substrings realizada.
Exemplo¶
function useReplace() { var nome = "Phoebus TI"; var newNome = String.replace(nome, "TI", "Tecnologia"); Dialogs.alert("Nova string: " + newNome); }Saida:
Nova string: Phoebus Tecnologia.
elements¶
String.elements(str, separator) Separa a string de acordo com o separador fornecido.
Parâmetros¶
- str – String.
- separator – Separador da string.
Retorno¶
Retorna a quantidade de elementos da string separados pelo separador.
Exemplo¶
function useElements() { var nome = "Phoebus Phoebus Phoebus"; Dialogs.alert("Elementos: " + String.elements(nome, " ")); }Saida:
Quantidade de elementos: 3.
elementAt¶
String.elementAt(str, index, separator) Esta função separa os elementos de acordo com o separador.
Parâmetros¶
- str – String.
- index – Indica qual elemento após a separação retornar.
- separator – Separador da string.
Retorno¶
Retorna o elemento na posição indicada
Exemplo¶
function useElementsAt() { var nome = "Phoebus Tecnologia"; Dialogs.alert("Elemento: " + String.elementAt(nome, 0, " ")); }Saida:
Elemento: Phoebus.
removeAt¶
String.removeAt(str, index, separator) Esta função separa os elementos de acordo com o separador e remove o elemento no indice especificado.
Parâmetros¶
- str – String.
- index – Indica qual elemento após a separação remover.
- separator – Separador da string.
Retorno¶
Retorna uma nova string sem o elemento que foi removido.
Exemplo¶
function useRemoveAt() { var nome = "Phoebus Tecnologia"; var newNome = String.removeAt(nome, 1, " "); Dialogs.alert("Nome antigo: " + nome); Dialogs.alert("Nome novo: " + newNome); }Saida:
Nome antigo: Phoebus Tecnologia. Nome novo: Phoebus.
replaceAt¶
String.replaceAt(str, element, index, separator) Esta função separa os elementos de acordo com o separador e remove o elemento no indice especificado.
Parâmetros¶
- str – String.
- element – Novo elemento.
- index – Indica qual elemento será substituido.
- separator – Separador da string.
Retorno¶
Retorna uma nova string com o elemento no indice especificado substituido pelo novo elemento.
Exemplo¶
function useReplaceAt() { var nome = "Phoebus Ti"; var newNome = String.replaceAt(nome, "Tecnologia", 1, " "); Dialogs.alert("Nome: " + nome); Dialogs.alert("Novo nome: " + newNome); }Saida:
Nome: Phoebus Ti. Nome novo: Phoebus Tecnologia.
insertAt¶
String.replaceAt(str, element, index, separator) Esta função separa os elementos de acordo com o separador e remove o elemento no indice especificado.
Parâmetros¶
- str – String.
- element – Novo elemento a ser inserido.
- index – Posição onde inserir o novo elemento.
- separator – Separador da string.
Retorno¶
Retorna uma nova string com o novo elemento inserido na posição especificada.
Exemplo¶
function useInsertAt() { var nome = "Phoebus Tecnologia"; var newNome = String.insertAt(nome, "Pagamentos", 1, " "); Dialogs.alert("Nome: " + newNome); }Saida:
Nome: Phoebus Pagamentos Tecnologia.
squeeze¶
String.squeeze(str) Esta função reduz multiplos espaços consecutivos a um.
Parâmetros¶
- str – String.
Retorno¶
Retorna uma string com seus multiplos espaços consecutivos sendo reduzidos a um.
Exemplo¶
function useSqueeze() { var nome = "Phoebus Phoebus Phoebus"; Dialogs.alert("String: " + String.squeeze(nome)); }Saida:
String: Phoebus Phoebus Phoebus.
trim¶
String.trim(str) Esta função remove os espaços em branco do começo e do fim da string.
Parâmetros¶
- str – String.
Retorno¶
Retorna uma string com os espaços do começo da string e do fim removidos.
Exemplo¶
function useTrim() { var nome = " Phoebus "; Dialogs.alert(String.trim(nome)); }Saida:
String: Phoebus.
compare¶
String.compare(str1, str2) Esta função irá comparar as strings com base em suas relações lexicográficas.
Parâmetros¶
- str1 – String.
- str2 – String.
Retorno¶
Retorna -1 se a str1 estiver em alguma posição anterior em relação a str2. 1 caso str1 esteja a frente de str2. 0 caso sejam identicas.
Exemplo¶
function useCompare() { var str1 = "A"; var str2 = "B"; Dialogs.alert("Retorno: " + String.compare(str1, str2)); Dialogs.alert("Retorno: " + String.compare(str2, str1)); Dialogs.alert("Retorno: " + String.compare("a", "a")); }Saida:
Retorno: -1 Retorno: 1 Retorno: 0
toString¶
String.toString(value) Esta função irá tentar criar uma representação em string do valor passado.
Parâmetros¶
- value – Qualquer valor.
Retorno¶
Retorna uma representação em string do valor passado. Caso não consiga, retornará invalid.
Exemplo¶
function useToString() { var inteiro = 10; var booleano = true; Dialogs.alert("String: " + String.toString(inteiro)); Dialogs.alert("String: " + String.toString(booleano)); }Saida:
String: 10. String: true.
format¶
String.format(format, value) Converte o valor passado para uma string baseada no format passado.
Parâmetros¶
- format – width - Quantidade minima de caracteres a serem exibidos e preenche com espaços em branco caso necessário. Precision - Especifica a quantidade de digitos a serem impressos e preenche com zeros caso seja necessário.
- value – Qualquer valor.
Retorno¶
Retorna uma representação em string do valor passado. Caso não consiga, retornará invalid.
Exemplo¶
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)); }Saida:
Saida: 00045. Saida: Do it now.
Dialogs¶
Este módulo contém um conjunto de funções típicas da interface com o usuário. A especificação das funções deste módulo pode ser encontrada no documento WAP-194.
Além das funções definidas pela WAP-194, o Java Script Lite dispõe de algumas funções adicionais descritas a seguir.
Sumário¶
Função Descrição getSelection Exibe um menu textual para que seja selecionado um item. alertExt Mesmo comportamento da função alert definida na WAP-194, porém com timeout parametrizável. error Exibe um erro no modo texto.
getSelection¶
Dialogs.getSelection(title, list, selected, timeout)
Exibe um menu textual para que seja selecionado um item.
Parâmetros¶
- title – String, título do menu.
- list – PhList com os itens (ver PhList).
- selected – Número [1..n] com o índice do item pré-selecionado.
- timeout – Tempo de espera em segundos.
Retorno¶
Esta função retorna um inteiro que representa o índice, começando por 1, da opção selecionada. Se houver cancelamento ou se o tempo de espera for atingido sem nenhuma seleção, um retorno com invalid será gerado.
Exemplo¶
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("Selecionada a opcao 1"); } else if (s == 2) { Dialogs.alert("Selecionada a opcao 2"); } else if (s == 3) { Dialogs.alert("Selecionada a opcao 3"); } else if (s == 0) { Dialogs.alert("Timeout"); } else { Dialogs.alert("Operacao cancelada"); } }Saida:
title --------------------- [1] item1 [2] item2 [3] item3 -- Selecionada a opcao 1
alertExt¶
Dialogs.alertExt(message, timeout)
Mesmo comportamento de Dialogs.alert apenas adicionado um tempo de espera.
Parâmetros¶
- message – String a ser exibida.
- timeout – Número com o tempo de espera em segundos. O valor 0 (zero) indicá tempo infinito.
Retorno¶
String or invalid.
Exemplo¶
function test() { Dialogs.alertExt("Hello World!", 30); }Saida:
Hello World!
error¶
Dialogs.error(erroCode, description, timeout)
Exibe um erro no modo texto.
Parâmetros¶
- erroCode – Numérico com o código do erro.
- description – String com a descrição do erro.
- timeout – Numérico com o tempo de espera em milisegundos.
Retorno¶
invalid em caso de erro ou a string vazia.
Exemplo¶
function test() { Dialogs.error(100, "FALHA AO CONECTAR!", 2000); }Saida:
CODIGO: 100 --------------------- FALHA AO CONECTAR!
Core¶
PhSystem¶
A classe interna PhSystem contém diversas funções úteis que recuperam uma variedade de dados, como data/hora, configurações de ambiente, número serial do terminal, e assim por diante.
Sumário¶
Função Descrição getTime Retorna o horario do SO (sistema operacional). getDate Retorna a data do SO (sistema operacional). getSerialNumber Retorna o número serial do terminal. delay Suspende a execução do script atual por um tempo especificado em milissegundos. setDate Modifica a data do SO. setTime Modifica o horario do SO. getPOSType Retorna um número de identificação único para cada modelo de terminal. beep Emite um beep com o intervalo determinado. statusBar Quando ativada, apresenta informações de status do terminal. Disponível apenas no modo texto. getTickCount Retorna quanto tempo (em milissegundos) passou desde que a aplicação foi iniciada. getenv (deprecated) reset Reinicia o terminal. call Faz uma chamada de uma função específico de um script. hasFunction Informa se uma função existe em um certo módulo. getInfo Obtém informações de dispositivos do terminal. shutdown Desliga o terminal. getArguments Retorna o número de parâmetros de uma função extern. getDayWeek Informa qual o dia da semana de uma data. loading (deprecated) specialSOFuncs (deprecated) setGlobal Cria um atributo de escopo global e o associa a uma chave para identificação. Este atributo pode ser recuperado, no futuro, utilizando a chave de identificação. getGlobal Recupera um atributo, de um escopo global, que foi previamente associado com uma chave de identificação. remGlobal Remove um atributo de um escopo global que foi previamente associado com uma chave de identificação. loadAppModules Esta função é utilizado para recuperar a lista de versões dos modulos carregados no terminal. sound Emite um som com a nota e duração passados como argumento.
getTime¶
PhSystem.getTime(mask)
Use getTime para obter o horário do SO (sistema operacional).
Parâmetros¶
- mask – Especifica o formato da hora.
- "HH" – Horas
- "MM" – Minutos
- "SS" – Segundos
Retorno¶
String contendo a hora no formato da máscara passada por parâmetro.
Exemplo¶
function test() { var time = PhSystem.getTime("HH:MM:SS"); Dialogs.alert("Hora atual: " + time); }Saida:
Hora atual: 17:29:40
getDate¶
PhSystem.getDate(mask)
Use getDate para obter a data do SO (sistema operacional).
Parâmetros¶
- mask – Especifica o formato da data.
- “DD” – Dia
- “MM” – Mês
- "YY" – Ano com dois dígitos
- "YYYY" – Ano com quatro dígitos
Retorno¶
String contendo a data no formato passado por parâmetro.
Exemplo¶
function test() { var date = PhSystem.getDate("DD/MM/YYYY"); Dialogs.alert("Data atual: " + date); }Saida:
Data atual: 05/04/2017
getSerialNumber¶
PhSystem.getSerialNumber()
Use getSerialNumber para obter o número serial do terminal.
Retorno¶
String contendo o número serial do terminal.
Exemplo¶
function test() { var sn = PhSystem.getSerialNumber(); Dialogs.alert("Numero serial: " + sn); }Saida:
Numero serial: 1689090088
delay¶
PhSystem.delay(ms)
Suspende a execução do script atual por uma quantidade de tempo especificada em milissegundos.
Parâmetros¶
- ms – Integer
Retorno¶
Exemplo¶
function test() { PhSystem.delay(1000); //Aguarda 1 segundo }
setDate¶
PhSystem.setDate(Year, Month, Day)
Use setDate para alterar a data do SO.
Parâmetros¶
- Year – Integer. Obrigatoriamente maiores que 2000.
- Month – Integer. Valores precisam estar entre 1 (Janeiro) e 12 (Dezembro)
- Day – Integer
Retorno¶
Um retorno invalid é gerado se qualquer dos parâmetros não puderem ser convertidos para inteiro. Em caso de sucesso, retorna true, indicando que a data foi alterada. Em caso de falha, retorna false.
Exemplo¶
function test() { if (PhSystem.setDate(2017, 3, 10)) { var newDate = PhSystem.getDate("DD/MM/YYYY"); Dialogs.alert("Data alterada para: " + newDate); } }Saida:
Data alterada para: 10/03/2017
setTime¶
PhSystem.setTime(Hour, Min, Sec)
Use setTime para alterar a hora do SO.
Parâmetros¶
- Hour – Integer
- Min – Integer
- Sec – Integer
Retorno¶
Um retorno invalid é gerado se qual quer dos parâmetros não puder ser convertido para um integero. Em caso de sucesso, esta função retorna true, indicando que a hora foi alterada. Em caso de falha, retorna false.
Exemplo¶
function test() { if (PhSystem.setTime(17, 15, 2)) { var newTime = PhSystem.getTime("HH:MM:SS"); Dialogs.alert("Data alterada para: " + newTime); } }Saida:
Data alterada para: 17:15:02
getPOSType¶
PhSystem.getPOSType()
PhStstem.getPOSType()
Retorna um número único para cada modelo de terminal. Esse número pode ser mapeado de acordo com as constantes descritas na tabela abaixo.
Os seguintes terminais são suportados atualmente:
Constantes Tipo do 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 Exemplo¶
function test() { if (PhSystem.getPOSType() == PhSystem.PS920) { Dialogs.alert("Sou um S920!"); } }Saida:
Sou um S920!
beep¶
PhSystem.beep(interval)
Emite um beep com o intervalo determinado.
Parâmetros¶
- interval – intervalo de tempo em milissegundos. Após o intervalo o beep de mensagem acabará.
Retorno¶
Retorna um string vazio. Se o argumento interval não puder ser convertido para Integer, será retornado invalid.
Exemplo¶
function beep_test() { PhSystem.beep(100); }
statusBar¶
PhSystem.statusBar(show)
Quando ativado, a barra de status apresenta informação relacionada ao status do terminal, como nivel de bateria e sinal GPRS. Disponivel apenas no modo texto.
Parâmetros¶
- show – boolean. Quando true, exibe a barra de status na tela.
Retorno¶
Nenhum.
Exemplo¶
PhSystem.statusBar(Show);
getTickCount¶
PhSystem.getTickCount()
Retorna quanto tempo (em milissegundos) passou desde que a aplicação foi iniciada.
Retorno¶
Um número que representa o tempo atual. Caso essa operação não seja suportada, o retorno sera invalid.
Exemplo¶
function test() { var tInit = PhSystem.getTickCount(); PhSystem.delay(1000); var tEnd = PhSystem.getTickCount(); Dialogs.alert("Tempo decorrido: " + (tInit - tEnd) + "ms"); }Saida:
Tempo decorrido: 1000ms
getenv (deprecated)¶
PhSystem.getenv(name)
reset¶
PhSystem.reset(nextApp, lastApp)
Reinicia o terminal.
Parâmetros¶
- nextApp – String. Nome da aplicação a ser iniciada após a reinicialização.
- lastApp – String. Nome da aplicação atual que está sendo executada.
Retorno¶
boolean. Retorna false caso não consiga reiniciar o terminal.
Exemplo¶
function test { PhSystem.reset("PhVM", "PhVM"); }
call¶
PhSystem.call(module, function, params)
Faz uma chamada da função solicitada por parâmetro. A função deve ser "extern" para que o call consiga chamá-la.
Obs.: Caso o número de parâmetros não seja compatível com a lista passada ou caso a função não seja encontrada, o interpretador sairá com erro.Parâmetros¶
- module – Nome do módulo onde se encontra a função.
- function – Nome da função a ser executada.
- params – Lista de parâmetros a serem passados para a função.
Retorno¶
Exemplo¶
function test { var module = "package://test#main.wmlsc"; PhSystem.call(module, "testCall", ["arg1", "arg2"]); }
hasFunction¶
PhSystem.hasFunction(module, function)
Use esta função para verificar se existe uma função em um certo módulo.
Parâmetros¶
- module – String. Valor do módulo a ser pesquisado.
- function – String. Valor relacionado à função que será procurada.
Retorno¶
Retorna true se existir e false caso não exista a função ou módulo.
Exemplo¶
function test { var module = "package://test#main.wmlsc"; var func = "main"; if(PhSystem.hasFunction(module, func)) { PhSystem.call(module, func, []); } }
getInfo¶
PhSystem.getInfo(info)
Recupera informações do terminal.
Parâmetros¶
- info – Informação a ser recuperada.
Retorno¶
Retorna a informação solicitada.
Atributos¶
Atributo Descrição OS_VERSION Versão do sistema operacional. MODEL_HARDWARE Modelo do hardware. FACTORY_DATE Data de fabricação. COUNTRY_CODE Código do país. TOUCH_SCREEN_SUPPORT Suporte a interface touch screen. FLASH_SIZE Tamanho da memória Flash em Kilobytes. RAM_SIZE Tamanho da memória Ram em Kilobytes. ETHERNET_SUPPORT Suporte a comunicação ethernet. MEMORY_CARD_SUPPORT Suporte a cartão de memória. GSM_GPRS_SUPPORT Suporte a comunicação GPRS. WIFI_SUPPORT Suporte a comunicação Wifi. DISPLAY_WIDTH Número de colunas do display textual. FLASH_FREE Memória Flash disponível em Kilobytes. RAM_FREE Memória Ram disponível em Kilobytes. HAS_BATTERY Possui bateria interna HAS_CHIP Indica a presença de SIM Card no terminal. NUM_PORT_SERIAL Quantidade de portas seriais. NUM_PORT_USB Quantidade de portas USB. NATIVE_MODULES Módulos nativos do terminal NATIVE_IDENTIFICATION Identificação nativas do terminal ENCODE_TYPE Conjunto de caracteres do terminal BATTERY_LEVEL Nível da bateria (Ver seção Níveis de Bateria). BATTERY_PERCENTAGE Nível da bateria em percentual. SDK_VERSION Versão do SDK do terminal BATTERY_CHARGING Inidica se a bateria está carregando ALL Lista com todas as informações Níveis de Bateria¶
Valor Descrição 0 Não possui bateria 1 Nível muito baixo 2 Nível baixo 3 Nível médio 4 Nível alto 5 Totalmente carregado Exemplo¶
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 do terminal: " + model + "\nVersao do SO: " + osVer + "\nPossui touch screen: " + hasTouch ); }Saida:
Modelo do terminal: S920 Versao do SO: Prolin2.4.77[D1] Possui touch screen: true
shutdown¶
PhSystem.shutdown()
Desliga o terminal.
Exemplo¶
function test() { PhSystem.shutdown(); }
getArguments¶
PhSystem.getArguments(module, function)
Retorna a quantidade de argumentos que a função do módulo precisa para ser chamada. Obs.: Caso o módulo ou a função não possa ser encontrado invalid será retornado
Parâmetros¶
- module – String com o módulo a ser pesquisado (mesmo padrão do pragma use URL
- function – String com o nome da função desejada (Obrigátoriamente deve ser extern).
Retorno¶
Inteiro com o número de argumentos necessários para a chamada da função.
Exemplo¶
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 o dia da semana de uma data passada como parâmetro..
Parâmetros¶
- strDate – String com a data que se deseja saber o dia da semana.
Retorno¶
Retorna o número relativo ao dia da semana. (1 = Domingo. 7 = Sábado).
Exemplo¶
function test() { var day = PhSystem.getDayWeek(PhSystem.getDate("DD/MM/YYYY")); Dialogs.alert("Dia da semana: " + day); }Saida:
Dia da semana: 5
loading (deprecated)¶
PhSystem.loading(loading)
specialSOFuncs (deprecated)¶
PhSystem.specialSOFuncs(enableSOMenu, enableReset)
setGlobal¶
PhSystem.setGlobal(key, value)
Armazena um valor em uma variável de escopo global e a associa a uma chave que poderá ser utilizada, posteriormente, para recuperar o valor armazenado.
Parâmetros¶
- key – Chave que será associada à variável de escopo global;
- value – Valor qeu será armazenado na variável de escopo global.
Retorno¶
Retorna TRUE em caso de sucesso ou FALSE em caso de erro.
Exemplo¶
function global_test1() { var key = "G_VALUE"; var value = 10; if (PhSystem.setGlobal(key, value)) { Dialogs.alert("Global adicionada com o valor: " + value); } }Saida:
Global adicionada com o valor: 10
getGlobal¶
PhSystem.getGlobal(key)
Esta função é utilizado para recuperar um valor que foi armazenado em uma variável de escopo global e que foi previamente associada a uma chave de identificação.
Parâmetros¶
- key – Chave de identificação utilizada para identificar a variável de escopo global que contém o valor a ser recuperado.
Retorno¶
Retorna o valor armazenado na variável associada à chave de identificação passada como parâmetro ou invalid em caso de erro.
Exemplo¶
function global_test1() { var key = "G_VALUE"; if (PhSystem.setGlobal(key, 50)) { var value = PhSystem.getGlobal(key); if (isvalid value) { Dialogs.alert("Global recuperada com o valor: " + value); } } }Saida:
Global recuperada com o valor: 50
remGlobal¶
PhSystem.remGlobal(key)
Esta função é utilizado para remover um valor de uma variável de escopo global wue tenha sido previamente associada à uma chave de identificação
Parâmetros¶
- key – Chave de identificação utilizada para identificar a variável de escopo global que contém o valor a ser recuperado.
Retorno¶
Retorna o valor armazenado na variável associada à chave de identificação passada como parâmetro ou invalid em caso de erro.
Exemplo¶
function global_test1() { var key = "G_VALUE"; if (PhSystem.setGlobal(key, 50)) { var value = PhSystem.remGlobal(key); if (isvalid value) { Dialogs.alert("Global com o valor " + value + " foi removida"); } } }Saida:
Global com o valor 50 foi removida
loadAppModules.¶
PhSystem.loadAppModules(list)
Esta função é utilizada para recuperar a lista de versões dos modulos carregados no terminal.
Parâmetros¶
- list (saida) – PhList onde serão inseridas as versões dos módulos (ver PhList).
Retorno¶
boolean o, true em caso de sucesso, false caso não seja possível preencher a lista ou invalid caso seja passado um argumento inválido.
Exemplo¶
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])); } }Saida:
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)
Emite um som com a nota e duração passados como argumento.
Parâmetros¶
- note – Inteiro
- duration – Inteiro com a duração (em ms) do som a ser emitido
Retorno¶
boolean o, true em caso de sucesso, false caso não seja possível preencher a lista ou invalid caso seja passado um argumento inválido.
Exemplo¶
function sound() { PhSystem.sound(2, 100); }
PhDisplay¶
PhDisplay é a implementação da Phoebus de interfaces e definições para manipulação de texto, imagens e fontes da tela (display) do terminal, usando o modo de tratamento gráfico.
Sumário¶
Função Descrição clear Limpa o display. putString Mostra uma mensagem no display. (Compatível com modelos de POS textuais) putImage (deprecated) putBMP Mostra uma imagem BMP no display. light Acende ou apaga a luz de background ou backlight da tela do terminal. (Compatível com modelos de POS textuais) clearLine Limpa uma determinada linha na tela do terminal. A linha será preenchida de acordo com o estilo especificado. (Compatível com modelos de POS textuais) maxColumns Retorna o número máximo de colunas suportadas pelo display. maxLines Retorna o número máximo de linhas suportadas pelo display. maxPxHeight Retorna o número máximo de pixels do display na vertical. maxPxWidth Retorna o número máximo de pixels do display na horizontal. setMode Ajusta para o modo de tratamento gráfico ou texto. getMode Retorna o modo de tratamento usado pelo terminal. putStringFmt (deprecated) getStrFmtWidth (deprecated) getStrFmtHeight (deprecated) hasGraphicsSupport Indica se o terminal tem suporte ao modo gráfico.
Estilos de exibição¶
Estilo Descrição NORMAL Texto normal. REVERSE Texto em reverso. UNDERLINE Texto sublinhado.
Modos de tratamento de operações¶
Modo Descrição NONE Modo padrão de tratamento de operações na tela. TEXT Modo padrão, tratar operações na tela como texto. GRAPHIC Modo padrão, tratar operações na tela como gráfico.
Tamanhos de fontes¶
Fonte Descrição Small Tamanho de fonte pequena. Medium Tamanho de fonte média. Large Tamanho de fonte grande.
clear¶
PhDisplay.clear()
Limpa o display.
Retorno¶
boolean
Exemplo:
function test() { PhDisplay.clear(); }
putString¶
PhDisplay.putString(line, column, style, message)
Mostra uma mensagem no display. (compatível com modelos de POS textuais)
Parâmetros¶
line - integer - Valor positivo com a linha onde a mensagem será exibida. A primeira linha inicia em 0 (zero).
column - integer - Valor positivo com a coluna onde a mensagem será exibida. O sentido é da esquerda para direita. A primeira columna inicia em 0 (zero).
style – Estilo usado para tratamento da exibição do texto. Valores possíveis: PhDisplay.Normal, PhDisplay.Reverse, PhDisplay.Underline.
message - string - Mensagem a ser exibida.
Retorno¶
boolean
Exemplo:
function test() { PhDisplay.putString(0, 0, PhDisplay.NORMAL, "Mensagem na tela"); }Saida:
Mensagem na tela
putImage (deprecated)¶
PhDisplay.putImage(x, y, file)
putBMP¶
PhDisplay.putBMP(x, y, bitmap)
Mostra uma imagem (BMP ou PhBMP) no display.
Parâmetros¶
x - interger - valor positivo com a posição inicial da imagem na horizontal.
y - integer - valor positivo com a posição inicial da imagem na vertical.
bitmap – Imagem Bitmap que será exibida.
Retorno¶
boolean
Exemplo:
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); } }Saida:
light¶
PhDisplay.light(turnOn)
Acende ou apaga a luz de background ou backlight da tela do terminal. (compatível com modelos de POS textuais)
Parâmetros¶
turnOn – boolean - true para acender ou false para apagar.
Retorno¶
booleano, true em caso de sucesso ou false em caso de parâmetro inválido.
Exemplo:
function test() { PhDisplay.light(true); }
clearLine¶
PhDisplay.clearLine(line, attribute)
Limpa uma determinada linha na tela do terminal no modo textual. A linha será preenchida de acordo com o estilo especificado. (compatível com modelos de POS textuais)
Parâmetros¶
line - integer - Número da linha a ser limpa. attribute – Estilo a ser aplicado. Valores possíveis: PhDisplay.Normal, PhDisplay.Reverse, PhDisplay.Underline.
Retorno¶
boolean
Exemplo:
function test() { PhDisplay.clearLine(0, PhDisplay.Normal); //Apaga primeira linha }
maxColumns¶
PhDisplay.maxColumns()
Retorna o número máximo de colunas suportadas pelo display no modo textual.
Retorno¶
Inteiro positivo com o número de colunas.
Exemplo:
var maxCols = PhDisplay.maxColumns(); Dialogs.alert(maxCols);
maxLines¶
PhDisplay.maxLines()
Retorna o número máximo de linhas suportadas pelo display no modo textual.
Retorno¶
Inteiro positivo com o número de linhas.
Exemplo:
var maxLins = PhDisplay.maxLines(); Dialogs.alert(maxLins);
maxPxHeight¶
PhDisplay.maxPxHeight()
Retorna o número máximo de pixels do display na vertical.
Retorno¶
Inteiro positivo com número máximo de pixels na vertical.
Exemplo:
var pxHeight = PhDisplay.maxPxHeight(); Dialogs.alert(pxHeight);
maxPxWidth¶
PhDisplay.maxPxWidth()
Retorna o número máximo de pixels do display na horizontal.
Retorno¶
Inteiro positivo com número máximo de pixels na horizontal.
Exemplo:
var pxWidth = PhDisplay.maxPxWidth(); Dialogs.alert(pxWidth);
setMode¶
PhDisplay.setMode(mode)
Ajusta para o modo de tratamento gráfico ou texto.
Parâmetros¶
mode – Inteiro positivo com o modo de tratamento. Valores possíveis: PhDisplay.NONE, PhDisplay.TEXT, PhDisplay.GRAPHIC.
Retorno¶
boolean, onde**true** em caso de sucesso ou false em caso de parâmetro inválido.
Exemplo:
function test() { if (PhDisplay.setMode(PhDisplay.TEXT)) { Dialogs.alert("Definido modo de exibicao textual"); } }Saida:
Definido modo de exibicao textual
getMode¶
PhDisplay.getMode()
Retorna o modo de tratamento do display usado pelo terminal.
Retorno¶
Inteiro positivo com o modo de tratamento do display. Valores possíveis: PhDisplay.NONE, PhDisplay.TEXT, PhDisplay.GRAPHIC.
Exemplo:
function test() { var mode = PhDisplay.getMode(); if (mode == PhDisplay.TEXT) { Dialogs.alert("Modo textual"); } else { Dialogs.alert("Modo grafico"); } }Saida:
Modo grafico
putStringFmt (deprecated)¶
PhDisplay.putStringFmt(...)
getStrFmtWidth (deprecated)¶
PhDisplay.getStrFmtWidth(fontName, size, text)
getStrFmtHeight (deprecated)¶
PhDisplay.getStrFmtHeight(fontName, size, text)
hasGraphicsSupport¶
PhDisplay.hasGraphicsSupport()
Indica se o terminal tem suporte ao modo gráfico.
Retorno¶
boolean, onde true caso tenha suporte ou false caso contrário.
Exemplo:
function test() { if (PhDisplay.hasGraphicsSupport()) { Dialogs.alert("Suporta modo grafico"); } else { Dialogs.alert("Nao suporta modo grafico"); } }Saida:
Suporta modo grafico
PhKeyBoard¶
PhKeyBoard é a implementação da Phoebus de interfaces e definições para manipulação das entradas no teclado do terminal.
Sumário¶
Função Descrição getKey Retorna uma entrada no teclado do terminal. clear Limpa o buffer do teclado do terminal, que pode conter dados não lidos relacionados a teclas pressionadas. enable Habilita ou desabilita o teclado do terminal. backLight Seta a intensidade da luz do teclado. KEY_ENTER Define o valor 13 para tecla Enter. KEY_ESC Define o valor 27 para tecla Esc. KEY_F1 Define o valor 14 para tecla F1. KEY_F2 Define o valor 15 para tecla F2. KEY_F3 Define o valor 16 para tecla F3. KEY_F4 Define o valor 17 para tecla F4. KEY_UP Define o valor 4 para tecla de seta para cima. KEY_DOWN Define o valor 3 para tecla de seta para baixo. KEY_LEFT Define o valor 1 para tecla de seta para esquerda. KEY_RIGHT Define o valor 2 para tecla de seta para direita. KEY_ALPHA Define o valor 7 para tecla Insert. KEY_CLEAR Define o valor 8 para tecla Back Space. KEY_NONE Definição de valor para nenhuma tecla. KEY_SHIFT Define o valor 6 para tecla Shift. KEY_PAPER Define o valor 28 para tecla feed paper. KEY_HOME Define o valor 11 para tecla Home. KEY_00 Define o valor 5 para tecla 0.
getKey¶
PhKeyBoard.getKey(timeout)
Retorna uma entrada no teclado do terminal.
Parâmetros¶
- timeout – Inteiro positivo com o tempo, em milisegundos, que a entrada de dados será aguardada. Ou boleano com true indicando bloqueio até que uma entrada seja feita.
Retorno¶
Inteiro positivo com a entrada válida do teclado ou invalid em caso de parâmetro inválido.
Exemplo¶
function test () { var result = false var key = invalid; key = PhKeyBoard.getKey(3000); //Espera 3 segundos if (isvalid key && key != PhKeyBoard.KEY_NONE) { //Esperar até que a mesma tecla seja pressionada novamente while (PhKeyBoard.getKey(false) == key) { result = true; } } return result; }
clear¶
PhKeyBoard.clear()
Limpa o buffer do teclado do terminal, que pode conter dados não lidos relacionados a teclas pressionadas.
Exemplo¶
function test() { PhKeyBoard.clear(); }
backLight¶
PhKeyBoard.backLight(value)
Seta a intensidade da luz do teclado.
Obs: Função disponível apenas nos terminais da linha PAX e Vx520
Parâmetros¶
- value – Valor em byte da intensidade de luz do teclado (0 ou 1)
Exemplo¶
function test() { PhKeyBoard.backLight(0); }
enable¶
PhKeyBoard.enable(enable)
Habilita ou desabilita o teclado do terminal.
Parâmetros¶
- enable – Boleano com true para habilitar e false para desabilitar o teclado.
Retorno¶
Boleano, true em caso de sucesso ou false em caso de parâmetro inválido.
Exemplo¶
function test() { PhKeyBoard.enable(true); }
PhLog¶
Gera log de acordo com o nível especificado durante compilação de scripts.
Sumário¶
Função Descrição error Gera log de erro. warning Gera log de warning. info Gera log de info. debug Gera log de debug. output Configura stream de saida
error¶
PhLog.error(msg)
Exibe na stream de log mensagem de erro.
Parâmetros¶
- msg – String ou Buffer com a mensagem a ser exibida no log.
Retorno¶
Se a função estiver habilitada retorna true em caso de sucesso ou false em caso de erro, senão retorna invalid.
Exemplo¶
function test() { var id = "12345"; var getId = Dialogs.prompt("ID ", ""); if (getId != id) { PhLog.error("ERRO: ID nao confere"); } }
warning¶
PhLog.warning(msg)
Exibe na stream de log mensagem de warning.
Parâmetros¶
- msg – String ou Buffer com a mensagem a ser exibida no log.
Retorno¶
Se a função estiver habilitada retorna true em caso de sucesso ou false em caso de erro, senão retorna invalid.
Exemplo¶
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("Indice nao existe na lista"); } }
info¶
PhLog.info(msg)
Exibe na stream de log mensagem de info.
Parâmetros¶
- msg – String ou Buffer com a mensagem a ser exibida no log.
Retorno¶
Se a função estiver habilitada retorna true em caso de sucesso ou false em caso de erro, senão retorna invalid.
Exemplo¶
function test() { PhLog.info("[ENTRADA] --> test()"); /* * ... code */ PhLog.info("[SAIDA] ---> test()"); }
debug¶
PhLog.debug(msg)
Exibe na stream de log mensagem de debug.
Parâmetros¶
- msg – String ou Buffer com a mensagem a ser exibida no log.
Retorno¶
Se a função estiver habilitada retorna true em caso de sucesso ou false em caso de erro, senão retorna invalid.
Exemplo¶
function test() { var x = Dialogs.prompt("ID", ""); PhLog.debug("x = " + x); }
output¶
PhLog.output(stream)
Configura uma stream de saída para o log, enquanto não utilizado, a aplicação logará na stream padrão previamente configurada.
Parâmetros¶
- stream – Stream de saida para o log ou invalid para liberar memoria da stream.
Retorno¶
true em caso de sucesso ou false em caso de erro.
Exemplo¶
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); //Configurando stream de saida else PhLog.info("Socket nao conectado"); } else { PhLog.error.alert("Device ERROR: " + String.toString(Device#getError(eth))); } PhLog.output(invalid); //Liberando stream }
Tipos de Dados¶
PhList¶
PhList é a implementação da Phoebus de interfaces e definições para manipulação de lista de objetos.
Sumário¶
Função Descrição add Insere um item ao final da lista especificada. addTo Insere um item em uma posição específica da lista especificada. Caso haja um item na posição indicada, este e os demais serão deslocados para direita. create Cria um handle para uma lista. clear Remove todos os elementos da lista. count Retorna o número de itens presentes em uma lista. contains Verifica se um elemento está presente na lista. empty Checa se a lista está vazia. get Retorna um item da lista na posição indicada. indexOf Verifica o índice de um item na lista. isList Verifica se o argumento recebido é uma lista. remove Remove o item na posição indicada. Os demais serão deslocados para esquerda. set Substitui um item da lista presente em uma posição específica.
add¶
PhList.add(list, element)
Insere um item em uma posição específica da lista especificada. Caso haja um item na posição indicada, este e os demais serão deslocados para direita.
Parâmetros¶
- list – Handle da lista onde o item será inserido.
- element – Item a ser inserido na lista.
Retorno¶
boolean o, true em caso de sucesso ou false se não é possível inserir o elemento. Caso não seja possível utilizar os parâmetros invalid será retornado.
Exemplo¶
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]); } } } }Saida:
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)
Insere um item em uma posição específica da lista.
Parâmetros¶
- list – Handle da lista onde o item será inserido.
- element – Item a ser inserido na lista.
- index – Índice na lista onde o item será inserido.
Retorno¶
boolean o, true em caso de sucesso ou false se não é possível inserir o elemento. Caso não seja possível utilizar os parâmetros invalid será retornado.
Exemplo¶
function test () { var list = PhList.create(); if (isvalid list) { PhList.add(list, "stringTest", 0); Dialogs.alert("Item: " + list[0]); } }Saida:
Item: stringTest
create¶
PhList.create()
Cria um handle para uma lista.
Obs: Uma lista também pode ser criada utilizando a notação
[], permitindo que seja incializada em sua declaração.Retorno¶
Um handle para uma lista ou invalid em caso de erro.
Exemplo¶
function test() { var list = PhList.create(); var list2 = []; var list3 = [1, 2, 3]; }
clear¶
PhList.clear(list)
Remove todos os elementos da lista.
Parâmetros¶
- list – Handle da lista a ser limpa.
Retorno¶
boolean o, true em caso de sucesso ou false se não é possível limpar a lista. Caso não seja possível utilizar os parâmetros invalid será retornado.
Exemplo¶
function test () { var list = PhList.create(); if (isvalid list) { PhList.add(list, 10); PhList.add(list, 15); PhList.clear(list); } }
count¶
PhList.count(list)
Retorna o número de itens presentes em uma lista.
Parâmetros¶
- list – Handle da lista.
Retorno¶
Inteiro positivo com o número de elementos da lista. Caso não seja possível utilizar os parâmetros, invalid será retornado.
Exemplo¶
function test () { var list = PhList.create(); if (isvalid list) { PhList.add(list, 10); PhList.add(list, 15); var listCount = PhList.count(list); //Deve retornar 2 } }
contains¶
PhList.contains(list, element)
Verifica se um elemento está presente na lista indicada.
Parâmetros¶
- list – Handle da lista.
- element – Elemento a ser encontrado.
Retorno¶
boolean o, true em caso da lista conter o elemento especificado ou false caso contrário.
Exemplo¶
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)
Checa se a lista especificada está vazia.
Parâmetros¶
- list – Handle da lista.
Retorno¶
boolean o, false em caso da lista conter elementos ou true caso esteja vazia. Caso não seja possível utilizar os parâmetros invalid será retornado.
Exemplo¶
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)
Retorna um item da lista na posição indicada.
Obs: O item de uma lista também pode ser recuperado utilizando a notação
list[idx], comidxsendo índice do item na lista.Parâmetros¶
- list – Handle na lista.
- index – Índice na lista onde o item deve estar presente.
Retorno¶
O item na posição indicada, ou lista vazia. Caso não seja possível utilizar os parâmetros, invalid será retornado.
Exemplo¶
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); //Retorna o 10 var item2 = list[1]; //Retorna o 15 } }
indexOf¶
PhList.indexOf(list, element)
Verifica o índice de um item, caso esteja presente, na lista.
Parâmetros¶
- list – Handle da lista.
- element – Elemento a ser encontrado.
Retorno¶
Inteiro positivo com o índice da primeira ocorrência do elemento encontrado, ou -1, caso a lista não contenha o elemento indicado.
Exemplo¶
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)
Verifica se o argumento recebido é um PhList.
Parâmetros¶
- obj – Objeto a ser verificado.
Retorno¶
boolean o, true em caso o argumento recebido seja um PhList ou false caso contrário.
Exemplo¶
function test() { var list = PhList.create(); if (PhList.isList(list)) { Dialogs.alert("Lista criada!"); } }
remove¶
PhList.remove(list, index)
Remove o item na posição indicada. Os demais serão deslocados para esquerda.
Parâmetros¶
- list – Handle da lista onde o item será removido.
- index – Índice na lista de onde o item será removido.
Retorno¶
Item removido. Caso não seja possível utilizar os parâmetros, invalid será retornado.
Exemplo¶
function test () { var list = PhList.create(); if (isvalid list) { PhList.add(list, 10); PhList.add(list, 15); PhList.remove(list, 0); //Remove 10 } }
set¶
PhList.set(list, index, element)
Substitui um item da lista presente em uma posição específica.
Obs: O item de uma lista também pode ser substituido utilizando a notação
list[idx] = value;.Parâmetros¶
- list – Handle da lista onde o item será substituído.
- index – Índice na lista do item que será substituído.
- element – Item que irá substituir o que está no índice indicado.
Retorno¶
boolean o, true em caso de sucesso ou false se não é possível substituir o elemento. Caso não seja possível utilizar os parâmetros invalid será retornado.
Exemplo¶
function test () { var list = PhList.create(); if (isvalid list) { PhList.add(list, 10); PhList.add(list, 15); PhList.set(list, 1, 20); //A lista possui 10 e 20 list[0] = 30; //A lista possui 30 e 20 } }
PhStruct¶
É uma estrutura contendo diversas variáveis, podendo ser de tipos diferentes, agrupadas de forma a facilitar sua utilização.
Sumário¶
Função Descrição create Cria uma nova PhStruct no formato: \"{ATTRIBUTE:TYPE;}\". get Recupera o valor de um atributo da PhStruct. set Atribui o valor de uma variável da PhStruct. getDefinition Recupera a String de definição usada para a criação de uma PhStruct. define Cria uma nova PhStruct baseado na String de definição passada e lhe atribui um nome. load Carrega uma PhStruct usando o nome de uma struct já criada. undefine Remove a String de definição da PhStruct. getAsPhType Retorna o valor de um atributo da PhStruct como PhType. copy Faz uma cópia da PhStruct para uma nova referência. isStruct Verifica se o argumento recebido é uma PhStruct.
create¶
PhStruct.create(definition)
Cria uma nova PhStruct por definição: \"{ATTRIBUTE:TYPE;}\". Ex.: PhStruct.create (\"{id:word;type:byte;data:list}\");".
Parâmetros¶
- definition – String contendo os tipos e atributos que serão usados pela PhStruct.
Retorno¶
Retorna uma referência para a nova instância da PhStruct ou invalid, em caso de erro.
Exemplo¶
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 o valor de um atributo da PhStruct.
Parâmetros¶
- struct – Referência de uma variável do tipo PhStruct.
- attribute – Nome do atributo.
Retorno¶
Retorna o valor específico da PhStruct em caso de sucesso ou invalid, em caso de falha.
Exemplo¶
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)
Atribui o valor de uma variável da PhStruct.
Parâmetros¶
- struct – Referência de uma variável do tipo PhStruct.
- attribute – Nome do atributo.
- value – Valor do atributo.
Retorno¶
Retorna true se conseguir atribuir o valor, false, se não conseguir ou invalid, caso algum parâmetro esteja incorreto.
Exemplo¶
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", "PrimeiroNome") && PhStruct.set(stTest, "name.last", "UltimoNome") && 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 a String de definição usada para a criação de uma PhStruct.
Parâmetros¶
- struct – Referência de uma variável do tipo PhStruct;
Retorno¶
Retorna a String de definição ou uma String vazia.
Exemplo¶
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)); } }Saida:
{ name {first : string; last : string}; jobTitle { classe : string; date { day : word; month : word; year : word } }; next : struct }
define¶
PhStruct.define(definition, name)
Cria uma nova PhStruct baseado na String de definição passada e lhe atribui um nome.
Parâmetros¶
- definition – String contendo os tipos e atributos que serão usados pela PhStruct.
- name – String contendo o nome da PhStruct.
Retorno¶
Retorna true, em caso de sucesso ou false, em caso de erro.
Exemplo¶
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 definida"); } }Saida:
Struct definida
load¶
PhStruct.load(name)
Carrega uma PhStruct usando o nome de uma struct já criada.
Parâmetros¶
- name – String contendo o nome PhStruct usado ao chamar a função PhStruct.define().
Retorno¶
Retorna uma referência para uma PhStruct ou invalid.
Exemplo¶
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 carregada"); } } }Saida:
Struct carregada
undefine¶
PhStruct.undefine(name)
Remove a String de definição da PhStruct.
Parâmetros¶
- name – String contendo o nome PhStruct usado ao chamar a função PhStruct.define().
Retorno¶
Retorna true, em caso de sucesso ou false, em caso de erro.
Exemplo¶
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("Definicao removida"); } } }Saida:
Definicao removida
getAsPhType¶
PhStruct.getAsPhType(struct, attribute)
Retorna o valor de um atributo da PhStruct como Phtype.
Parâmetros¶
- struct – Referência de uma variável do tipo PhStruct;
- attribute – Nome do atributo.
Retorno¶
Retorna o valor do atributo específico da estrutura como um PhType ou invalid.
Exemplo¶
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", "PrimeiroNome"); var value = PhStruct.getAsPhType(stTest, "name.first"); Dialogs.alert("value: " + PhType.toString(value)); }Saida:
PrimeiroNome
copy¶
PhStruct.copy(newStruct, oldStruct)
Faz uma cópia da PhStruct para uma nova referência.
Parâmetros¶
- newStruct – Referência de uma nova variável do tipo PhStruct.
- oldStruct – Referência da variável original do tipo PhStruct.
Retorno¶
Retorna true, em caso de sucesso ou false, em caso de erro.
Exemplo¶
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", "PrimeiroNome"); PhStruct.set(oldStruct, "name.last", "UltimoNome"); if (PhStruct.copy(newStruct, oldStruct)) { Dialogs.alert("name: " + PhStruct.get(newStruct, "name.first")); } } }Saida:
PrimeiroNome
isStruct¶
PhStruct.isStruct(obj)
Verifica se o argumento recebido é um PhStruct.
Parâmetros¶
- obj – Objeto a ser verificado.
Retorno¶
boolean o, true em caso o argumento recebido seja um PhStruct ou false caso contrário.
Exemplo¶
function test() { var stTest = PhStruct.create(""); if (PhStruct.isStruct(stTest)) { Dialogs.alert("Struct criada!"); } }Saida:
Struct criada!
PhBuffer¶
Classe responsável por manipular arrays de byte.
Sumário¶
Função Descrição create Criar um buffer. getSize Recupera o tamanho do buffer em bytes. resize Redimensiona o tamanho do buffer. get Recupera o valor de um elemento dentro do buffer. set Ajusta o valor de um elemento dentro de um buffer. copy Copia uma porção de um buffer passado para outro. getAsBigEndian Rotina utilitária que interpreta uma porção do buffer como número no formato BigEndian veja: Endianness. getAsLittleEndian Assim como getAsBigEndian porém no formato LittleEndian getAsHexString Retorna uma string com notação hexadecimal representando o buffer. getAsString Retorna o buffer como string. equals Verifica se dois buffers tem o mesmo conteúdo. isBuffer Verifica se o argumento recebido é um buffer.
create¶
PhBuffer.create(source)
Criar um buffer.
Parâmetros¶
- source – String com o conteúdo a ser preenchido no buffer ou inteiro indicando seu tamanho.
Obs: Pode-se criar um buffer utilizando uma string com notação hexadecimal (0x0000..00). Neste caso, cada byte será representado como dois caracteres na string.Retorno¶
Retorna invalid caso haja parâmetros não compativeis com a função, caso contrário, o PhBuffer criado
Exemplo¶
/** * Criar um buffer zerado com tamanho 8 */ function getIV() { var buffer = PhBuffer.create("0x0000000000000000"); if (isvalid buffer) { Dialogs.alert("Buffer criado"); } }Saida:
Buffer criado/** * Criar um buffer zerado com tamanho 10 */ function newBuffer() { var buffer = PhBuffer.create(10); if (isvalid buffer) { Dialogs.alert("Buffer criado"); } }Saida:
Buffer criado
getSize¶
PhBuffer.getSize(phbuffer)
Recuperar o tamanho do PhBuffer em bytes.
Parâmetros¶
- phbuffer – Controlador para um PhBuffer
Retorno¶
Inteiro positivo com número de bytes alocados para o buffer. Caso o parâmetro de entrada não seja um PhBuffer o Método retornará invalid
Exemplo¶
/** * Criar um buffer e retornar o tamanho em bytes */ function getSize () { var buffer = PhBuffer.create("0xAA0000000000EFFF"); Dialogs.alert("Buffer criado com tamanho: PhBuffer.getSize(buffer)); }Saida:
Buffer criado com tamanho: 8
resize¶
PhBuffer.resize(phbuffer, size)
Redimensiona o PhBuffer passado para o novo tamanho indicado por size em bytes. Obs.: Caso o tamanho seja menor que o atual o conteúdo ao final do buffer será descartado.
Parâmetros¶
- phbuffer – Controlador para um PhBuffer
- size – Inteiro positivo com o novo tamanho em bytes
Retorno¶
boolean o, true em caso de sucesso ou false se não é possível alocar mais memória. Caso não seja possível utilizar os parâmetros invalid será retornado.
Exemplo¶
function test() { var buffer = PhBuffer.create("0xAA0000000000EFFF"); if (PhBuffer.resize(buffer, 5)) { Dialogs.alert("Novo tamanho: " + PhBuffer.getSize(buffer)); } }Saida:
Novo tamanho: 5
get¶
PhBuffer.get(phbuffer, index)
Recuperar o valor de um item do buffer
Parâmetros¶
- phbuffer – Controlador para um PhBuffer
- index – Inteiro com a posição desejada. Obs.: Veja regras para indices na WAP 194
Retorno¶
Inteiro com o valor do byte selecionado por index.
Exemplo¶
function test() { var buffer = PhBuffer.create("0xAA0000000000EFFF"); Dialogs.alert("Valor: " + PhBuffer.get(buffer, 0)); }Saida:
Valor: 170
set¶
PhBuffer.set(phbuffer, index, value)
Ajusta uma posição especifica do buffer com o valor desejado. Obs.: O valor será truncado para 8 bits
Parâmetros¶
- param – Controlador para um PhBuffer
- index – Inteiro com a posição desejada. Obs.: Veja regras para indices WAP 194
- value – Valor a ser ajustado na posição indicada dentro do buffer
Retorno¶
boolean o, true em caso de sucesso ou false em caso de erro.
Exemplo¶
function test() { var buffer = PhBuffer.create(1); if (PhBuffer.set(buffer, 0, 10)) { Dialogs.alert("Valor: " + PhBuffer.get(buffer, 0)); } }Saida:
Valor: 10
copy¶
PhBuffer.copy(src, srcPos, dest, destPos, length)
Copia parte de um PhBuffer para outro.
Parâmetros¶
- src – Controlador para um PhBuffer com os bytes a serem copiados
- srcPos – Posição para inicio da copia
- dest – Controlador para um PhBuffer destino
- destPos – Posição do local de destino
- length – Tamanho total a ser copiado em bytes
Retorno¶
boolean, true em caso de sucesso ou false caso o destino não comporte a copia
Exemplo¶
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 destino: " + str); }
getAsBigEndian¶
PhBuffer.getAsBigEndian(phbuffer, index, length)
Rotina utilitária que interpreta uma porção do buffer como número no formato BigEndian veja: Endianness.
Parâmetros¶
- phbuffer – Controlador para um PhBuffer
- index – Posiçao inicial para leitura
- length – tamanho do inteiro (2 ou 4)
Retorno¶
Inteiro com o valor interpretado. Caso não seja possível utilizar os parâmetros invalid será retornado.
Exemplo¶
function getAsBigEndian() { var source = PhBuffer.create("0xAA00"); Dialogs.alert("valor: " + PhBuffer.getAsBigEndian(source, 0, 2)); }Saida:
Valor: 43520
getAsLittleEndian¶
PhBuffer.getAsLittleEndian(phbuffer, index, length)
Rotina utilitária que interpreta uma porção do buffer como número no formato LittleEndian veja: Endianness.
Parâmetros¶
- phbuffer – Controlador para um PhBuffer
- index – Posiçao inicial para leitura
- length – tamanho do inteiro (2 ou 4)
Retorno¶
Inteiro com o valor interpretado. Caso não seja possível utilizar os parâmetros invalid será retornado.
Exemplo¶
function getAsLittleEndian() { var source = PhBuffer.create("0xAA00"); Dialogs.alert(PhBuffer.getAsLittleEndian(source, 0, 2)); }Saida:
Valor: 170
getAsHexString¶
PhBuffer.getAsHexString(phbuffer, index, length)
Retorna uma string com notação hexadecimal representando o buffer. Cada byte é convertido para dois chars em hexadecimal.
Parâmetros¶
- phbuffer – Controlador para um PhBuffer
- index – Posiçao inicial para leitura
- length – tamanho a ser convertido
Retorno¶
Caso não seja possível utilizar os parâmetros invalid será retornado. ou a string em HEXADECIMAL que representa a porção do buffer selecionada 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); }Saida:
Valor: 0xffff
getAsString¶
PhBuffer.getAsString(buffer, position, length)
Método utilizado para recuperar uma porção do buffer com uma string
Parâmetros¶
- phbuffer – Controlador para um PhBuffer
- index – Posiçao inicial para leitura
- length – tamanho a ser convertido
Retorno¶
Exemplo¶
function test() { var buffer = PhBuffer.create("0x54455354"); var size = PhBuffer.getSize(buffer); Dialogs.alert("Valor: " + PhBuffer.getAsString(buffer, 0, size)); }Saida:
Valor: TEST
equals¶
PhBuffer.equals(phbuffer1, phbuffer2)
Compara o conteúdo de dois PhBuffers
Parâmetros¶
- phbuffer1 – Controlador para um PhBuffer
- phbuffer2 – Controlador para um PhBuffer
Retorno¶
boolean o, true se forem iguais ou false caso contrário. Caso não seja possível utilizar os parâmetros invalid será retornado.
function test() { var buf1 = PhBuffer.create("TEST"); var buf2 = PhBuffer.create("TEST1"); Dialogs.alert("Equals: " + PhBuffer.equals(buf1, buf2)); }Saida:
Equals: true
isBuffer¶
PhBuffer.isBuffer(obj)
Verifica se o argumento recebido é um PhBuffer.
Parâmetros¶
- obj – Objeto a ser verificado.
Retorno¶
boolean o, true em caso o argumento recebido seja um PhBuffer ou false caso contrário.
Exemplo¶
function test() { var buffer = PhBuffer.create(""); if (PhBuffer.isBuffer(buffer)) { Dialogs.alert("Buffer criado!"); } }Saida:
Buffer criado!
PhType¶
Este módulo fornece funções para prover o acesso ao tipo PhType que pode assumir alguns tipos predefinidos.
Sumário de funções¶
Função Descrição create Esta função cria um PhType de acordo com o tipo especificado no parâmetro. (Ver Lista de Tipos). get Retorna o conteúdo armazenado no tipo passado como parâmetro. set Atribui o valor passado a um PhType. getValue Retorna o conteúdo armazenado em um PhType. setValue Esta função armazena um valor em uma posição especifica do PhType. reset Reseta o PhType para seu valor default. size Retorna o tamanho do PhType. dup Cria uma cópia do PhType. equals Compara dois PhTypes. assign Atribui o valor de um PhType de origem a um PhType destino. resize Altera o tamanho de um PhType. getType Retorna o tipo de um PhType. toString Retorna a representação em string de um PhType. count Retorna a quantidade elementos de um PhType. Este PhType deve ser baseado em listas. getName (deprecated) setAttribute Seta atributos em um tipo complexo (CRYPT, COMPRESSED..). getAttribute Retorna um atributo de um tipo complexo. isType Verifica se o argumento recebido é um PhType.
Lista de tipos¶
Tipos Descrição Valor padrão Valor mínimo Valor máximo PhType.NONE Nenhum - - - PhType.BYTE Tipo Byte 0 0 255 PhType.SBYTE Tipo Byte Sinalizado 0 -128 127 PhType.WORD Tipo Word 0 0 65.535 PhType.SWORD Tipo Word Sinalizado 0 -65.536 65.535 PhType.DWORD Tipo DWord 0 0 4.294.967.295 PhType.SDWORD Tipo DWord Sinalizado 0 -2.147.483.648 2.147.483.647 PhType.VARINT Tipo que armazena números inteiros e que altera o seu tamanho conforme o valor atribuído 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 no formato BCD "" 0 caracteres 255 caracteres PhType.BOOLEAN Tipo lógico. (01 Byte) 0 para FALSE ou diferente de zero para TRUE false - - PhType.MEMO Tipo memorando. Matriz de Strings [0] 0 strings 65.535 strings PhType.LONGMEMO Tipo memorando. 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 posições PhType.DATE Armazena um inteiro que representa uma data. 00/00/1980 01/01/1980 31/12/2107 PhType.TIME Armazena um inteiro que representa uma hora. 00:00:00 00:00:00 31:63:62 PhType.MONEY Tipo inteiro que representa um valor monetário 0 0 4.294.967.295 PhType.ARRAY Matriz bidimensional de qualquer tipo válido [0] 0 65.535 itens com 65.535 bytes PhType.VARIANT Tipo variante (pode assumir qualquer tipo válido) null - - PhType.BITS Vetor de bytes que armazena '1' (0x31) ou '0'(0x30) '' 0 65.535 PhType.ITEMARRAY Vetor de qualquer tipo válido [0] 0 65.535 itens PhType.STRUCT Matriz de tipos variant [] 0 65.535 itens PhType.BYTELIST Tipo baseado em lista para armazenar Bytes [] 0 65.535 itens PhType.WORDLIST Tipo baseado em lista para armazenar Words [] 0 65.535 itens PhType.DWORDLIST Tipo baseado em lista para armazenar DWords [] 0 65.535 itens PhType.BOOLEANLIST Tipo baseado em lista para armazenar boolean s [] 0 65.535 itens PhType.STRINGLIST Tipo baseado em lista para armazenar Strings [] 0 65.535 itens PhType.LONGSTRINGLIST Tipo baseado em lista para armazenar LongStrings [] 0 65.535 itens PhType.DATETIME Tipo complexo que armazena um tipo Date e um tipo Time 00/00/1980 00:00:00 00/00/1980 00:00:00 31:63:62 31/12/2107 PhType.BITMAP Tipo complexo utilizado para armazenar uma imagem - - - PhType.CRYPT Tipo complexo que armazena uma informação criptografada - - - PhType.COMPRESSED Tipo complexo que armazena um dado comprimido - - - PhType.VERSION Tipo complexo que armazena uma versão com major, minor, patch e build 1.0.0.0 - - PhType.TYPE_COUNT Contém a quantidade de tipos - - -
Atributos para os tipos 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 os tipos Compressed¶
Atributo COMPRESSED TYPE COMPRESSED TYPE NONE COMPRESSED TYPE ZLIB
create¶
PhType.create(type)
Esta função cria um PhType de acordo com o tipo especificado no parâmetro. (Ver Lista de Tipos).
Parâmetros¶
- type – Atributo da classe ou string com o nome do tipo.
Retorno¶
Retorna o PhType criado ou invalid em caso de erro.
Exemplo¶
function exemploCreate() { var tipoA = PhTypeCreate(PhType.WORD); var tipoB = PhTypeCreate("byte"); return = (isvalid tipoA && isvalid tipoB); }
get¶
PhType.get(type)
Retorna o conteúdo armazenado no tipo passado como parâmetro.
Parâmetros¶
- type – PhType previamente criado com a função PhType.create();
Retorno¶
O conteúdo armazenado no tipo, em caso de sucesso, ou invalid em caso de erro.
Exemplo¶
function exemploGet() { 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)
Atribui o valor passado a um PhType.
Parâmetros¶
- type – PhType previamente criado com a função PhType.create();
- value – Valor que se deseja atribuir ao tipo previamente criado.
Retorno¶
Em caso de sucesso retorna o valor que foi atribuído ao tipo. Em caso de erro, retorna invalid.
Exemplo¶
function exemploSet() { 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)
Retorna o conteúdo armazenado em um PhType.
Parâmetros¶
- type – PhType previamente criado com a função PhType.create();
- idx – Posição do tipo de onde se deseja ler o conteúdo.
Retorno¶
Retorna a variável armazenada no 'type' e 'idx' passados.
Exemplo¶
function exemploGetValue(list, id) { var result = PhType.getValue(list, id); return result; }
setValue¶
PhType.setValue(type, idx, value)
Esta função armazena um valor em uma posição especifica do PhType.
Parâmetros¶
- type – PhType previamente criado com a função PhType.create();
- idx – Posição do tipo de onde se deseja ler o conteúdo;
- value – Valor a ser atribuído.
Retorno¶
Retorna um número inteiro em caso de êxito ou invalid em caso de erro.
Exemplo¶
function test(list, id, value) { var result = PhType.setValue(list, id, value); return result; }
reset¶
PhType.reset(type)
Reseta o PhType para seu valor default.
Parâmetros¶
- type – PhType previamente criado com a função PhType.create().
Exemplo¶
function exemploReset(type) { PhType.reset(type); }
size¶
PhType.size(type)
Retorna o tamanho do PhType.
Parâmetros¶
- type – PhType previamente criado com a função PhType.create().
Retorno¶
Retorna o tamanho do PhType passado.
Exemplo¶
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)); }Saida:
byte size: 1 word size: 2 dword size: 4
dup¶
PhType.dup(type)
Cria uma cópia do PhType.
Parâmetros¶
- type – PhType previamente criado com a função PhType.create().
Retorno¶
Retorna um PhType com o mesmo tipo e valor do argumento recebido.
Exemplo¶
function ExemploDup(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 da copia: " + PhType.getType(typeA)); Dialogs.alert("Valor da copia: " + PhType.get(typeA)); }Saida:
Tipo original: 1 Valor original: 100 Valor da copia: 1 Valor da copia: 100
equals¶
PhType.equals(type1, type2)
Compara o conteúdo de dois PhTypes.
Parâmetros¶
- type1 – PhType previamente criado com a função PhType.create();
- type2 – PhType previamente criado com a função PhType.create().
Retorno¶
Retorna um boolean com valor true em caso de sucesso e false em caso de erro.
Exemplo¶
function exemploEquals(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)
Atribui o valor de um PhType de origem a um PhType destino.
Parâmetros¶
- type1 – PhType previamente criado com a função PhType.create();
- type2 – PhType previamente criado com a função PhType.create().
Exemplo¶
function exemploAssign(type) { var tipoA = PhType.create(type); var tipoB = PhType.create(type); PhType.set(tipoA, 100); PhType.assign(tipoB, tipoA); }
resize¶
PhType.resize(type, size)
Altera o tamanho de um PhType.
Parâmetros¶
- type – PhType previamente criado com a função PhType.create();
- size – Nova quantidade de bytes que o tipo passará a representar.
Exemplo¶
function exemploResize() { var strList = PhType.create(PhType.STRINGLIST); Dialogs.alert("Tamanho antes: " + PhType.count(strList)); PhType.resize(strList, 5); Dialogs.alert("Tamanho depois: " + PhType.count(strList)); }Saida:
Tamanho antes: 0 -- Tamanho depois: 5 --
getType¶
PhType.getType(type)
Retorna o tipo de um PhType.
Parâmetros¶
- type – PhType previamente criado com a função PhType.create();
Retorno¶
Retorna um inteiro correspondente ao tipo passado como parâmetro ou invalid em caso de erro.
Exemplo¶
function test() { var tWord = PhType.create(PhType.WORD); if (PhType.getType(tWord) == PhType.WORD) { Dialogs.alert("Tipo word criado"); } else { Dialogs.alert("Erro ao criar o PhType"); } }Saida:
Tipo word criado
toString¶
PhType.toString(type)
Retorna a representação em string de um PhType.
Parâmetros¶
- type – PhType previamente criado com a função PhType.create();
Retorno¶
Retorna uma string com o conteúdo armazenado no tipo previamente criado, ou invalid em caso de erro.
Exemplo¶
function exemploToString(type) { var tipo = PhType.create(type); PhType.set(tipo, 100); Dialogs.alert("Str type: " + PhType.toString(tipo)); }Saida:
Str type: 100
count¶
PhType.count(type)
Retorna a quantidade elementos de um PhType. Este PhType deve ser baseado em listas.
Parâmetros¶
- type – PhType previamente criado com a função PhType.create();
Retorno¶
Retorna a quantidade de elementos contidos no tipo passado como parâmetro, ou invalid em caso de erro.
Exemplo¶
function exemploCount() { 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)
Seta atributos em um tipo complexo (CRYPT, COMPRESSED..).
Parâmetros¶
- type – PhType previamente criado com a função PhType.create();
- attribute – Um dos tipos descritos na tabela de tipos no início desta sessão;
- value – Valor do novo aributo.
Retorno¶
Retorna um boolean em caso de sucesso e invalid em caso de falha.
Exemplo¶
function exemploSetAttribute(type) { var tipo = PhType.create(type); PhType.set(tipo, 100); var result = PhType.setAttribute(tipo, PhType.boolean, true); }
getAttribute¶
PhType.getAttribute(type, attribute)
Retorna um atributo de um tipo complexo.
Parâmetros¶
- type – PhType previamente criado com a função PhType.create();
- attribute – Um dos tipos descritos na tabela de tipos no início desta sessão;
Retorno¶
Retorna um atributo de um tipo complexo, ou invalid caso haja falha.
Exemplo¶
function exemploGetAttribute(type) { var tipo = PhType.create(type); PhType.set(tipo, true); var result = PhType.getAttribute(tipo, PhType.boolean); }
isType¶
PhType.isType(obj)
Verifica se o argumento recebido é um PhType.
Parâmetros¶
- obj – Objeto a ser verificado.
Retorno¶
boolean o, true em caso o argumento recebido seja um PhType ou false caso contrário.
Exemplo¶
function test() { var tp = PhType.create(PhType.BYTE); if (PhType.isType(tp)) { Dialogs.alert("PhType criado!"); } }
typeof¶
Retorna um inteiro representando o tipo do dado do valor passado ao typeof
Constantes¶
Inteiro Descrição 0 Indica que a variavel é do tipo inteiro. 1 Indica que a variabel é do tipo float. 2 Indica que a variabel é do tipo String. 3 Indica que a variabel é do tipo boolean (true/false). 4 Indica que a variabel é invalid. 5 Indica que a variabel é do tipo ponteiro. 6 Indica que a variabel é uma estrutura.
Exemplos¶
Valor do tipo ponteiro
var i = 10; Dialogs.alert(typeof &i); i = PhList.create(); Dialogs.alert(typeof i);Saida
5 6
Dispositivos¶
A biblioteca Devices disponibiliza interfaces para a manipulação dos dispositivos do terminal.
Sumário¶
Dispositivo Descrição Device Interface padrão para operações em devices Eth Interface para uso do Ethernet Wifi Interface para uso do Wifi Gprs Interface para uso do GPRS Gsm Interface para uso do GSM Wless Interface para uso do Wless Modem Interface para uso do Modem Serial Interface para uso do Serial Usb Interface para uso do Usb Nfc Interface para uso do NFC Printer Interface para uso da Impressora Touch Interface para uso do Touch
Dev¶
| package://libs#dev/dev.wmlsc |
|---|
O módulo Dev define funções de uso comum a todos os dispositivos.
Sumário¶
Função Descrição connect Conectar dispositivo criado connected Validar se o dispositivo está conectado createStream Criar um stream genérico para o dispositivo detectConnection Habilita o processamento da conexão TLS não blocante. disconnect Desconectar dispositivo getError Recuperar último erro ocorrido getInfo Recuperar informações/configurações do dispositivo getNativeError Recuperar último erro ocorrido na API do dispositivo do terminal hasSupport Informa se o terminal suporta um determinado tipo de dispositivo isDev Verifica se a instância é um Device. waitDataLink Aguarda a conexão da camada física do dispositivo
Códigos de erro¶
Constantes Descrição Device#AUTH_ERROR Erro de autenticação Device#AUTHENTICATION_ERROR Erro de autenticação Device#BATTERY_LOW A bateria do terminal está baixa Device#BUSY_MODEM_ERROR Modem ocupado Device#CANT_ATTACH_ERROR Falha ao estabelecer a conexão Device#CONNECT_ERROR Falha ao conectar Device#NO_ANSWER_ERROR Sem resposta do número discado Device#NO_CABLE_ERROR Sem cabo de rede Device#NO_CARRIER_ERROR Conexão abortada pela outra ponta do canal de comunicação Device#NO_CHIP_ERROR Chip de comunicação ausente Device#NO_CHIP_CONNECTION_ERROR Falha ao estabelecer a conexão utilizando chip Device#NO_DIAL_TONE_ERROR Não foi capaz detectar tom de discagem na linha conectada ao terminal Device#NO_ETH_CONNECTION_ERROR Falha ao estabelecer a conexão utilizando Ethernet Device#NO_MODEM_ERROR Modem ausente Device#SUCCESS Sucesso Device#TIMEOUT Esgotado tempo de espera Device#UNKNOWN_ERROR Erro desconhecido Device#USER_ABORT Cancelamento pelo operador
Informações do dispositivo¶
Constante Descrição Device#FIELD_LOCAL_IP Endereço IP atribuido ao equipamento local representado como DWord Device#FIELD_NAME Nome do dispositivo Device#FIELD_TYPE Tipo do dispositivo (ver seção Tipos de Dispositivos)
Tipos de dispositivos¶
Constante Descrição Device#TYPE_ETH Ethernet Device#TYPE_MDM Modem Device#TYPE_NFC NFC Device#TYPE_PRINTER Impressora Device#TYPE_SERIAL Serial (RS232) Device#TYPE_TOUCH Touch Device#TYPE_USB USB Device#TYPE_WIFI WIFI Device#TYPE_WLESS Wireless Interno (GPRS/GSM)
connect¶
Conectar dispositivo criado
Parâmetros¶
- dev - Instância de um dispositivo
Retorno¶
invalid ou boolean indicado se houve sucesso na operação
Exemplo:¶
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!"); } }Saida:
Dispositivo conectado!
connected¶
Device#connected(dev)
Validar se o dispositivo está conectado.
Parâmetros¶
- dev - Instância de um dispositivo.
Retorno¶
invalid ou boolean indicando se o dispositivo está conectado ou se está desconectado.
Exemplo:¶
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!"); } }Saida:
Dispositivo conectado!
createStream¶
Device#createStream(dev)
Criar um stream genérico para o dispositivo.
Parâmetros¶
- dev - Instância de um dispositivo conectado;
Retorno¶
invalid ou stream.
Exemplo:¶
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("Teste de Comunicacao"); var wrote = Stream#write(stream, buffer, 0, PhBuffer.getSize (buffer)); if (wrote >= 0) { Dialogs.alert("Bytes escritos no stream: " + wrote); } else { Dialogs.alert("Erro ao escrever no stream: " + wrote); } } }Saida:
Bytes escritos no stream: 10
detectConnection¶
Device#detectConnection(check)
Habilita o processamento da conexão TLS não blocante. Quando habilitada, a cada pressionamento de tecla no terminal, será verificado se a conexão não blocante foi estabelecida.
Parâmetros¶
- type - [in] check - booleano indicando se habilita ou desabilita a verificação;
disconnect¶
Device#disconnect(dev)
Desconectar o dispositivo.
Parâmetros¶
- dev - Instância de um dispositivo conectado.
Retorno¶
invalid ou boolean indicado se houve sucesso na operação.
Exemplo:¶
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!"); } }Saida:
Dispositivo desconectado!
getError¶
Device#getError(dev)
Recuperar último erro ocorrido.
Parâmetros¶
- dev - Instância de um dispositivo conectado;
Retorno¶
invalid ou código de erro (ver seção Códigos de Erro).
Exemplo:¶
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("Erro: Sem cabo de rede"); } } }Saida:
Erro: Sem cabo de rede
getInfo¶
Device#getInfo(dev, infoName)
Recuperar informações/configurações do dispositivo.
Parâmetros¶
- dev - Instância de um dispositivo conectado;
- infoName - Informação que se deseja recuperar (ver seção Informações do dispositivo);
Retorno¶
invalid ou PhType.VARIANT com o valor desejado.
Exemplo:¶
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("Largura da impressora: " + width); } } }Saida:
Largura da impressora: 40
getNativeError¶
Device#getNativeError(dev)
Recuperar último erro ocorrido na API do dispositivo do terminal.
Parâmetros¶
- dev - Instância de um dispositivo conectado;
Retorno¶
invalid ou código de erro (ver seção Códigos de Erro).
Exemplo:¶
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; }Saida:
Dispositivo conectado.
hasSupport¶
Device#hasSupport(type)
Informa se o terminal suporta um determinado tipo de dispositivo.
Parâmetros¶
- type - [in] Inteiro com o ID do dispositivo;
Retorno¶
true caso o dispositivo esteja ativo (funcional).
Exemplo:¶
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("Inteiro que | corresponde a conexão |Wifi: "+wifi); if (Device#hasSupport(wifi)) { Dialogs.alert("Este terminal possui suporte a Wifi"); } }Saida:
Inteiro que corresponde a conexão Wifi: 18 Este terminal possui suporte a Wifi.
isDev¶
Device#isDev(dev)
Verifica se a instância é um Device.
Parâmetros¶
- dev - Instância de um dispositivo conectado
Retorno¶
true se for um Device e false caso contrário.
Exemplo:¶
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("A instancia pertence a um dispositivo"); } else { Dialogs.alert("A instancia nao |pertence a um dispositivo"); } }Saida:
A instancia pertence a um dispositivo.
waitDataLink¶
Device#waitDataLink(dev, bloking)
Aguarda a conexão da camada física do dispositivo.
Parâmetros¶
- dev - Instância de um dispositivo conectado;
- blocking - Boolean identificando se é blocante ou não.
Retorno¶
invalid ou boolean indicado se houve sucesso na operação.
Exemplo¶
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"); } } }Saida:
Datalink conectado
Eth¶
| package://libs#dev/eth.wmlsc |
|---|
Interface para uso do dispositivo Ethernet.
Sumário¶
Função Descrição create Criar uma instância do device Ethernet
Informações do Ethernet¶
Constantes Descrição Eth#FIELD_TYPE Recupera se a configuração do IP é manual (1) ou DHCP (2) Eth#FIELD_GATEWAY Recupera o gateway configurado Eth#FIELD_NETMASK Recupera a mascara de rede configurada Eth#FIELD_RESTART_AFTER_CONFIG Indica se é preciso reiniciar o terminal após a configuração
create¶
Eth#create(config)
Criar uma instância do device Ethernet
Parâmetros¶
- config String vazia ("") para utilizar configuração padrão/anterior ou PhStruct defido como:
"{" + "ipLocal : dword;" + // Se for zero usara DHCP "netmask : dword;" + "gateway : dword;" + "}";Retorno¶
invalid ou dispositivo Ethernet criado.
Exemplo¶
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 criado."); } }Saida:
Dispositivo Ethernet criado
Wifi¶
| package://libs#dev/wifi.wmlsc |
|---|
Interface para uso do dispositivo Wifi.
Sumário¶
Função Descrição create Criar device Wifi setIPConfig Responsável por configurar o IP do dispositivo Wifi getIPConfig Responsável por carregar as configurações de IP do dispositivo Wifi
Tipos de Rede Wifi¶
Constantes Descrição Wifi#TYPE_INFRA O dispositivo será conectado a um ponto de acesso Wifi#TYPE_ADHOC O dispositivo será conectado diretamente a outro dispositivo Wifi.
Tipos de Autenticação Wifi¶
Constantes Descrição Wifi#AUTH_NONE Nenhuma autenticação Wifi#AUTH_WEP Autenticação WEP Wifi#AUTH_WPA_PSK Autenticação WPA_PSK Wifi#AUTH_WPA_EAP Autenticação WPA_EAP Wifi#AUTH_WPA2_PSK Autenticação WPA2_PSK Wifi#AUTH_WPA2_EAP Autenticação WPA2_EAP
Tipos de Encriptação para Rede Wifi¶
Constantes Descrição Wifi#CRYPT_NONE Nenhuma encriptação Wifi#CRYPT_WEP Encriptação WEP Wifi#CRYPT_TKIP Encriptação TKIP Wifi#CRYPT_WEP128 Encriptação WEP128 Wifi#CRYPT_AES_CCM Encriptação AES_CCM Wifi#CRYPT_WEPX Encriptação AES_CCM
Modos de configuração IP¶
Constantes Descrição Wifi#IP_DHCP IP definido automaticamente Wifi#IP_ESTATICO IP definido manualmente
create¶
Wifi#create(config)
Criar device Wifi
Parâmetros¶
- config PhStruct com a estrutura:
"{"; "type:word;" + //Tipo da conexao (TYPE_INFRA ou TYPE_ADHOC) "ssid:string;" + //Nome da rede "auth:word;" + //Tipo de autenticacao "sec:word;" + //Tipo de encriptacao "pwd:crypt;" + //Senha da Rede "bk:boolean;" + //Indica se a conexao sera blocante "knw:boolean;" + //Manter rede ativa (keep network alive) "timeout:dword" + //Tempo de espera "fb:string;" /* path para o script que implementa a funcao feedback, que sera chamada por callback para informar o progresso do estabelecimento da conexao Wifi. */ + "}";onde fb é o path do script que implementa a função feedback, que será chamada por callback para informar o progresso do estabelecimento da conexão Wifi.
Retorno¶
invalid ou dispositivo Wifi criado.
setIPConfig¶
Wifi#setIPConfig(device, config)
Responsável por configurar o IP do dispositivo Wifi
Parâmetros¶
- device Instância de um dipositivo Wifi
- config PhStruct no formato:
"{" + "type:word;" + //Tipo da configuracao IP (IP_DHCP ou IP_ESTATICO) "ip:dword;" + //IP representado como DWord "netmask:dword;" + //Mascara da rede "gateway:dword" + //Gateway da rede "}";Retorno¶
boolean indicando se a configuração foi realizada e invalid em caso de erro
getIPConfig¶
Wifi#getIPConfig(device)
Responsável por carregar as configurações de IP do dispositivo Wifi
Parâmetros¶
- device Instância de um dipositivo Wifi
Retorno¶
PhStruct no formato:
"{" + "type:word;" + //Tipo da configuracao IP (IP_DHCP ou IP_ESTATICO) "ip:dword;" + //IP representado como DWord "netmask:dword;" + //Mascara da rede "gateway:dword" + //Gateway da rede "}";
Exemplo¶
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("Senha:", 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("Falha ao 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("Selecione uma Rede: ", [items, 0], false, false); if(isvalid selected) { network = PhType.get(PhType.getValue(PhType.getValue(networks, selected),0)); } return network; }Saida:
Menu com redes disponíveis
MngrWifi¶
| package://phast#config/mngr_wifi.wmlsc |
|---|
Funções para persistencia de redes wifis locais
Sumário¶
Função Descrição availableNetworks Esta função é responsável por pesquisar as redes Wifi disponiveis saveNetwork Esta função é responsável adicionar uma nova rede Wifi savedNetworks Esta função é responsável por listar os (Redes Wifi) que foram configuradas pelo terminal forgetNetwork Esta função é responsável remover um profile(Rede Wifi) o mais conhecido por esquecer de uma rede Wifi
availableNetworks¶
MngrWifi#availableNetworks()
Esta função é responsável por pesquisar as redes Wifi disponiveis
Parâmetros¶
Não há
Retorno¶
PhType.STRUCT com as informações das redes localizadas
saveNetwork¶
Wifi#saveNetwork(config)
Esta função é responsável adicionar uma nova rede Wifi
Parâmetros¶
- config PhStruct no formato
"{ssid:string}".Retorno¶
true se a rede foi salva com sucesso ou false se houve erro na gravação dos dados
savedNetworks¶
MngrWifi#savedNetworks ()
Esta função é responsável por listar os (Redes Wifi) que foram configuradas pelo terminal
Parâmetros¶
- Não há
Retorno¶
PhType.STRUCT com as informações das redes salvas
forgetNetwork¶
MngrWifi#forgetNetwork(id)
Esta função é responsável remover um profile (esquecer rede Wifi).
Parâmetros¶
- id Id da rede (indice do profile. Ver Wifi#savedNetworks).
Retorno¶
true em caso sucesso e false em caso de erro
Gprs¶
| package://libs#dev/gprs.wmlsc |
|---|
Interface para uso do dispositivo Gprs.
Sumário¶
Função Descrição create Criar uma instância do device Gprs
create¶
Gprs#create(config)
Criar uma instância do device Gprs
Parâmetros¶
- config PhStruct defido como:
"{" + "id : byte;" + //Id do dispositivo "cid : byte;" + //Id da conexao "apn : crypt;" + //APN da operadora do SIM card "usr : crypt;" + //Nome do usuario do SIM card "pwd : crypt;" + //Senha do SIM usuario do SIM card "pin : crypt;" + //PIN do SIM card "knw : boolean;" + //Manter conexao de rede (Keep alive) "}";Retorno¶
invalid ou dispositivo Gprs criado.
Exemplo¶
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; }Saida:
Dispositivo Gprs criado
Gsm¶
| package://libs#dev/gsm.wmlsc |
|---|
Interface para uso do dispositivo Gsm.
Sumário¶
Função Descrição create Criar uma instância do device Gsm
create¶
Gsm#create(config)
Criar uma instância do device Gsm
Parâmetros¶
- config PhStruct definido como:
"{" + "modemProto : byte;" + "mode : byte;" + "phone : crypt;" + "usr : crypt;" + "pwd : crypt;" + "}";Retorno¶
invalid ou dispositivo Gsm criado.
Exemplos¶
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; }Saida:
Dispositivo Gsm criado
Wless¶
| package://libs#dev/wless.wmlsc |
|---|
Implementa funcionalidades comuns ao GPRS e GSM.
Informações do WLess¶
Constantes Descrição Wless#FIELD_SIGNAL_LEVEL Nivel de sinal do Modem Wireless Wless#FIELD_NOISE_LEVEL Nivel de ruído Wless#FIELD_OPER_NAME Nome da operadora em uso Wless#FIELD_SIM_CARD_SERIAL Número serial do SIM card em uso Wless#FIELD_OPER_ID ID do SIM card em uso Wless#FIELD_SIM_CARD_NUMBER Número do SIM card em uso Wless#FIELD_MODE Modo de conexão (GSM ou GPRS) Wless#FIELD_GEOLOCAL Geolocalizacao Wless#FIELD_EXTENDED_ERROR Erro estendido Wless#FIELD_APN APN da operadora em uso Exemplos¶
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("Sinal: " + Device#getInfo(Wless#FIELD_SIGNAL_LEVEL())); } } }Saida:
Dispositivo Gprs conectado Sinal: 70
Serial¶
| package://libs#dev/serial.wmlsc |
|---|
Interface para uso do dispositivo Serial.
Sumário¶
Função Descrição create Criar uma instância do device Serial
create¶
Serial#create(config)
Criar uma instância do device Serial
Parâmetros¶
- config PhStruct definido como:
"{" + "porta : byte;" + // Porta COM a ser utilizada "baudrate : sdword;" /* Taxa de transmissao dos dados. Velocidades possiveis : 50, 75, 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 93750, 115200, 187500 */ + "parity : byte;" /* Paridade. Valores possiveis : None (0), Impar(1), Par(2) */ + "databits : byte;" /* Numero de bits de dados. Valores possiveis: 7 e 8. */ + "stopbit : byte," /* Bit de parada. Valores possiveis: 1 -> 1, 2 -> 2, 5 -> 1.5 */ + "start : dword;" + // Timeout para inicio da recepcao "middle : dword " + // Timeout entre a recepcao de bytes "}";Retorno¶
invalid ou dispositivo Serial criado.
Exemplos¶
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 criado"); } }Saida:
Dispositivo Serial criado
Usb¶
| package://libs#dev/usb.wmlsc |
|---|
Interface para uso do dispositivo Usb.
Informações do Usb¶
Constantes Descrição Usb#FIELD_BAUDRATE Largura de banda do Usb (50, 75, 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600 e 115200.) Usb#FIELD_PARITY Paridade (0 - None, 1 - Odd, 2 - Even) Usb#FIELD_DATABITS Quantidade de bits para dados (0, 7, 8) Usb#FIELD_STOPBIT Quantidade de bits de parada ( 1, 2, 5 (1.5) )
Sumário¶
Função Descrição create Criar uma instância do device Usb
create¶
Usb#create(config)
Criar uma instância do device Usb
Parâmetros¶
- config PhStruct definido como:
"{" + "baudrate : sdword;" /* Taxa de transmissao dos dados. Velocidades possiveis : 50, 75, 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 93750, 115200, 187500 */ + "parity : byte;" /* Paridade. Valores possiveis : None (0), Impar(1), Par(2) */ + "databits : byte;" /* Numero de bits de dados. Valores possiveis: 7 e 8. */ + "stopbit : byte," /* Bit de parada. Valores possiveis: 1 -> 1, 2 -> 2, 5 -> 1.5 */ + "start : dword;" + // Timeout para inicio da recepcao "middle : dword " + // Timeout entre a recepcao de bytes "}";Retorno¶
invalid ou dispositivo Usb criado.
Exemplos¶
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 criado"); } }Saida:
Dispositivo Usb criado
Nfc¶
| package://libs#dev/nfc.wmlsc |
|---|
Interface para uso do dispositivo Nfc.
Sumário¶
Função Descrição create Criar uma instância do device NFC detect Faz a detecção de um dispositivo NFC authorize Realiza a autorização de um bloco para leitura/escrita readBlockData Realiza a leitura do bloco passado writeBlockData Realiza a escrita de dados em um bloco
create¶
Nfc#create()
Criar uma instância do device NFC
Retorno¶
invalid ou controlador do device para NFC
detect¶
Nfc#detect(dev)
Faz a detecção de um dispositivo NFC
Parâmetros¶
- dev Instância de dispositivo NfC.
Retorno¶
PhList - Lista onde o primeiro item é o tipo do cartão e segundo elemento é o uid (numero de serie) do cartão. invalid Caso não consiga fazer o detect do cartão.
authorize¶
Nfc#authorize(dev, block, key)
Realiza a autorização de um bloco para leitura/escrita
Parâmetros¶
- dev Instância de dispositivo NfC
- block Numero do bloco que deseja realizar escrita/leitura
- key Chave para leitura/escrita de um bloco especifico
Retorno¶
- 0 Caso consiga realizar a autorização
- -4 Caso passe parametros errados
- -5 Erro de autorização (key incorreta)
readBlockData¶
Nfc#readBlockData(dev, block)
Realiza a leitura do bloco passado
Parâmetros¶
- dev Instância de dispositivo NfC
- block Numero do bloco que deseja realizar leitura
Retorno¶
- PhBuffer Em caso de sucesso, retorna um buffer com os dados do bloco
- -7 Erro durante a leitura do cartão
writeBlockData¶
Nfc#readBlockData(dev, buffer, block)
Realiza a escrita de dados em um bloco
Parâmetros¶
- dev Instância de dispositivo NfC
- buffer PhBuffer com os dados que deseja escrever no cartão
- block Numero do bloco que deseja realizar escrita
Retorno¶
Retorna a quantidade de bytes escrita no cartão ou -6 caso não consiga realizar a escrita.
Nfc#getData(config)
Recupera os dados de uma tag NFC detectada
Parâmetros¶
- dev Instância de dispositivo Nfc.
Retorno¶
PhBuffer em caso de sucesso ou invalid em caso de erro
Exemplos¶
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); } } } }Saida:
tag UID: 0x8804E855 -- tag data: 0xFFE8A001
Printer¶
| package://libs#dev/printer.wmlsc |
|---|
Implementação para uso da impressora.
Sumário¶
Função Descrição create Cria device printer. write Escreve dados com a impressora. checkPaper Verifica a exixtencia de bobina para impressão. feedPaper Deixa o papel em ponto de corte. setFont Seta a fonte de impressão. setFontSize Seta a fonte e o tamanho da altura e largura dos caracteres. printBC Imprimi código de barras em duas dimensões.
Tipos de alinhamento na impressão¶
Constantes Valor Descrição Printer#ALIGN_NONE 0 Sem alinhamento Printer#ALIGN_CENTER 1 Centralizado Printer#ALIGN_LEFT 2 Alinhado à esquerda Printer#ALIGN_RIGHT 3 Alinhado à direita Printer#ALIGN_JUSTIFY 4 Justificado
Informações da impressora¶
Constantes Valor Descrição Printer#FIELD_PRINT_WIDTH 500 Número de colunas para impressão. Printer#FIELD_PRINTED_LINES 501 Quantidade de linhas já impressas pelo terminal.
create¶
Printer#create(config)
Cria device printer para escrita de dados da impressora.
Parâmetros¶
- config: String vazia ("");
Retorno¶
invalid ou Printer criado.
write¶
Printer#write(dev, data, align)
Escreve dados com a impressora.
Parâmetros¶
- dev: instância de dispositivo printer criada a partir de Printer#create;
- data: dados a serem impressos pode ser string ou streamFile;
- align: alinhamento da informação a ser impressa;
Retorno¶
true em caso de sucesso ou false indicando erro.
checkPaper¶
Printer#checkPaper(dev)
Verifica a existência de bobina para impressão.
Parâmetros¶
- dev: instância de dispositivo printer criada a partir de Printer#create;
Retorno¶
true indica presença de papel e false indica falta.
feedPaper¶
Printer#feedPaper(dev)
Deixa o papel em ponto de corte.
Parâmetros¶
- dev: instância de dispositivo printer criada a partir de Printer#create;
Retorno¶
true em caso de sucesso ou false indicando erro.
setFont¶
Printer#setFont(fontName)
Seta a fonte de impressão. Obs.: Atualmente esta função é suportada apenas em terminais PAX S920
Parâmetros¶
- fontName: string com o nome da fonte (a fonte deve estar carregada no terminal)
Retorno¶
true em caso de sucesso ou false caso a fonte não esteja carregada.
setFontSize¶
Printer#setFontSize(fontName, width, height)
Seta a fonte e o tamanho da altura e largura dos caracteres.
Obs.: Atualmente esta função é suportada apenas em terminais PAX S920.
Parâmetros¶
- fontName: string com o nome da fonte a ser utilizada.
- width: tamanho da largura dos caracteres.
- height: tamanho da altura dos caracteres.
Retorno¶
true em caso de sucesso ou false em caso de erro.
printBC¶
Printer#printBC(dev, data)
Imprime código de barras na horizontal
Parâmetros¶
- dev : Dispositivo tipo TYPE_PRINTER
- data: Dados do tipo TYPE_STRING a serem usados para gerar o BC;
Retorno¶
true em caso de sucesso ou false em caso de erro.
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); } } }Saida:
PRINT TEST
Touch¶
| package://libs#dev/touch.wmlsc |
|---|
Interface para uso do dispositivo Touch
Sumário¶
Função Descrição create Criar device Touch add Incluir uma área sensível ao toque na tela. remove Remover uma área previamente adicionada. isSupported Indica se há suporte a touchscreen no terminal. wait Aguarda uma área registrada ser selecionda (tocada).
create¶
Touch#create(config)
Criar device Touch
Parâmetros¶
- config String vazia ("") para configuração padrão
Retorno¶
invalid ou Touch criado
add¶
Touch#add(x, y, width, height, code, beep)
Incluir uma área sensível ao toque na tela.
Parâmetros¶
- x Inteiro que representa a posição (X) horizontal em pixel.
- y Inteiro que representa a posição (Y) vertical em pixel.
- width Inteiro que representa a largura em pixel.
- height Inteiro que representa a altura em pixel.
- code Valor associado a região.
- beep Duração do beep ao tocar a área. Se for 0, nenhum beep será emitido.
Retorno¶
Id da área adicionada e invalid caso touchscreen não seja suportado ou ocorra erro.
remove¶
Touch#remove(id)
Remover uma área previamente adicionada.
Parâmetros¶
- id Inteiro que representa o ID da área.
Retorno¶
true caso encontre e remova a área ou false caso contrário.
isSupported¶
Touch#isSupported()
Indica se há suporte a touchscreen no terminal.
Retorno¶
true caso suporte e false caso não suporte.
wait¶
Touch#wait(timeout)
Aguarda uma área registrada ser selecionda (tocada).
Parâmetros¶
- timeout Inteiro que representa o tempo de espera (ms).
Retorno¶
Id da área selecionada, -1 em timeout e invalid caso touchscreen não seja suportado ou ocorra erro.
Exemplos¶
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("Toque detectado"); } else { Dialogs.alert("Nenhuma area foi tocada"); } Touch#remove(id); } } } }Saida:
Toque detectado
VM¶
Implementa scripts de uso geral da VM (Virtual Machine). Máquina Virtual proprietária responsável pela interpretação dos scripts compilados e instalados no dispositivo.
Core¶
Script Descrição Call Fornece funções para execução direta de scripts. Init Fornece funções para interpretação de arquivos .ini Map Fornece funções para manipulação de listas mapeadas (chave, valor) iniFile Fornece funções para manipulação de listas mapeadas (chave, valor)
Call¶
| package://vm#core/call.wmlsc |
|---|
Sumário de Funções¶
Função Descrição call Executa diretamente uma função em um script. getModule Extrai o módulo da string informada como parâmetro getFunction Extrai a função da string informada como parâmetro
call¶
Call#call (function_path, params); Executa diretamente uma função em um script. A função obrigatoriamente deve conter o modificador extern em sua assinatura
Parâmetros¶
- function_path - string contendo o pacote com o script e a função a ser executada no formato package://pacote/script.wmlsc# funcao
- params - PhList contendo os parâmetro a serem passados para a função.
Retorno¶
invalid em caso de falha ou o retorno espeífico da função executada.
getModule¶
Call#getModule (function_path, default_module); Extrai o módulo da string informada como parâmetro
Parâmetros¶
- function_path - string contendo o pacote com o script e a função a ser executada no formato package://pacote/script.wmlsc# funcao
- default_module - módulo default que será retornado caso a função não consiga extrair o módulo do path.
Retorno¶
módulo extraído ou default_module
getFunction¶
Call#getFunction (function_path); Extrai a função da string informada como parâmetro
Parâmetros¶
- function_path - string contendo o pacote com o script e a função a ser executada no formato package://pacote/script.wmlsc# funcao
Retorno¶
invalid em caso de falha ou a string com a função extraída de function_path
Exemplo¶
use url Call "package://vm#core/call.wmlsc"; /*Funcao que sera executada via chamada call */ extern function exibeAlert() { Dialogs.alert("Executando atraves da chamada 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, []); }Saída¶
Modulo: package://scripttest/doc.wmlsc function: exibeAlert Executando atraves da chamada call
Init¶
| package://vm#core/init.wmlsc |
|---|
Implementação de um parser de arquivos INI. Através dessa api é possível carregar um aarquivo ini para um objeto Map.
Constantes Descrição Init#G_PHVM_INI_FILENAME retorna o nome do arquivo ini "PHVM.INI"
Sumário de Funções¶
Função Descrição getSession Retorna as chaves e valores de uma sessão.
getSession¶
Init#getSession (stream, session); Retorna as chaves e valores de uma sessão.
Parâmetros¶
- stream - vm#stream com os dados.
- session - Nome da sessão a ser recuperado o valor da chave.
Retorno¶
map com chave,valor ou invalid em caso de erro.
Veja: map.wmlsc
Exemplo¶
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("Sessao nao encontrada"); } else Dialogs.alert("Nao foi possivel abrir o arquivo"); }Saída¶
Skin: VX690;
Map¶
| package://vm#core/map.wmlsc |
|---|
Map é uma das implementações que compõem o core dos scripts de uso geral da VM (Virtual Machine). Sendo responsável pelo provimento de funções que viabilizam a manipulação de listas mapeadas (chave, valor). Um objeto Map é um simples mapa de chave/valor que pode ter seus elementos iterados por ordem de inserção. Abaixo listamos as funções nativas de Map e um exemplo descritivo da implementação dessas funções.
Sumário de Funções¶
Função Descrição create Cria um map (lista mapeada com chave, valor) isMap Verifica se o objeto informado é um map put insere um ítem (chave, valor) no map get recupera um valor do map remove remove um ítem do map keys retorna as chaves que constam no map values retorna os valores que constam no map size retorna a quantidade de itens no map isEmpty Verifica se o map está vazio putOrder Insere ítens ordenadamente no map concat Concatena um map em outro map
create¶
Map#create()
Cria um objeto map (lista mapeada com chave, valor).
Parâmetros¶
Não há.
Retorno¶
Map criado.
isMap¶
Map#isMap(map)
Verifica se o objeto informado é um map.
Parâmetros¶
- map - objeto map criado através de #create();
Retorno¶
true se o objeto informado é um map. false se o objeto não é um map.
put¶
Map#put(map, key, value)
Insere um ítem (chave, valor) no map. Se o ítem já existir será sobreposto.
Parâmetros¶
- map - objeto map criado através de #create();
- key - Chave para o valor (value);
- value - valor que se deseja salvar;
Retorno¶
true sucesso ou false em caso de falha;
get¶
Map#get(map, key)
Recupera um valor do map conforme a chave informada.
Parâmetros¶
- map - objeto map criado através de #create();
- key - Chave para o valor (value);
Retorno¶
invalid no caso de erro ou o valor da chave.
remove¶
Map#remove(map, key)
Mediante a passagem de uma chave do Map o valor é removido.
Parâmetros¶
- map - objeto map criado através de #create();
- key - Chave para o valor (value);
Retorno¶
true sucesso ou false em caso de falha;
keys¶
Map#keys(map)
Retorna as chaves que constam no map.
Parâmetros¶
- map - objeto map criado através de #create();
Retorno¶
PhList com com as chaves que existem no map.
values¶
Map#values(map)
Retorna os valores que constam no map.
Parâmetros¶
- map - objeto map criado através de #create();
Retorno¶
PhList com com os valores que existem no map.
size¶
Map#size(map)
Retorna a quantidade de itens no map.
Parâmetros¶
- map - objeto map criado através de #create();
Retorno¶
inteiro com a quantidade de ítens.
isEmpty¶
Map#isEmpty(map)
Verifica se o map está vazio.
Parâmetros¶
- map - objeto map criado através de #create();
Retorno¶
true em caso de sucesso ou false em caso contrário.
putOrder¶
Map#putOrder(map, key, value)
Insere ítens ordenadamente no map.
Parâmetros¶
- map - objeto map criado através de #create();
- key - Chave para o valor (value);
- value - valor que se deseja salvar;
Retorno¶
true sucesso ou false em caso de falha.
concat¶
Map#concat(map1, map2)
Concatena um map em outro map.
Parâmetros¶
- map1 - Mapa de destino que receberá novos valores;
- map2 - Mapa que será concatenado;
Retorno¶
map1 contendo os dois maps ou invalid em caso de erro.
Exemplo:¶
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, "Chave1", "valor1"); Map#put(map, "Chave2", "valor2"); Map#put(map, "Chave3", "valor3"); Map#put(map, "Chave4", "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, "Chave3"); 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, "Chave1"); Dialogs.alert(key); } }Saída¶
Map valido Map está vazio Qtd de itens: 4 Chave1 Chave2 Chave3 Chave4 Valor1 Valor2 Valor3 Valor4 Valor1 Valor2 Valor4 Chave1 = valor1 Chave2 = valor2 Chave4 = valor4 key1 = value1 key2 = value2 valor1
iniFile¶
| package://vm#core/inifile.wmlsc |
|---|
Interface para leitura e escrita de arquivos INI.
Sumário de Funções¶
Função Descrição create Cria um stream de um arquivo ini para leitura e escrita. Retorna um map - phast#utils/map. getSession Retorna as chaves e valores de uma sessão. getSection Retorna as chaves e valores de uma sessão a partir de um map - phast#utils/map. readSectionsFromStream Retorna um Map com os nome das sessão na propriedade key a partir de um stream do arquivo. readSections Retorna uma PhList com os nome das sessão na propriedade key. sectionExists Verifica se a sessao existe. Retorna true ou false. deleteSection Retorna as chaves e valores de uma sessão. addSection Adiciona uma sessão ao map que representa o arquivo ini. addSectionWithValue Adiciona uma sessão com chave/valor ao map que representa o arquivo ini. deleteKey Remove uma chave do map que representa o arquivo ini. KeyExists Verifica se a sessao existe. Retorna True ou False. getString String ou invalid em caso de erro. setString Atribuí um valor string a uma chave. Retorna boolean true/false setInteger Atribuí um valor integer a uma chave. Retorna boolean true/false getInteger Retorna integer ou invalid em caso de erro. flush Método que escreve os dados do map que representa o ini em mémoria no arquivo físico.
create¶
IniFile#create (fileName); Cria um stream de um arquivo ini para leitura e escrita. Retorna um map - phast#utils/map.
Parâmetros¶
- fileName - string com o nome do arquivo.
Retorno¶
map com chave,valor ou invalid em caso de erro.
Veja: map.wmlsc
Exemplo¶
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("sessao name: " + String.toString(sNameSection[i]), 1); } }
getSession¶
IniFile#getSession (stream, session); Retorna as chaves e valores de uma sessão.
Parâmetros¶
- stream - vm#stream com os dados.
- session - Nome da sessão a ser recuperado o valor da chave.
Retorno¶
map com chave,valor ou invalid em caso de erro.
Veja: map.wmlsc
Exemplo¶
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("Sessao nao encontrada"); } else Dialogs.alert("Nao foi possivel abrir o arquivo"); }Saída¶
Skin: VX690;
getSection¶
IniFile#getSection (map, sessionName); Retorna as chaves e valores de uma sessão a partir de um map que representa o arquivo ini.
Parâmetros¶
- map - map - phast#utils/map
- sessionName - Nome da sessão a ser recuperado o valor da chave.
Retorno¶
map com chave,valor ou invalid em caso de erro.
Veja: map.wmlsc
Exemplo¶
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); Retorna um Map com os nome das sessão na propriedade key a partir de um stream do arquivo.
Parâmetros¶
- stream vm#stream com os dados
Retorno¶
map com chave,valor ou invalid em caso de erro.
Veja: map.wmlsc
Exemplo¶
Vide exemplo SampleIni do SDK.
readSections¶
IniFile#readSections (map); Retorna um Map com os nome das sessão na propriedade key a partir de um stream do arquivo.
Parâmetros¶
- map - map phast#utils/map com os dados do arquivo ini carregado a partir do método create
Retorno¶
PhList com as chaves ou invalid.
Exemplo¶
Vide exemplo SampleIni do SDK.
sectionExists¶
IniFile#sectionExists (map, sectionName); verifica se a sessao existe. Retorna True ou False.
Parâmetros¶
- map - map phast#utils/map com os dados do arquivo ini carregado a partir do método create
- sectionName - string com o nome da sessão.
Retorno¶
Boolean true/false
Exemplo¶
Vide exemplo SampleIni do SDK.
deleteSection¶
IniFile#deleteSection (map, sectionName); Remove a sessão do map que representa o arquivo ini.
Parâmetros¶
- map - map phast#utils/map com os dados do arquivo ini carregado a partir do método create
- sectionName - string com o nome da sessão.
Retorno¶
boolean true/false
Exemplo¶
Vide exemplo SampleIni do SDK.
addSection¶
IniFile#addSection (map, sectionName); Adiciona uma sessão ao map que representa o arquivo ini.
Parâmetros¶
- map - map phast#utils/map com os dados do arquivo ini carregado a partir do método create
- sectionName - string com o nome da sessão.
Retorno¶
boolean true/false
Exemplo¶
Vide exemplo SampleIni do SDK.
addSectionWithValue¶
IniFile#addSectionWithValue (map, sectionName, keyValues); Adiciona uma sessão com chave/valor ao map que representa o arquivo ini.
Parâmetros¶
- map - map phast#utils/map com os dados do arquivo ini carregado a partir do método create
- sectionName - string com o nome da sessão.
- keyValues - map phast#utils/map que representa a informação chave e valor da sessão.
Retorno¶
boolean true/false
Exemplo¶
Vide exemplo SampleIni do SDK.
deleteKey¶
IniFile#deleteKey (map, sectionName, keyValues); Remove uma chave do map que representa o arquivo ini.
Parâmetros¶
- map - map phast#utils/map com os dados do arquivo ini carregado a partir do método create
- sectionName - string com o nome da sessão.
- keyValues - map phast#utils/map que representa a informação chave e valor da sessão.
Retorno¶
boolean true/false
Exemplo¶
Vide exemplo SampleIni do SDK.
KeyExists¶
IniFile#KeyExists (map, sectionName, key); Verifica se a sessao existe. Retorna True ou False.
Parâmetros¶
- map - map phast#utils/map com os dados do arquivo ini carregado a partir do método create
- sectionName - string com o nome da sessão.
- key - string chave a ser encontrada
Retorno¶
boolean true/false
Exemplo¶
Vide exemplo SampleIni do SDK.
getString¶
IniFile#getString (map, section, key, defaultValue); Retorna string ou invalid em caso de erro.
Parâmetros¶
- map - map phast#utils/map com os dados do arquivo ini carregado a partir do método create
- section - string com o nome da sessão.
- key - string chave a ser encontrada
- defaultValue - string com valor default que será retornado caso o valor pesquisado não seja encontrado.
Retorno¶
String
Exemplo¶
Vide exemplo SampleIni do SDK.
setString¶
IniFile#setString (map, section, key, value); Atribuí uma string ao map que representa o arquivo ini.
Parâmetros¶
- map - map phast#utils/map com os dados do arquivo ini carregado a partir do método create
- section - string com o nome da sessão.
- key - string chave a ser encontrada
- value - string a ser atribuída.
Retorno¶
Boolean true/false.
Exemplo¶
Vide exemplo SampleIni do SDK.
setInteger¶
IniFile#setInteger (map, section, key, value); Atribuí um integer ao map que representa o arquivo ini.
Parâmetros¶
- map - map phast#utils/map com os dados do arquivo ini carregado a partir do método create
- section - string com o nome da sessão.
- key - string chave a ser encontrada
- value - integer a ser atribuído.
Retorno¶
Boolean true/false.
Exemplo¶
Vide exemplo SampleIni do SDK.
getInteger¶
IniFile#getInteger (map, section, key, defaultValue); Retorna um integer ou invalid em caso de erro.
Parâmetros¶
- map - map phast#utils/map com os dados do arquivo ini carregado a partir do método create
- section - string com o nome da sessão.
- key - string chave a ser encontrada
- defaultValue - string com valor default que será retornado caso o valor pesquisado não seja encontrado.
Retorno¶
Integer
Exemplo¶
Vide exemplo SampleIni do SDK.
flush¶
IniFile#flush (ini); Método que escreve os dados que esta do map que representa o ini em mémoria no arquivo físico. Para que as alterações realizadas sejam persistidas fisicamente é necessário executar esse método.
Parâmetros¶
- ini - map phast#utils/map com os dados do arquivo ini carregado a partir do método create
Retorno¶
void
Exemplo¶
Vide exemplo SampleIni do SDK.
Stream¶
Script Descrição StreamBuffer Direciona fluxo de dados (stream) para buffers StreamData Permite leitura e escrita de tipos nativos em streams de dados StreamEndian Implementa envio de dados big endian em stream de dados StreamFile Fornece abstração de leitura e escrita de arquivos Gzip Fornece abstração de leitura e escrita no formato GZ StreamPhTAR Fornece abstração de leitura e escrita no formato TAR Stream Fornece interface padrão para leitura e escrita de dados
StreamBuffer¶
| package://vm#stream/bfwriter.wmlsc |
|---|
StreamBuffer é uma das implementações que compõem o core dos scripts de uso geral da VM (Virtual Machine). Sendo responsável pelo provimento de funções que viabilizam cópia de dados no buffer, a escrita dos mesmos e o controle do fluxo dessa operação. Abaixo listamos as funções nativas de StreamBuffer e um exemplo descritivo da implementação dessas funções.
Sumário de Funções¶
Função Descrição create Decora um stream para cópia de dados em buffer. write Escrita de dados em buffer, os dados são enviados pelo flush. flush Envia dados em memória para o destino correto. Constantes¶
Constantes Valor StreamBuffer#FLUSH_NONE 0 StreamBuffer#FLUSH_READ 1 StreamBuffer#FLUSH_WRITE 2 StreamBuffer#FLUSH_ALL 3
create¶
StreamBuffer#create(stream);
Decora (prepara) um stream para cópia de dados em buffer.
Parâmetros¶
- stream - stream já existente;
Retorno¶
Stream decorado para escrita em buffer.
write¶
StreamBuffer#write(self, buffer)
Escrita de dados em buffer, os dados são enviados pelo flush.
Parâmetros¶
- self - controlador de stream previamente criado por StreamBuffer#create;
- buffer - com os dados que se deseja enviar;
Retorno¶
Número de bytes enviados ou -1.
flush¶
StreamBuffer#flush(stream, type)
Envia dados em memória para o destino correto.
Parâmetros¶
- stream - controlador de stream previamente criado por StreamBuffer#create;
- type - inteiro expresso por constante; - vide listagem
Retorno¶
-1 em caso de erro ou caso contrário 0.
Exemplo:¶
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("dados gravados com sucesso"); } else if(flh == -1) { Dialogs.alert("erro ao gravar!"); } } else { Dialogs.alert("falha ao gravar"); } }Saída¶
dados gravados com sucesso
StreamData¶
| package://vm#stream/data.wmlsc |
|---|
Permite leitura e escrita de tipos nativos em streams de dados.
Formatos¶
Constantes Descrição Valor SHORT_BIGENDIANN Big Endian 2 bytes 0 SHORT_LITTLEENDIANN Little Endian 2 bytes 1 LONG_BIGENDIANN Big Endian 4 bytes 2 LONG_LITTLEENDIANN Little Endian 4 bytes 3
Sumário de Funções¶
Função Descrição writeString Escreve uma string no stream. readString Lê uma string do stream. writeInteger Escreve no stream um inteiro no formato indicado readInteger Lê do stream um inteiro no formato indicado writePhType Escreve no stream o tipo PhType com o formato CSTD readPhType Lê do stream o tipo PhType com o formato CSTD
writeString¶
StreamData#writeString(stream, value); Escreve uma string no stream.
Parâmetros¶
- stream - Controlador de stream previamente criado
- value - Valor que será convertido para string e copiado
Retorno¶
número de bytes copiados ou número negativo indicando o erro
readString¶
StreamData#readString(stream, length); Lê uma string do stream.
Parâmetros¶
- stream - Controlador de stream previamente criado
- length - tamanho máximo da string
Retorno¶
invalid ou a string lida
writeInteger¶
StreamData#writeInteger(stream, value, format); Escreve no stream um inteiro no formato indicado
Parâmetros¶
- stream - Controlador de stream previamente criado
- value - Valor que será convertido e copiado
- format - #ENDIANNESS
Retorno¶
número de bytes copiados ou número negativo indicando o erro
readInteger¶
StreamData#readInteger(stream, length); Lê do stream um inteiro no formato indicado
Parâmetros¶
- stream - Controlador de stream previamente criado
- length - tamanho máximo da string
Retorno¶
invalid ou o valor lido
writePhType¶
StreamData#writePhType(stream, phtype); Escreve no stream o tipo PhType com o formato CSTD
Parâmetros¶
- stream - Controlador de stream previamente criado
- phtype - Valor que será escrito
Retorno¶
número de bytes copiados ou número negativo indicando o erro
readPhType¶
StreamData#readPhType(stream, phtype); Escreve no stream o tipo PhType com o formato CSTD
Parâmetros¶
- stream - Controlador de stream previamente criado
- PhType que será ajustado com o valor lido do stream
Retorno¶
número de bytes lidos ou número negativo indicando o erro
Exemplo¶
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)); }Saída¶
Teste String 1 Teste PhType 2
StreamEndian¶
| package://vm#stream/endian.wmlsc |
|---|
Implementa envio de dados big endian em stream de dados.
Sumário de Funções¶
Função Descrição create Cria um stream decorado com big endianness. write Escreve dados no stream read Lê dados do stream available Retornar quantos bytes há no canal
create¶
StreamEndian#create(stream, format) Cria um stream decorado com big endianness.
Parâmetros¶
- stream - Controlador de stream previamente criado
- format - ver formatos stream/data
Retorno¶
Stream decorado
write¶
StreamEndian#write(self, buffer) Escreve dados no stream
Parâmetros¶
- self - Controlador de stream previamente criado
- buffer - PhBuffer com os dados que se deseja enviar
Retorno¶
numero de bytes enviados ou -1
read¶
StreamEndian#read(self, buffer) Lê dados do stream
Parâmetros¶
- self - Controlador de stream previamente criado
- buffer - PhBuffer que receberá os dados lidos
Retorno¶
numero de bytes lidos ou -1
available¶
StreamEndian#available(self) Retornar quantos bytes há no canal
Parâmetros¶
- self - Controlador de stream previamente criado
Retorno¶
numero de bytes que poderá ser lido.
Exemplo¶
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("Disponivel: " + 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))); }Saída¶
Disponivel: 12 Teste Endian
StreamFile¶
| package://vm#stream/file.wmlsc |
|---|
Fornece abstração de leitura e escrita de arquivos.
Permissões¶
Constantes Descrição StreamFile#O_CREAT Criará o arquivo vázio StreamFile#O_WRONLY Abrirá o arquivo com permissão de escrita StreamFile#O_RDONLY Abrirá o arquivo com permissão de leitura StreamFile#O_RDWR Abrirá o arquivo com permissão de leitura e escrita StreamFile#O_APPEND Abrirá o arquivo para atualização já posicionado ao final do mesmo StreamFile#O_TRUNC Abrirá o arquivo para escrita, caso exista o tamanho será 0 StreamFile#O_CODEFILE Indica que os bytes copiados para esse stream devem ser tratados como executável StreamFile#O_RAWNAME Forçar API usar exatamente o nome passado para acessar o arquivo StreamFile#O_FLASH_MODE Forçar API a usar o sistema de arquivo na 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 o cache
Sumário de Funções¶
Função Descrição create Cria um novo stream para manipulação de arquivos createExt Criar um novo stream para manipulação de arquivos na flash se o terminal suportar, caso contrário cria um stream na memoria padrão erase Apagar o arquivo eraseExt Apagar o arquivo com suporte a memória flash getRealName Retorna o nome real do arquivo criado em disco rename Renomear o arquivo createVolatile Criar um novo stream para manipulação de arquivo em memoria volatil getContext retorna o nome do contexto da aplicação createDir Criar um novo diretório compress Comprime um arquivo uncompress Descomprime um arquivo
create¶
StreamFile#create(filename, mode)
Criar um novo stream para manipulação de arquivos
Parâmetros¶
- filename - O nome do recurso que será criado
- mode - Permissões do arquivo Ver Constantes
Retorno¶
Boolean - true em caso de sucesso ou false caso contrário
createExt¶
StreamFile#createExt(filename, mode)
Criar um novo stream para manipulação de arquivos na flash se o terminal suportar, caso contrário cria um stream na memoria padrão. Obs: A função também oferece suporte ao O_FLASH_MODE para Terminal Vx670
Parâmetros¶
- filename - O nome do recurso que será criado
- mode - Ver Constantes
Retorno¶
true em caso de sucesso ou false caso contrário
erase¶
StreamFile#erase(filename, mode)
Apagar o arquivo
Parâmetros¶
- filename - O nome do recurso que será criado
- mode - 0 (Zero) ou #O_RAWNAME
Retorno¶
true em caso de sucesso ou false caso contrário
eraseExt¶
StreamFile#eraseExt(filename, mode)
Apagar o arquivo com suporte a memória flash
Funções de stream suportadas read/seek Obs: A função também oferece suporte ao O_FLASH_MODE para Terminal Vx670
Parâmetros¶
- filename - O nome do recurso que será criado
- mode - 0 (Zero) ou #O_RAWNAME
Retorno¶
true em caso de sucesso ou false caso contrário
getRealName¶
StreamFile#getRealName(filename)
Retorna o nome real do arquivo criado em disco
Parâmetros¶
- filename - Nome original do arquivo
Retorno¶
Invalid ou String
rename¶
StreamFile#rename(filename, newname, mode)
Renomear o arquivo
Parâmetros¶
- filename - O nome do recurso que será criado
- newName - Novo nome do arquivo
- mode - 0 (Zero) ou #O_RAWNAME
Retorno¶
true em caso de sucesso ou false caso contrário
createVolatile¶
StreamFile#createVolatile(filename) Criar um novo stream para manipulação de arquivo em memoria volatil
Funções de stream suportadas write/read/seek
Parâmetros¶
- filename - O nome do recurso que será criado. Tamanho até 4 bytes
- mode - 0 (Zero) ou #O_RAWNAME internamente oferece suporte ao O_FLASH_MODE para Terminal Vx670
Retorno¶
invalid em caso de erro ou um handle para o stream file
getContext¶
StreamFile#getContext()
retorna o contexto da aplicação em execução
Retorno¶
String que representa o nome do contexto, geralmente é um nome do app em caixa alta.
Exemplo¶
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("Arquivo renomeado"); else Dialogs.alert("Falha ao renomear"); if (StreamFile#erase("TST2", 0)) Dialogs.alert("Arquivo excluido"); else Dialogs.alert("Falha ao excluir"); }Saída¶
Arquivo renomeado Arquivo excluido
createDir¶
StreamFile#createDir(path_)
Cria um novo diretório
Parâmetros¶
- path_ - Path onde o diretório será criado
Retorno¶
Invalid ou Boolean - (true em caso de sucesso ou false caso contrário)
compress¶
StreamFile#compress(origName, destName)
Comprime um arquivo em Zip
Parâmetros¶
- origName - Nome do arquivo a ser comprimido
- destName - Nome do destido do arquivo a ser comprimido
Retorno¶
Invalid ou Boolean - (true em caso de sucesso ou false caso contrário)
uncompress¶
StreamFile#uncompress(origName, destName)
Descomprime um arquivo Zip
Parâmetros¶
- origName - Nome do arquivo a ser descomprimido
- destName - Nome do destido do arquivo a ser descomprimido
Retorno¶
Invalid ou Boolean - (true em caso de sucesso ou false caso contrário)
Gzip¶
| package://vm#stream/gzip.wmlsc |
|---|
Fornece abstração de leitura e escrita no formato GZ.
Sumário de Funções¶
Função Descrição create Criar um novo stream para manipulação de arquivos dentro do gzip createExt Criar um novo stream para manipulação de arquivos dentro do gzip processed Retorna o offset do arquivo. flushWrite Transforma o stream em Gzip.
Funções¶
create¶
Gzip#create(stream, buffered) Criar um novo stream para manipulação de arquivos dentro do gz
Funções de stream suportadas read/seek
Parâmetros¶
- stream - Controlador de stream a ser decorado
- buffered - Indicará o tamanho do buffer interno de trabalho
Retorno¶
invalid em caso de erro ou um handle para o stream gz
Exemplo¶
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 criado com sucesso"); else Dialogs.alert("Falha ao criar o Gzip"); }Saída¶
Gzip criado com sucesso
createExt¶
Gzip#createExt(stream, buffered, isWrite) Criar um novo stream para manipulação de arquivos dentro do gz
Funções de stream suportadas read/seek
Parâmetros¶
- stream - Controlador de stream a ser decorado
- buffered - Indicará o tamanho do buffer interno de trabalho
- isWrite - Boolean - Indica se há permissão para escrita.
Retorno¶
invalid em caso de erro ou um handle para o stream gz
processed¶
Gzip#processed(stream) Retorna o offset do arquivo.
Parâmetros¶
- stream - Controlador de stream
Retorno¶
invalid ou o número de bytes para o deslocamento(offset)
flushWrite¶
Gzip#flushWrite(stream) Transforma o stream em Gzip.
Parâmetros¶
- stream - Controlador de stream
Retorno¶
invalid
StreamPhTAR¶
| package://vm#stream/phtar.wmlsc |
|---|
Abstração para escrita e leitura no formato TAR.
Sumário de Funções¶
Função Descrição create Criar um novo stream para leitura de arquivos dentro do tar first Ajusta para que os bytes lidos sejam do primeiro arquivo no tar next Ajusta para o próximo arquivo no tar add Adiciona um arquivo ao tar
create¶
StreamPhTAR#create(stream) Criar um novo stream para leitura de arquivos dentro do tar
Parâmetros¶
- stream - Stream no qual há os bytes referentes ao TAR
Retorno¶
invalid em caso de erro ou um handle para o stream
first¶
StreamPhTAR#first(tarstream); Ajusta para que os bytes lidos sejam do primeiro arquivo no tar
Também limpará os erros das etapas anteriores
Parâmetros¶
- stream - Controlador do stream TAR
Retorno¶
invalid em caso de erro ou o nome do arquivo que está sendo lido no stream tar
next¶
StreamPhTAR#next(tarstream); Ajusta para o próximo arquivo no tar
Também limpará os erros das etapas anteriores
Parâmetros¶
- stream - Controlador do stream TAR
Retorno¶
invalid em caso de erro ou o nome do arquivo que está sendo lido no stream tar
Exemplo¶
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 criado com sucesso"); var nome = TAR#first(tar); Dialogs.alert("nome: " + nome); nome = TAR#next(tar); Dialogs.alert("nome: " + nome); } else Dialogs.alert("Falha ao criar o Tar"); }Saída¶
Tar criado com sucesso nome: arquivo1 nome: arquivo2
add¶
StreamPhTAR#add(tarstream, path, filename); Adiciona um arquivo ao tar
Parâmetros¶
- stream - Controlador do stream TAR
- path - Diretório do arquivo
- fileName - Nome do arquivo.
Retorno¶
invalid ou boolean
Stream¶
| package://vm#stream/stream.wmlsc |
|---|
Interface padrão para operações de escrita e leitura de dados.
Tipos Operações¶
Constantes Descrição Stream#OPERATION_WRITE Operação de escrita está sendo executada Stream#OPERATION_READ Operação de leitura está sendo executada Stream#OPERATION_NOP Operação de espera, usado para espera de dados
Tipos de Flush¶
Constantes Descrição Stream#FLUSH_NONE Apenas liberar recursos Stream#FLUSH_READ Descarregar bytes a serem lidos Stream#FLUSH_WRITE Descarregar bytes já escritos Stream#FLUSH_ALL Descarregar todos
Navegação no Stream¶
Constantes Descrição Stream#SEEK_SET Move o ponteiro de arquivo para o início Stream#SEEK_CUR Posição corrente do ponteiro de arquivo Stream#SEEK_END Move o ponteiro de arquivo para o fim
Erros¶
Constantes Descrição Stream#E_SUCCESS Sucesso Stream#E_CANCELED Cancelamento Stream#E_TIMEOUT Timeout Stream#E_UNKNOW Erro desconhecido Stream#E_NO_DATA Sem dados Stream#E_POS_INV Posição inválida Stream#E_ER_OP_INV Operação não suportada pelo stream Stream#E_ER_WRITE Erro de escrita Stream#E_ER_READ Erro de leitura Stream#E_ER_SCKT_BASE Erros base API de socket
Sumário de Funções¶
Função Descrição create Criar um stream de dados read Leitura de dados do stream write Escrita de dados do stream seek Move o ponteiro no stream flush Enviar dados em memória para o destino correto available Indicará p numero de bytes disponiveis no stream para função de leitura copy Copia dados entre streams getType Recupera o tipo ou o módulo que implementa o stream getCustom Recupera o parâmetro customization getParent Recupera o stream pai do stream informado getTimeout Recupera o tempo de espera na leitura/escrita de dados setTimeout Ajusta o tempo de espera na leitura/escrita de dados getLastError Recuperar o código de erro da ultima operação sobre o stream setLastError Definir o código de erro da ultima operação sobre o stream setFeedback Ajustar o módulo que tem o tratamento de feedback getFeedback Recuperar o módulo que trata o feedback feedback Função de callback para casos de operações de grande custo
create¶
Stream#create(stream, source, customization); Criar um stream de dados
Parâmetros¶
- stream - Stream a ser decorado ou invalid
- source PhFile | PhComm | PhBuffer | Módulo em script que implementará operações no stream
- customization - Será mantido no stream podendo ser recuperado por getCustom(stream)
Retorno¶
invalid ou stream criado
read¶
Stream#read(stream, buffer, start, length); Leitura de dados do stream
Parâmetros¶
- stream - Controlador de stream previamente criado
- buffer - Deverá ser um PhBuffer que receberá os dados
- start - Posição no buffer que receberá o primeiro byte
- length - Quantidade de bytes que deverá ser copiado
Retorno¶
número de bytes lidos ou número negativo indicando o erro
write¶
Stream#write(stream, buffer, start, length); Escrita de dados no stream
Parâmetros¶
- stream - Controlador de stream previamente criado
- buffer - Deverá ser um PhBuffer que fornecerá os dados
- start - Posição no buffer que será lido o primeiro byte
- length - Quantidade de bytes que deverá ser copiado
Retorno¶
return número de bytes copiados ou número negativo indicando o erro
seek¶
Stream#seek(stream, offset, origin); Move o ponteiro no stream
Parâmetros¶
- stream - Controlador de stream previamente criado
- offset - Numero de bytes para o deslocamento
- origin - Ponto de partida para o deslocamento
Retorno¶
Numero de bytes deslocados ou negativo com o código de erro.
Validar se o status não é PHSTREAM_ER_OP_INV
flush¶
Stream#flush(stream, type); Enviar dados em memória para o destino correto
Parâmetros¶
- stream - Controlador de stream previamente criado
- type - Tipo de flush
Retorno¶
true se obteve sucesso, caso contrário false
available¶
Stream#available(stream); Indicará o numero de bytes disponiveis no stream para função de leitura
Parâmetros¶
- stream - Controlador de stream previamente criado
Retorno¶
Inteiro com o numero de bytes que pode ser lido
copy¶
Stream#copy(outStream, inStream, length, block); Copia length dados do inStream para outStream
As posições atuais nos streams serão respeitadas
Parâmetros¶
- outStream - Destino para os bytes em istream
- inStream - Fonte dos bytes que serão copiados para outStream
- length - Número de bytes que devem ser copiados
- block - Tamanho dos blocos a serem copiados
Retorno¶
Inteiro com o numero de bytes copiados
getType¶
Stream#getType(stream); Recupera o tipo ou o módulo que implementa o stream
Parâmetros¶
- stream - Controlador de stream previamente criado
Retorno¶
Integer com o tipo ou String com a URI do módulo
getCustom¶
Stream#getCustom(stream); Recupera o parâmetro customization
Parâmetros¶
- stream - Controlador de stream previamente criado
Retorno¶
o valor que foi passado para customization no create
getParent¶
Stream#getParent(stream); Recupera o stream pai do stream passado
Parâmetros¶
- stream - Controlador de stream previamente criado
Retorno¶
Stream pai do stream informado no parâmetro
getTimeout¶
Stream#getTimeout(stream); Recupera o tempo de espera na leitura/escrita de dados
Parâmetros¶
- stream - Controlador de stream previamente criado
Retorno¶
inteiro em ms contendo o tempo do timeout
setTimeout¶
Stream#setTimeout(stream, timeout); Ajusta o tempo de espera na leitura/escrita de dados
Parâmetros¶
- stream - Controlador de stream previamente criado
- timeout - Tempo de espera na leitura/escrita de dados
Retorno¶
true se obteve sucesso, caso contrário false
getLastError¶
Stream#getLastError(stream); Recuperar o código de erro da ultima operação sobre o stream
Parâmetros¶
- stream - Controlador de stream previamente criado
Retorno¶
0 caso não tenha ocorrido nenhum erro registrado ou o código de erro
setLastError¶
Stream#setLastError(stream, code); Ajusta o código de erro da ultima operação sobre o stream
Parâmetros¶
- stream - Controlador de stream previamente criado
- Zero para limpar ou um código de erro válido
Retorno¶
true se obteve sucesso, caso contrário false
setFeedback¶
Stream#setFeedback(stream, module); Ajustar o módulo que tem o tratamento de feedback
Parâmetros¶
- stream - Controlador de stream previamente criado
- module - Módulo com a implementação da função: extern feedback(self, operation, step, total)
Retorno¶
true se obteve sucesso, caso contrário false
getFeedback¶
Stream#getFeedback(stream); Recuperar o módulo que trata o feedback
Parâmetros¶
- stream - Controlador de stream previamente criado
Retorno¶
módulo que trata o feedback. String vazia indicará que não há tratamento
feedback¶
Stream#feedback(stream, operation, step, total); Função de callback para casos de operações de grande custo. Essa função sempre DEVE ser NÃO blocante. No caso de cancelamento o stream ficará com o erro #PHSTREAM_CANCELED
Parâmetros¶
- stream - Controlador de stream previamente criado
- operation - pode ser #OPERATION_WRITE ou #OPERATION_READ
- step - o passo corrente dentro do total
- total - total ou zero quando não se sabe o total
Retorno¶
true para continuar o processamento ou false para cancelar
Exemplo¶
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("disponivel: " + StreamCore#available(stream)); /* Ler 10 bytes do stream */ var buffer2 = PhBuffer.create(10); StreamCore#read(stream, buffer2, 0, 10); Dialogs.alert("saida: " + 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("dados gravados com sucesso"); } else Dialogs.alert("falha ao gravar"); StreamCore#seek(stream, 0, StreamCore#SEEK_SET()); StreamCore#copy(streamext, stream, 10, 1024); StreamCore#flush(streamext); var custom = StreamCore#getCustom(streamext); Dialogs.alert("saida: " + String.toString(PhBuffer.getAsString(custom, 0, 10))); }disponivel: 106 saida: Lorem ipsu tipo:2 dados gravados com sucesso saida:Ipsum Lore
Compression¶
| package://phpacket/compression.wmlsc |
|---|
Prover interface para uso de compressão de dados.
#### Sumário de Funções
Função Descrição compression Compacta um buffer passado. unCompression Descompacta um buffer passado.
Constantes Descrição COMPRESSION_NONE() Tipo de compressão nulo. COMPRESSION_GZIP() Tipo de compressão GZiP. COMPRESSION_ZIP() Tipo de compressão ZIP.
compression¶
Compression#compression(streamIn, streamOut, Lenght, compressionType, &writed)
Comprimir os dados de entrada.
Parâmetros¶
- streamIn - Stream - Buffer a ser processado.
- streamOut - Stream - Buffer processado
- Lenght - Inteiro - Lengh dos dados a serem copiados
- compressionType - Inteiro - Tipo da compactação de acordo as constantes.
- &writed - Inteiro - armazena por referência a quantidade de bytes escritos
Retorno¶
true ou false.
Obs: "writed" contém o número de bytes escritos e o "streamOut" o Buffer processado.
Exemplo¶
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("Quantidade de bytes: "+writed); PhLog.debug("Compressão ok? "+String.toString(isCompression)); return result; }Saída
- Quantidade de bytes: 28 - Compressão ok? true
unCompression¶
Compression#unCompression(streamIn, streamOut, Lenght, compressionType)
Descompactar os dados de entrada.
Parâmetros¶
- streamIn - Stream - Buffer a ser processado.
- streamOut - Stream - Buffer processado
- Lenght - Inteiro - Lengh dos dados a serem compiados
- compressionType - Inteiro - Tipo da compactação de acordo as constantes.
Retorno¶
true ou false.
Obs: "streamOut" contém o Buffer processado
Exemplo¶
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("Descompactação ok? "+String.toString(isUnCompression)); return result; }Saída
- Descompactação ok? true
Comunicação¶
Comm¶
| package://libs#comm/comm.wmlsc |
|---|
Implementa funções para uso de comunicação.
Sumário¶
Função Descrição socket Criar um stream TCP/IP Já conectando ao destino. direct Criar um Stream de fluxo de dados direto com o device. disconnect Desconectar. Depois dessa chamada as funções de stream retornarão erro. connected Função utilitária para checar o estado da conexão. isComm Verifica se a instância é uma conexão. waitConnection Torna blocante o estabelecimento de uma conexão socket. socketListen Abre uma porta socket para escuta (não blocante). A realização da escuta é feita em background e a detecção do estabelecimento de uma conexão deverá ser observada através da função connected().
Funções¶
socket¶
Comm#socket(ip, porta, protocol, timeout, useTLS, CAfile, serverName, certName, cache)
Criar um stream TCP/IP Já conectando ao destino
- Obs. Caso socket não blocante seja suportado o mesmo será aplicado. A conexão será checada novamente no primeiro write ou read do stream
Parâmetros¶
- ip - string que representa o endereço (IPv4) da maquina destino
- port - porta destino (inteiro)
- protocol - Comm#COMM_PRTCL_TCP() ou Comm#COMM_PRTCL_UDP()
- timeout - tempo de espera em ms
- useTLS - usar protocolo de segurança TLS na comunicação
- caFile - string com o nome do certificado digital a ser utilizado com o protocolo TLS
- serverName - string com endereço do servidor
- certName - string do nome do certificado
- cache - Indica se vai usar mecanismo de cache
Retorno¶
Stream para fluxo de dados ou invalid
direct¶
Comm#direct(dev)
Criar um Stream de fluxo de dados direto com o device
Parâmetros¶
- dev - controlador do device
Retorno¶
Stream para fluxo de dados ou invalid
disconnect¶
Comm#disconnect(handle)
Desconectar o socket. Depois dessa chamada as funções de stream retornarão erro.
Parâmetros¶
- handle - criado anteriormente com Comm#socket() ou Comm#direct()
Retorno¶
não há
connected¶
Comm#connected(handle)
Função utilitária para checar o estado da conexão
Parâmetros¶
- handle - criado anteriormente com Comm#socket() ou Comm#direct()
Retorno¶
booelan indicando se o socket está ou não conectado
isComm¶
Comm#isCom(handle)
Verifica se a instancia é uma conexão
Parâmetros¶
- handle - criado anteriormente com Comm#socket() ou Comm#direct()
Retorno¶
true se for uma conexão ou false caso contrário.,
waitConnection¶
Comm#waitConnection(handle)
Torna blocante o estabelecimento de uma conexão socket
Parâmetros¶
- handle - criado anteriormente com Comm#socket() ou Comm#direct()
Retorno¶
true se conseguiu estabelecer a conexão ou false se falhou
socketListen¶
Comm#socketListen(protocol, port)
Abre uma porta socket para escuta (não blocante). A realização da escuta é feita em background e a detecção do estabelecimento de uma conexão deverá ser observada através da função Comm#connected().
Parâmetros¶
- protocol - Comm#COMM_PRTCL_TCP() ou Comm#COMM_PRTCL_UDP()
Retorno¶
Stream para fluxo de dados ou invalid
Exemplo¶
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("Conexao falhou!"); } } if (Comm#isComm(socket) && Comm#connected(socket)) { Dialogs.alert("Socket conectado com sucesso!"); 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("Vai bloquear aqui"); Comm#waitConnection(socket); Dialogs.alert("consegiu, timeout ou foi 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("conectou"); else Dialogs.alert("conexao falhou"); }Saída¶
Socket conectado com sucesso! Socket desconectado! Vai bloquear aqui consegiu, timeout ou foi cancelada conectou
Http¶
| package://libs#ms/http.wmlsc |
|---|
Disponibiliza fuções para a comunicação utilizando o protocolo Http.
Sumário¶
Função Descrição create Cria uma sessão Http request Envia uma requisição Http getInfo Recupera informações da sessão Http get Envia uma requisição utilizando o método GET post Envia uma requisição utilizando o método POST head Envia uma requisição utilizando o método HEAD put Envia uma requisição utilizando o método PUT del Envia uma requisição utilizando o método DELETE getStatusCode Retorna o código de status da resposta (ver HTTP Status Messages) getContentLength Retorna o tamanho do conteúdo da resposta. getSentLength Retorna a quantidade de dados enviados. getReceivedLength Retorna a quantidade de dados recebidos. addHeader Adiciona parametros ao Header da requisição.
Métodos Http¶
Constantes Descrição 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
Informações do Http¶
Constantes Descrição Http#STATUS_CODE Código de status da resposta (ver HTTP Status Messages) Http#CONTENT_LENGTH Retorna o tamanho do conteúdo da resposta Http#BODY_LENGTH_SENT Retorna a quantidade de dados enviados Http#BODY_LENGTH_RECEIVED Retorna a quantidade de dados recebidos
Códigos de retorno¶
Constantes Descrição Http#SUCCESS Executado com sucesso Http#UNKNOWN_ERROR Erro desconhecido Http#ERROR_INVALID_HANDLE HTTP Session invalido (ver create) Http#ERROR_SOCKET_INVALID Tentando utilizar um handle de stream inválido (ver create) Http#ERROR_SOCKET_RECV Erro ao receber os dados Http#ERROR_SOCKET_SEND Erro ao enviar os dados Http#ERROR_HEADER_RECV Erro ao receber os headers do servidor Http#ERROR_BAD_VERB Método HTTP incorreto ou não suportado Http#ERROR_LONG_INPUT Recebido parametro com tamanho maior que o suportado Http#ERROR_BAD_URL Erro no parse da url Http#ERROR_BAD_HEADER Erro ao identificar os elementos recebidos no header Http#ERROR_NOT_IMPLEMENTED Funcionalidade ainda não implementada Http#EOS Fim da mensagem no stream
create¶
Http#create(stream);
Cria uma sessão Http
Parâmetros¶
- stream handle da conexão para envio e recepção dos dados (ver Comm)
Retorno¶
Http Session criado ou invalid em caso de erro
Exemplos¶
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("Sessao Http criada"); } } } }Saida:
Sessao Http criada
request¶
Http#request(httpSession, method, requestUrl, output, data);
Envia uma requisição Http
Parâmetros¶
- httpSession Handle para Http Session criado
- method Metodo Http que sera utilizado na requisição
- requestUrl Endereço do recurso desejado
- output Stream de saida para recepção dos dados
- data String contendo os dados para envio ao servidor
Retorno¶
Inteiro com o codigo de erro do request (0 == SUCCESS).
Exemplos¶
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)); } } } }Saida:
Response: respostaTeste Size: 13
getInfo¶
Http#getInfo(httpSession, info);
Recupera informações da sessão Http
Parâmetros¶
- httpSession Handle para Http Session criado
- info Codigo da informação desejada
Retorno¶
Informação desejada ou invalid em caso de erro
Exemplos¶
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())); } } } }Saida:
Status Code: 200
get¶
Http#get(httpSession, requestUrl, output, params)
Envia uma requisição utilizando o método GET
Parâmetros¶
- httpSession Handle para Http Session criado
- requestUrl Endereço do recurso desejado
- output Stream de saida para recepção dos dados
- params Map contendo parametros a serem enviados
Retorno¶
Inteiro com o codigo de erro do request (0 == SUCCESS).
Exemplos¶
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("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); }Saida:
Response: {"name":"testandoGet"} Status code: 200
post¶
Http#post(httpSession, requestUrl, output, params, data)
Envia uma requisição utilizando o método POST
Parâmetros¶
- httpSession Handle para Http Session criado
- requestUrl Endereço do recurso desejado
- output Stream de saida para recepção dos dados
- params Map contendo os parametros a serem enviados
- data String contendo os dados para envio ao servidor
Retorno¶
Inteiro com o codigo de erro do request (0 == SUCCESS).
Exemplos¶
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("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); }Saida:
Response: {"name":"testandoPost"} Status code: 201
put¶
Http#put(httpSession, requestUrl, output, params, data)
Envia uma requisição utilizando o método PUT
Parâmetros¶
- httpSession Handle para Http Session criado
- requestUrl Endereço do recurso desejado
- output Stream de saida para recepção dos dados
- params Map contendo os parametros a serem enviados
- data String contendo os dados para envio ao servidor
Retorno¶
Inteiro com o codigo de erro do request (0 == SUCCESS).
Exemplos¶
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#put(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("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); }Saida:
Response: {"name":"testandoPut"} Status code: 201
del¶
Http#del(httpSession, requestUrl, output, params, data)
Envia uma requisição utilizando o método DELETE
Parâmetros¶
- httpSession Handle para Http Session criado
- requestUrl Endereço do recurso desejado
- output Stream de saida para recepção dos dados
- params Map contendo parametros a serem enviados
- data string contendo os dados para envio ao servidor
Retorno¶
Inteiro com o codigo de erro do request (0 == SUCCESS).
Exemplos¶
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); }Saida:
Status code: 204
head¶
Http#head(httpSession, requestUrl, output, params)
Envia uma requisição utilizando o método HEAD
Parâmetros¶
- httpSession Handle para Http Session criado
- requestUrl Endereço do recurso desejado
- output Stream de saida para recepção dos dados
- params Map contendo parametros a serem enviados
Retorno¶
Inteiro com o codigo de erro do request (0 == SUCCESS).
Exemplos¶
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)); } } } }Saida:
Response: respostaTeste Size: 13
getStatusCode¶
Http#getStatusCode(httpSession)
Retorna o código de status da resposta (ver HTTP Status Messages)
Parâmetros¶
- httpSession Handle para Http Session criado
Retorno¶
Inteiro com o codigo de erro do request (0 == SUCCESS).
Exemplos¶
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)); } } } }Saida:
Status Code: 200
getContentLength¶
Http#getContentLength(httpSession)
Retorna o tamanho do conteúdo da resposta.
Parâmetros¶
- httpSession Handle para Http Session criado
Retorno¶
Inteiro com o codigo de erro do request (0 == SUCCESS).
Exemplos¶
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)); } } } }Saida:
Content length: 13
getSentLength¶
Http#getSentLength(httpSession)
Retorna a quantidade de dados enviados.
Parâmetros¶
- httpSession Handle para Http Session criado
Retorno¶
Inteiro com o codigo de erro do request (0 == SUCCESS).
Exemplos¶
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)); } } } }Saida:
Sent length: 8
getReceivedLength¶
Http#getReceivedLength(httpSession)
Retorna a quantidade de dados recebidos.
Parâmetros¶
- httpSession Handle para Http Session criado
Retorno¶
Inteiro com o codigo de erro do request (0 == SUCCESS).
Exemplos¶
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)); } } } }Saida:
Received length: 20
addHeader¶
Http#addHeader(httpSession, requestField, value)
Adiciona campos no cabeçario de uma requisição HTTP/HTTPS.
Parâmetros¶
- httpSession Handle para Http Session criado
- requestField Campo da requisição
- value Valor atribuído ao campo da requisição
Exemplos¶
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)); } } } }Saida:
Response: 200
Mensageria¶
Json¶
| package://libs#json/json.wmlsc |
|---|
Interface para uso do parser Json (Java Script Object Notation)
Sumário¶
Função Descrição add Adiciona um ítem ao Json getAt Retorna o valor de um determinado índice do JSON create Cria um objeto Json count Retorna a quantidade de itens do objeto json ou do ítem decode Transforma a string recebida em um objeto Json decodeUTF8 Converte uma string UTF-8 para ISO-8859-1 (padrão windows) encode Transforma o objeto Json recebido em uma string no formato JSON get Retorna um ítem do Json getKey Retorna a chave de um determinado índice do JSON isJson Verifica se a instância pertence a classe JSON.
Funções¶
add¶
Json#add(json, key, value)
Adiciona um item ao Json
Parâmetros¶
- Objeto json
- Identificador do ítem requisitado
- Valor de algum tipo nativo (int, boolean ou string) ou um objeto JSON
Retorno¶
Retorna true em caso de sucesso ou false em caso de falha.
getAt¶
Json#getAt(json, index)
Retorna o valor de um determinado índice do JSON
Parâmetros¶
- json - Objeto json
- index - Index do valor
Retorno¶
Retorna o valor do índice informado no parâmetro.
create¶
Json#create()
Cria um objeto Json
Parâmetros¶
Não há
Retorno¶
Objeto Json criado
count¶
Json#count(json)
Retorna a quantidade de itens do objeto json ou do item
Parâmetros¶
Objeto json
Retorno¶
A quantidade de itens no array ou um número negativo caso o parâmetro passado não seja válido.
decode¶
Json#decode(string)
Transforma a string recebida em um objeto Json
Parâmetros¶
string no formato Json
Retorno¶
Objeto Json ou invalid caso não seja possível fazer o parse da string recebida.
decodeUTF8¶
Json#decodeUTF8(string)
Converte uma string UTF-8 para ISO-8859-1 (padrão windows) Caracteres que não possam ser convertidos serão substituídos por uma interrogação invertida
Parâmetros¶
string no formato UTF-8
Retorno¶
string no formato ISO-8859-1
encode¶
Json#encode(json)
Transforma o objeto Json recebido em uma string no formato JSON
Parâmetros¶
Objeto Json
Retorno¶
string no formato Json
get¶
Json#get(json, key)
Retorna um item do Json. Podem ser retornados itens com algum tipo nativo (int, boolean ou string) ou um objeto JSON
Parâmetros¶
- Objeto json
- Identificador do ítem requisitado
Retorno¶
O valor do item com o identificador requisitado ou invalid caso o item não exista.
getKey¶
Json#getKey(json, index)
Retorna a chave de um determinado índice do JSON
Parâmetros¶
- Objeto json
- index
Retorno¶
Retorna a chave do índice informado no parâmetro.
isJson¶
Json#isJson(json)
Verifica se a instancia pertence a classe JSON.
Parâmetros¶
Objeto json
Retorno¶
Retorna true se for um JSON e false caso contrário.
Exemplo¶
use url Json "package://libs#json/json.wmlsc"; function testeJson() { var strJson = '{' + '"botaoExemplo": {' + '"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, "botaoExemplo"); 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("Nao eh um obj json"); } else Dialogs.alert("Json invalido"); }Saída¶
{ "botaoExemplo": { "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 |
|---|
Utilitário para uso da linguagem de marcação XML
Sumário¶
Função Descrição create Criar um objeto XML. getText Obtém o texto da uma tag XML. getChild Obtém um elemento filho pelo nome. getTag Obtém o nome da tag root do objeto XML. getAttribute Obtém o valor de um atributo xml pelo nome. addChild Adiciona um elemento filho em um objeto XML. setAttribute Adicionar um atributo em um objeto XML. count Retorna a quantidade de elementos filho uma objeto XML. parse Transforma a string em um objeto XML. toString Transforma um objeto XML em uma string. childAt Obtém um elemento XML filho a partir do indice. saveToFile Salva o objeto passado em um arquivo xml. isXml Verifica se um objeto é do tipo XML.
Funções¶
create¶
XML#create(tagname);
Retorna um objeto xml.
Parâmetros¶
**tagName** - String que indica o nome da tag do objeto xml a ser criado.Exemplo:
use url XML "package://libs#xml/xml.wmlsc"; var xml = XML#create("tag"); Dialogs.alert(XML#isXml(xml));Saida:
True
getText¶
XML#getText(xmlObj);
Retorna o conteudo no objeto xml passado
Parâmetros¶
**xmlObj** - Objeto xml.Exemplo:
use url XML "package://libs#xml/xml.wmlsc"; var xml = XML#parse("<hello>Ola!</hello>"); var result = XML#getText(xml); Dialogs.alert(result);Saida:
"Ola!"
getChild¶
XML#getChild(xmlObj, "child");
Retorna o filho ou invalid caso não ache um filho com o nome passado.
Parâmetros¶
**xmlObj** - Objeto xml. **child** - Objeto xml filho que deseja pegar.Exemplo:
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));Saida:
true
getTag¶
XML#getTag(xmlObj);
Retorna o nome da tag do objeto xml passado
Parâmetros¶
**xmlObj** - Objeto xml.Exemplo:
use url XML "package://libs#xml/xml.wmlsc"; var xml = XML#create("root"); var tagName = XML#getTag(xml); Dialogs.alert(tagName);Saida:
"root"
getAttribute¶
XML#getAttribute(xmlObj, AttributeName);
Retorna o valor do atributo
Parâmetros¶
**xmlObj** - Objeto xml.AttributeName - Nome do atributo que deseja pegar o valor.
Exemplo:
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);Saida:
"2000"
addChild¶
XML#addChild(parent, child);
Adiciona um conteudo ao xml passado
Parâmetros¶
**parent** - Objeto xml pai. **child** - Conteudo a ser adicionado ao pai. Pode ser um outro objeto XML ou um textoExemplo:
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));Saida:
true "sou a tag root"
setAttribute¶
XML#setAttribute(xmlObj, chave, valor);
Adiciona um atributo ao objeto xml passado.
Parâmetros¶
**xmlObj** - Objeto xml.chave - Chave do atributo.
valor - Valor do atributo.
Exemplo:
use url XML "package://libs#xml/xml.wmlsc"; var root = XML#create("produto"); XML#setAttribute(root, "preco", "200"); Dialogs.alert(XML#getAttribute(root, "preco"));Saida:
"200"
count¶
XML#count(xmlObj);
Conta a quantidade de filhos do objeto xml passado.
Parâmetros¶
**xmlObj** - Objeto xml.Exemplo:
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));Saida:
3
parse¶
XML#parse(stringXml);
Retorna um objeto xml a partir da string passada.
Parâmetros¶
**stringXml** - String no formato xml que deseja converter para um objeto xml.Exemplo:
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));Saida:
true
toString¶
XML#toString(xml);
Transforma um objeto xml em uma string
Parâmetros¶
**xml** - Objeto xml.Exemplo:
use url XML "package://libs#xml/xml.wmlsc"; var xml = XML#create("cliente"); var nome = XML#create("nome"); XML#addChild(nome, "phoebus"); XML#addChild(xml, nome); Dialogs.alert(XML#toString(xml));Saida:
"<?xml version='1.0' encoding='UTF-8'?><cliente><nome>phoebus</nome></cliente>"
childAt¶
XML#childAt(xml, index);
Retorna o filho do xml passado baseado na posição passada.
Parâmetros¶
**xml** - Objeto xml. **index** - Posição que o filho de encontra.Exemplo:
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));Saida:
true "<?xml version='1.0' encoding='UTF-8'?><filho2></filho2>"
saveToFile¶
XML#saveToFile(xml, stream);
Salva o objeto passado em um arquivo xml. Retorna true caso consiga e false caso contrario.
Parâmetros¶
**xml** - Objeto xml. **stream** - Stream onde será salvo o objeto.Exemplo:
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;Saida:
true
isXml¶
XML#isXml(xmlObj);
Retorna true caso o parametro passado seja um objeto xml.
Parâmetros¶
**xml** - Objeto xml.Exemplo:
use url XML "package://libs#xml/xml.wmlsc"; var xml = XML#create("root"); Dialogs.alert(XML#isXml(xml));Saida:
true
Tlv¶
| package://libs#tlv/tlv.wmlsc |
|---|
Implementa suporte a tipos de dados TLV (Tag-Length-Value)
Sumário¶
Função Descrição create Cria um objeto TLV set Ajusta o valor do obejto TLV get Recupera o valor de um objeto TLV load Cria um objeto para manipulação de uma coleção TVL. Porém será adicionado os elemntos TLV presentes no stream save Serializa a coleção passada
Funções¶
create¶
Tlv#create(tag, value)
Criar um objeto TLV
Parâmetros¶
- tag - Valor da etiqueta para o dado informado
- value - PhBuffer com o valor da TAG a ser copiado
Retorno¶
Objeto tlv
set¶
Tlv#set(tlv, value)
Ajustar o valor do obejto TLV
Parâmetros¶
- tlv - Objeto a ser ajustado criado com libs#tlv/tlv# create
- value - PhBuffer com o valor da TAG a ser configurado
Retorno¶
Objeto tlv atualizado
get¶
Tlv#get(tlv)
Recuperar o valor de um objeto TLV
Parâmetros¶
- tlv - Objeto a ser ajustado criado com libs#tlv/tlv.wmlsc# create
Retorno¶
Copia dos dados em um PhBuffer
load¶
Tlv#load(stream)
Recuperar o valor de um objeto TLV
Parâmetros¶
stream - stream com os dados no formato BER-TLV
Retorno¶
invalid em caso de erro ou o manipulador da coleção
save¶
Tlv#save(stream, list)
Serializar a coleção passada
Parâmetros¶
*stream - stream que recebeá os dados no formato BER-TLV *list - Phlist para ser serializada ou objeto TLV
Retorno¶
invalid indica problemas nos parâmetros ou numero de obj serializados
Exemplo¶
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("Falha no get"); } else Dialogs.alert("result: "+String.toString(result)); } else Dialogs.alert("Falha no loadTLV"); } else Dialogs.alert("Falha ao salvar o tlv"); } else Dialogs.alert("stream invalido"); }Saída¶
valor: teste do set valor recuperado: teste do set
Utilitários¶
QRCode¶
| package://libs#qrcode/qrcode.wmlsc |
|---|
Componente para geração de QR codes (Quick Response Code)
Sumário¶
Função Descrição create Cria um objeto QR Code encode Codifica um QR Code setParam Configura algum parâmetro específico para a geração do QR Code setVersion Define a versão do QR Code setMode Define o modo de codificação dos dados de entrada para a geração do QR Code setEcLevel Define o nível de correção de erros na geração do QR Code. setMaskType Define o padrão de máscara para a geração do 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 Descrição 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 Descrição 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%
Funções¶
create¶
QRCode#create(string)
Cria um objeto QR Code conforme a string recebida como parâmetro
Parâmetros¶
string dados que serão codificados
Retorno¶
QR Code criado ou invalid caso não seja possível criar o QRCode
encode¶
QRCode#encode(qr, format, scale, stream)
Codifica um QR Code conforme os parâmetros recebidos.
Parâmetros¶
- qr - QR Code criado
- format - Formato de saída do QR codificado (ver seção de constantes)
- scale - Define o nível de ampliação do QR Code gerado (1-16)
- stream - Stream de saída para os dados codificados
Retorno¶
true em caso de sucesso, ou false caso contrario
setParam¶
QRCode#setParam(qr, param, value)
Configura algum parâmetro específico para a geração do QR Code
Parâmetros¶
- qr - QR Code criado
- param - Parâmetro a ser configurado (ver seção de constantes)
- value - Valor a ser configurado no parâmetro
Retorno¶
true em caso de sucesso, ou false caso contrario
setVersion¶
QRCode#setVersion(qr, version)
Define a versão do QR Code. As versões estão entre 1 e 40. Na versão 1, a capacidade é de 20 caracteres alfanuméricos (EC Level M). Na versão 40, a capacidade é de 3391 caracteres alfanuméricos (EC Level M).
Por padrão a versão é definida automaticamente.
Parâmetros¶
- qr - QRCode criado
- version - Inteiro (1-40) com a versão a ser utilizada.
Retorno¶
true em caso de sucesso, ou false caso contrario
setMode¶
QRCode#setMode(qr, mode)
Define o modo de codificação dos dados de entrada para a geração do QR Code.
Parâmetros¶
- qr - QRCode criado
- mode - Modo a ser utilizado (ver seção de constantes).
Retorno¶
true em caso de sucesso, ou false caso contrario
setEcLevel¶
QRCode#setEcLevel(qr, ecLevel)
Define o nível de correção de erros na geração do QR Code. A correção de erros permite que um QRCode seja decodificado mesmo que esteja parcialmente danificado.
Por padrão o nível de correção definido é EC_LEVEL_L.
Parâmetros¶
- qr - QRCode criado
- ecLevel - Nivel de correção a ser utilizado (ver seção de constantes).
Retorno¶
true em caso de sucesso, ou false caso contrario
setMaskType¶
QRCode#setMaskType(qr, maskType)
Define o padrão de máscara para a geração do QR Code.
Por padrão a máscara é definida automaticamente.
Parâmetros¶
- qr - QRCode criado
- maskType - Inteiro (0-7) com a máscara a ser utilizada.
Retorno¶
true em caso de sucesso, ou false caso contrario
Exemplo¶
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 criado com sucesso"); 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("Testes executados com sucesso"); else Dialogs.alert("Falha ao executar os testes"); } else Dialogs.alert("Falha ao codificar o QRCode"); } else { Dialogs.alert("Falha ao criar o QRCode"); } }Saída¶
QRCode criado com sucesso Testes executados com sucesso
Cron¶
| package://libs#cron/cron.wmlsc |
|---|
Fornece funções para agendamento e execução de tarefas baseadsas em relógio, similar às utilizadas em sistemas operacionais UNIX.
Sumário¶
Função Descrição cronExpression Faz o parse de uma expressão cron e cria um objeto CronExpression. cronNextFireDate Indica a próxima data/hora em que a tarefa será executada.
cronExpression¶
Cron#cronExpression(expression)
Faz o parse de uma expressão cron e cria um objeto CronExpression.
Parâmetros¶
- expression - String com a representação do novo objeto a ser criado.
Retorno¶
String com a descrição do erro ou um handle para o objeto CronExpression.
cronNextFireDate¶
Cron#cronNextFireDate(cron, afterdate)
Indica a próxima data/hora em que a tarefa será executada.
Parâmetros¶
- cron - Handle do objeto CronExpression, obtido através da função cronExpression.
- afterdate - Indica a partir de que data/hora inicial será checado o próximo evento.
Retorno¶
Datetime da próxima execução ou invalid em caso de erro.
Exemplo¶
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 * * ?"); /* Executa as 23:19 todo dia */ var datetime = Datetime#getDateTime(); /* Data e hora correntes ex: 10/04/2017 17:30:00 */ var nextDatetime = cron#cronNextFireDate(cron, datetime); Dialogs.alert("Proxima data/hora do cron: " + dateTimeAsStr("DD/MM/YY HH:MM:SS", nextDatetime)); }
Saída¶
Próxima data/hora do cron: 10/04/17 23:19:00
Regex¶
| package://libs#regex/regex.wmlsc |
|---|
Interface para uso de expressões regulares
Sumário¶
Função Descrição compile Cria um objeto Json match Transforma o objeto Json recebido em uma string no formato JSON search Transforma a string recebida em um objeto Json sub Retorna a quantidade de itens do objeto json ou do ítem
Metacaracteres suportados¶
Metacaractere Descrição \ Escape ^ Inicio da string . Qualquer caractere $ Fim da string | Alternação (ou) () Agrupamento [] Classe de caracteres * 0 ou mais ocorrências + 1 ou mais ocorrências ? 1 ou 0 ocorrência {n} Extamente n ocorrências {n,} No mínimo n ocorrências {n,m} No mínimo n e no máximo m ocorrências
Caracteres de escape¶
Caractere Descrição \t Tabulação \n Nova linha \r Retorno do cursor \f Nova página
Classes pré-definidas¶
Classe Descrição \w Alfanumérico [0-9a-zA-Z] \W Não-alfanumérico \s Espaço \S Diferente de espaço \d Dígitos (0-9) \D Não-dígitos \x Dígitos hexadecimais \X Dígitos não hexadecimais \c Caracteres de controle \C Caracteres que não sejam de controle \p Pontuação \P Não pontuação \b Limite da palavra (borda) \B Caracteres que não estejam no limite da palavra
Códigos de Erro¶
Constantes Descrição Regex#NO_MATCH Nenhuma correspondência. Regex#BADPAT Expressão inválida Regex#ECOLLATE Agrupamento inválido Regex#ECTYPE Classe de caractere desconhecida Regex#EESCAPE Escape inválido Regex#ESUBREG Referência inválida Regex#EBRACK Uso incorreto dos operadores '[]' Regex#EPAREN Uso incorreto dos operadores '()' Regex#BADBR Uso incorreto dos operadores '{}' Regex#ERANGE Conteúdo inválido em '{}' Regex#ESPACE Problemas na alocação de memória Regex#BADRPT Uso inválido dos operadores de repetição
Configurações Adicionais¶
Constantes Descrição Regex#FLAG_NONE Comportamento padrão Regex#FLAG_EXTENDED Habilitar padrões extendidos Regex#FLAG_IGNORE_CASE Não faz restrições entre maiúsculas e minúsculas Regex#FLAG_NEWLINE Trata o '\n' como um caractere de fim de linha Regex#FLAG_NOSUB Ignora subexpressões. A string deverá corresponder ao padrão inteiro. A função irá retornar 0 se uma correspondência foi encontrada e um código de erro caso contrário.
Funções¶
compile¶
Regex#compile(pattern, flags)
Compila um padrão e retorna uma instância do Regex.
Parâmetros¶
- pattern - Padrão procurado
- flags - Opções (Ver seção Configurações Adicionais)
Retorno¶
Instância do Regex, código erro (ver seção Códigos de Erro) ou invalid em caso de parâmetros incorretos
Exemplos¶
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("Padrao compilado"); } }Saida:
Padrao compilado
match¶
Regex#match(pattern, input, flags)
Validar se há ocorrencias do pattern em input.
Parâmetros¶
- pattern - String com padrão procurado ou instância do Regex (ver Regex#compile)
- input - String onde será feita a busca
- flags - Opções (Ver seção Configurações Adicionais)
Retorno¶
Índice para a próxima busca na string em caso de sucesso ou código de erro caso contrário (ver seção Códigos de Erro)
Exemplos¶
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("Padrao encontrado."); } } }Saida:
Padrao encontrado.
search¶
Regex#search(pattern, input, flags, captures)
Procura pelo padrão em pattern e retorna uma lista com as ocorrências
Parâmetros¶
- pattern - Padrão procurado
- input - String onde será feita a busca
- flags - Opções (Ver seção Configurações Adicionais)
- captures - PhType.STRINGLIST que será preenchido com as ocorrências encontradas
Retorno¶
Índice para a próxima busca na string em caso de sucesso ou código de erro caso contrário (ver seção Códigos de Erro)
Exemplos¶
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))); } } } }Saida:
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)
Substitui a ocorrência encontrada pela string em repl
Parâmetros¶
- pattern - Padrão procurado
- repl - String para substituição
- string - String onde será feita a substituição
- flags - Opções (Ver seção Configurações Adicionais)
- count - Número de ocorrências que podem ser substituidas
Retorno¶
String modificada ou código erro (ver seção Códigos de Erro)
Exemplos¶
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)); } }Saida:
newUrl: http://www.phoebus.com.br/?id=3
PhdmService¶
| package://libs#phdm/service.wmlsc |
|---|
O Phdm (Phoebus Download Manager) é o serviço responsável pelo deploy remoto de aplicações no POS.
Constantes¶
Tamanhos¶
Tamanhos definidos para o 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 Descrição PhdmService#CMD_DM_VERSION 0xA1 TAG do comando que retorna a versão da aplicação de telecarga PhdmService#CMD_DM_BOOT 0xA2 TAG do comando que realiza tratamentos especiais no boot PhdmService#CMD_DM_UPDATE 0xA3 TAG do comando que configura e executa todo o processo de telecarga PhdmService#CMD_DM_RESET 0xA4 TAG do comando que apaga todas as configurações e arquivos de download
Tags - Parâmetros de entrada¶
Constantes Valor Descrição PhdmService#TAG_DM_FRAGMENT 0x1F01 Tamanho em bytes do fragmento PhdmService#TAG_DM_HASH 0x1F02 Estratégia de verificação de integridade dos dados PhdmService#TAG_DM_COMPRESSION 0x1F03 Estratégia de compressão dos dados PhdmService#TAG_DM_TIMEOUT 0x1F04 Timeout para a recepção dos dados, em milissegundos PhdmService#TAG_DM_SIZE_HEADER 0x1F05 Tipo de tamanho enviado no cabeçalho do protocolo PhDM PhdmService#TAG_DM_INTERRUPTION_LIMIT 0x1F06 Quantidade limite de interrupções no processo de telecarga PhdmService#TAG_DM_LOGICAL_NUMBER 0x1F07 Identificação lógica do terminal PhdmService#TAG_DM_APP_VERSIONS 0x3F08 Template com pares de tags de aplicação: nome + versão PhdmService#TAG_DM_VERSION_NAME 0x1F08 Nome e versão da aplicação PhdmService#TAG_DM_LOG 0x1F0B Habilita o registro de informações durante a telecarga PhdmService#TAG_DM_APPID 0x1F10 Identificação da aplicação alvo da telecarga PhdmService#TAG_DM_PROJECTID 0x1F11 Identificação do projeto de telecarga PhdmService#TAG_DM_SITEID 0x1F12 identificação do estabelecimento PhdmService#TAG_DM_MSG_PROGRESS_TT 0x1F13 Mensagem com título de progresso PhdmService#TAG_DM_MSG_PROGRESS 0x1F14 Mensagem de progresso com cancelamento PhdmService#TAG_DM_MSG_PROGRESS_OBRG 0x1F15 Mensagem de progresso obrigatória PhdmService#TAG_DM_MSG_DEPLOY 0x1F16 Mensagem de carregamento de arquivos PhdmService#TAG_DM_MSG_INSTALL 0x1F17 Mensagem de atualização concluída
Tags - Parâmetros de saída¶
Constantes Valor Descrição PhdmService#CMD_DM_RETURN 0x3F20 Reposta para todos os comandos PhdmService#TAG_DM_RETURN 0x1F20 TAG utilizada para o retorno dos comandos PhdmService#TAG_DM_VERSION 0x1F21 Informa a versão do módulo de telecarga
Retornos dos comandos¶
Constantes Valor Descrição PhdmService#RET_DM_OK 0 Sucesso na execução da operação PhdmService#RET_DM_INVPARAM 1 Parâmetro de entrada inválido PhdmService#RET_DM_MISSPARAM 2 Faltando um parâmetro de entrada do comando PhdmService#RET_DM_NOT_CONNECTED 3 Comando enviado antes da conexão ter sido estabelecida PhdmService#RET_DM_UNAUTHORIZED 4 Telecarga não autorizada para o terminal em questão PhdmService#RET_DM_BUSY 5 Falha na telecarga devido a uma sobrecarga do sistema PhdmService#RET_DM_CONNECTION_ERROR 6 A conexão não se encontra mais estabelecida PhdmService#RET_DM_RECEIVE_TIMEOUT 7 Timeout na recepção dos dados PhdmService#RET_DM_INTERRUPTED 8 Telecarga interrompida pelo operador PhdmService#RET_DM_DEPLOY_ERROR 9 Os recursos vindos na telecarga encontram-se indisponíveis PhdmService#RET_DM_INSTALL_ERROR 10 Falha na instalação das aplicações PhdmService#RET_DM_ALLOC_MEMORY 11 Problema na alocação de memória PhdmService#RET_DM_REQUEST_ERROR 12 Problema no envio do request da telecarga PhdmService#RET_DM_RESPONSE_ERROR 13 Problema no início da resposta da telecarga
Erros¶
Constantes Valor Descrição PhdmService#RET_ERR_NOK -1 Erro na execução da operação PhdmService#RET_ERR_ACCESS -2 Sem previlégios para executar a operação com a aplicação de telecarga PhdmService#RET_ERR_MEMORY -3 Problemas ao solicitar memória PhdmService#RET_ERR_SEND -4 Não foi possível enviar o comando para a aplicação de telecarga PhdmService#RET_ERR_REC -5 Não foi possível ler o comando da aplicação de telecarga PhdmService#RET_ERR_PARAM -6 Algum parâmetro não pode ser processado na troca de comandos com a aplicação PhdmService#RET_ERR_CONNECTED -7 A aplicação já solicitou um connect com a aplicação de telecarga PhdmService#RET_ERR_OVERFLOW -8 O tamanho do comando ultrapassa o limite estabelecido PhdmService#RET_ERR_INSUFFICIENT_BUFFER -9 O tamanho do valor da tag TAG_DM_VERSION ultrapassa o tamanho do buffer alocado PhdmService#RET_ERR_EMPTY_VERSION -10 A tag TAG_DM_VERSION veio vazia
Funções¶
Sumário¶
Função Descrição init Inicializa a aplicação PhDM Client open Inicializa o meio de comunicação com a aplicação PhDM Client close Finaliza o meio de comunicação com a aplicação PhDM Client paramSet Seta um valor do tipo Byte, Word, DWord, String ou grupo de bytes em um parâmetro de entrada paramSetStrList Seta um valor template em um parâmetro de entrada cmdVersion Retorna a versão do módulo de telecarga no formato M.m.p (Major, Minor e Patch) cmdBoot Comando necessário para tratar pendências de telecargas anteriores, não concluídas cmdUpdate Inicia ou continua o processo de telecarga
init¶
PhdmService#init()
Inicializa a aplicação PhDM Client.
Parâmetros¶
Não há
Retorno¶
true em caso de sucesso e false em caso de falha.
Exemplo¶
use url PhdmService "package://libs#phdm/service.wmlsc"; function testePhdm() { var result = PhdmService#init(); if (result) { Dialogs.alert("Servico Phdm iniciado com sucesso"); } else Dialogs.alert("Falha ao iniciar o servico Phdm"); }Saída¶
Servico Phdm iniciado com sucesso
open¶
PhdmService#open()
Inicializa o meio de comunicação com a aplicação PhDM Client.
Parâmetros¶
Não há
Retorno¶
true em caso de sucesso e false em caso de falha.
Exemplo¶
use url PhdmService "package://libs#phdm/service.wmlsc"; function testePhdm() { var result = PhdmService#open(); if (result) { Dialogs.alert("Comunicacao iniciada com sucesso"); } else Dialogs.alert("Falha ao iniciar a comunicacao"); }Saída¶
Comunicacao iniciada com sucesso
close¶
PhdmService#close()
Finaliza o meio de comunicação com a aplicação PhDM Client.
Parâmetros¶
Não há
Retorno¶
true em caso de sucesso e false em caso de falha.
Exemplo¶
use url PhdmService "package://libs#phdm/service.wmlsc"; function testePhdm() { if (PhdmService#open()) { if (PhdmService#close()) Dialogs.alert("Comunicacao finalizada com sucesso"); else Dialogs.alert("Falha ao encerrar a comunicacao"); } else Dialogs.alert("Falha ao iniciar a comunicacao"); }Saída¶
Comunicacao finalizada com sucesso
paramSet¶
PhdmService#paramSet(tag, value)
Seta um valor do tipo Byte, Word, DWord, String ou grupo de bytes em um parâmetro de entrada.
Parâmetros¶
- tag - Valor da TAG que deve ser do tipo template
- value - PhType com valor para a tag
Retorno¶
true em caso de sucesso e false em caso de falha.
Exemplo¶
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("Parametro setado com sucesso"); } else Dialogs.alert("Falha ao setar o parametro"); }Saída¶
Parametro setado com sucesso
paramSetStrList¶
PhdmService#paramSetStrList(tag, value)
Seta um valor template em um parâmetro de entrada.
Cria a TAG que tem como dado uma lista de tags com o mesmo valor porém do tipo primitivo
Parâmetros¶
- tag - Valor da TAG que deve ser do tipo template
- values - Lista com valores das tags primitivas
Retorno¶
true em caso de sucesso e false em caso de falha. invalid em caso de erro.
Exemplo¶
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("Parametro setado com sucesso"); } else Dialogs.alert("Falha ao setar o parametro"); }Saída¶
Parametro setado com sucesso
cmdVersion¶
PhdmService#cmdVersion()
Retorna a versão do módulo de telecarga no formato M.m.p (Major, Minor e Patch); por exemplo, "1.0.0".
Parâmetros¶
Não há
Retorno¶
version String com a versão do módulo de telecarga, no formato M.m.p (Major, Minor e Patch), por exemplo, "1.0.0". (previamente alocado). Ou invalid em caso de erro.
Exemplo¶
use url PhdmService "package://libs#phdm/service.wmlsc"; function testePhdm3() { var version = PhdmService#cmdVersion(); if (isvalid version) { Dialogs.alert("Versao recuperada com sucesso"); } else Dialogs.alert("Falha ao recuperar a versao"); }Saída¶
Versao recuperada com sucesso
cmdBoot¶
PhdmService#cmdBoot()
Comando necessário para tratar pendências de telecargas anteriores, não concluídas.
Parâmetros¶
Não há
Retorno¶
true caso de sucesso, false em caso de falha no envio do comando ou invalid em caso contrário
Exemplo¶
use url PhdmService "package://libs#phdm/service.wmlsc"; function testePhdm4() { var result = PhdmService#cmdBoot(); if (result) { Dialogs.alert("Comando executado com sucesso"); } else Dialogs.alert("Falha na execucao do comando"); }Saída¶
Comando executado com sucesso
cmdUpdate¶
PhdmService#cmdUpdate()
Inicia ou continua o processo de telecarga. Se uma telecarga prévia foi interrompida, ela será continuada através desta mesma operação.
Parâmetros¶
Não há
Retorno¶
true caso de sucesso ou false em caso de falha no envio do comando e um dos seguintes valores em caso contrário:
- 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
Exemplo¶
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 executado com sucesso"); else Dialogs.alert("Falha na execucao"); PhdmService#close(); }Saída¶
Comando executado com sucesso
PhastService¶
| package://phast#applet/service.wmlsc |
|---|
É o serviço responsável por registrar e executar serviços no Phast.
Sumário¶
Função Descrição register Registrar um serviço para ser chamado pelo Phast. execute Executa o serviço que foi registrado anteriormente no Phast.
register¶
PhastService#register(service, script, func, inputs)
Registrar um serviço para ser chamado pelo Phast.
Parâmetros¶
- service - string com o nome do serviço que sera registrado.
- script - string com o módulo do script que representa o serviço que será executado.
- func - string com o nome da função que será chamada.
- inputs - lista com os parametros de entrada.
Retorno¶
void
Exemplo¶
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)
Executa o serviço que foi registrado anteriormente.
Parâmetros¶
- service - string com o nome do serviço que sera registrado.
- params - lista com os parametros do serviço.
Retorno¶
void
Exemplo¶
use url Service "package://phast#applet/service.wmlsc"; extern function tefEnabled() { Service#execute("tef.enable", [true]); }
Persistência¶
Db¶
| package://libs#db/db.wmlsc |
|---|
Implementa a manipulação de banco de dados.
Arquivos binários baseados em estruturas utilizando o padrão CSTD. CSTD (Communication Standard) é um formato de banco de dados proprietário desenvolvido pela Phoebus, que funciona como um modelo de dados hierárquico. Podendo conter uma ou mais sub-tabelas dentro de uma mesma tabela.
Sumário¶
Função Descrição open Abre uma nova conexão de banco de dados openFromStream Abre uma nova conexão de banco de dados a partir de um stream de dados insert Insere um novo registro no banco de dados getSubTable Retorna a sub tabela associada ao registro e index da table atual first Move o ponteiro do registro para o primeiro registro da tabela last Move o ponteiro do registro para o último registro da tabela next Avança o ponteiro para o próximo registro da tabela, caso exista. prior Retrocede o ponteiro para o registro anterior da tabela, caso exista. exportSubTable Exporta uma subtabela para uma nova tabela separada ou em um arquivo. count Retorna o número de registros na tabela set Persiste o registro atual com os valores encontrados em todos os campos da estrutura definida para a tabela get Recupera o registro atual da tabela e carrega os valores dos campos da estrutura definida para a tabela setField Atribui o valor ao campo na estrutura definida para a tabela getField Obtém o valor de um campo previamente carregado seek Move o registro atual para a posição determinada pelo index erase Deleta uma tabela do banco de dados recordDelete Deleta o registro atual size Retorna o tamanho físico que a tabela ocupa no dispositivo de armazenamento em bytes. recordSize Retorna o tamanho, em bytes, dos registros contidos em table recordGet Carrega os valores encontrados no registro atual para a definição da estrutura recordUpdate Atualiza o registro atual com os valores encontrados em todos os campos da estrutura definida para a table. setStruct atribui a definição da estrutura que irá conter os valores dos registros à tabela informada no parâmetro. getStruct Recupera a definição da estrutura que irá conter os valores dos registros recordNumber Retorna o número de registros da tabela getOwner Retorna o dono da tabela subTablesSize Retorna o tamanho de uma tabela e suas respectivas sub-tabelas getLFG Recupera o valor LFG insertSubTable Esta função configura uma estrutura hierárquica adicionando uma sub-tabela à tabela passada por parâmetro setLFG Atribui o valor LFG copy Copia uma tabela isDB Verifica se a instancia pertence a classe PH_DB structAsBuffer Transforma uma struct em um buffer getName Recupera o nome da tabela getItem Retorna uma cópia do registro atual apontado pelo db find Retorna o primeiro registro de um db com um id específico findNext Retorna o próximo registro de um db com um id específico getAll Retorna uma lista com todos os registros de um db. tableCopy Copia todos os registros da tabela src para a tabela dst. A cópia inclui subtables tableCopyLimit Copia limitadamente registros da tabela src para a tabela dst. A cópia inclui subtables recordCopy Copia um registro da tabela src para a tabela dst. A cópia inclui subtables filter Retorna uma lista com todos os registros de um db que passaram no critério
open¶
Db#open(stream, struct_);
Abre uma nova conexão de banco de dados. Se o arquivo não existir será criado.
Parâmetros¶
- stream - Stream para manipulação de arquivos que deve apontar para o banco de dados ou uma string com o nome do arquivo.
- struct_ PhStruct ou definição da estrutura que contém a estrutura a ser registrada. Esse parâmetro não deve conter subestruturas.
Retorno¶
Um objeto Table ou invalid se o parâmetro de entrada não for válido. false é retornado em caso de erros.
openFromStream¶
Db#openFromStream(stream, struct_)
Abre uma nova conexão de banco de dados através de um stream de dados
Parâmetros¶
- stream - Stream para manipulação de arquivos que deve apontar para o banco de dados.
- struct_ PhStruct ou definição da estrutura que contém a estrutura a ser registrada. Esse parâmetro não deve conter subestruturas.
Retorno¶
Um objeto Table ou invalid se o parâmetro de entrada não for válido. false é retornado em caso de erros.
Exemplo¶
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("tabela criada com sucesso!"); } else { Dialogs.alert("Erro na criacao da tabela"); } return tb; }Saída¶
tabela criada com sucesso!
insert¶
Db#insert(table)
Insere um novo registro no banco de dados
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de open.
Retorno¶
- true - se a inserção for feita com sucesso. false é retornado em caso de erros.
Exemplo¶
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("tabela criada com sucesso!"); } else { Dialogs.alert("Erro na criacao da tabela"); } 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 inserido com sucesso"); } else { Dialogs.alert("Falha na insercao do registro"); } } else { Dialogs.alert("Tabela invalida"); } } function main() { testeDb2(testeDb()); }Saída¶
tabela criada com sucesso! Registro inserido com sucesso
getSubTable¶
Db#getSubTable(table, index)
Retorna a sub tabela associada ao registro e index da table atual
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de open.
- index - posição da subtabela requisitada. Se um valor menor que zero é recebido, será assumido o valor zero. Da mesma forma, para um valor maior que o número de subtabelas existentes vai retornar o último existente.
Retorno¶
Um objeto table se a operação foi feita com sucesso ou invalid se um parâmetro de entrada não for apropriado ou em caso de erros.
Exemplo¶
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("Sub Tabela recuperada com sucesso"); } else { Dialogs.alert("Falha na recuperacao da subtabela"); } } else { Dialogs.alert("Tabela invalida"); } }Saída¶
Sub Tabela recuperada com sucesso
first¶
Db#first(table)
Seta o ponteiro do registro para o primeiro registro da tabela
Parâmetros¶
table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
Retorno¶
- true se a operação foi feita com sucesso. false é retornado em caso de erros.
Exemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb4(table) { if (isvalid table) { if (Db#first(table)) { Dialogs.alert("Estou no primeiro registro"); } else { Dialogs.alert("Falha na execucao do metodo first"); } } else { Dialogs.alert("Tabela invalida"); } }Saída¶
Estou no primeiro registro
last¶
Db#last(table)
Seta o ponteiro do registro para o último registro da tabela
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
Retorno¶
true se a operação foi feita com sucesso. false é retornado em caso de erros.
Exemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb5(table) { if (isvalid table) { if (Db#last(table)) { Dialogs.alert("Estou no último registro"); } else { Dialogs.alert("Falha na execucao do metodo last"); } } else { Dialogs.alert("Tabela invalida"); } }Saída¶
Estou no último registro
next¶
Db#next(table)
Avança o ponteiro para o próximo registro da tabela, caso exista
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
Retorno¶
true se a operação foi feita com sucesso. false é retornado em caso de erros.
Exemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb6(table) { if (isvalid table) { if (Db#next(table)) { Dialogs.alert("Avancei um registro"); } else { Dialogs.alert("Falha na execucao do metodo next"); } } else { Dialogs.alert("Tabela invalida"); } }Saída¶
Avancei um registro
prior¶
Db#prior(table)
Retrocede o ponteiro para o registro anterior da tabela, caso exista
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
Retorno¶
true se a operação foi feita com sucesso. false é retornado em caso de erros.
Exemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb7(table) { if (isvalid table) { if (Db#prior(table)) { Dialogs.alert("Retrocedi um registro"); } else { Dialogs.alert("Falha na execucao do metodo prior"); } } else { Dialogs.alert("Tabela invalida"); } }Saída¶
Retrocedi um registro
exportSubTable¶
Db#exportSubTable(table, index, stream)
Tabelas devem conter uma ou mais subtabelas. A função exportSubTable permite salvá-las numa nova tabela separada ou em um arquivo.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
- index - Identifica a subtabela, onde 0 é o índice do primeiro, 1 é o índice do segundo e assim por diante.
- stream - Stream para manipulação de arquivos onde a subtabela será copiada.
Retorno¶
true se a operação foi feita com sucesso. false é retornado em caso de erros.
Exemplo¶
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("sub tabela exportada com sucesso"); } else { Dialogs.alert("erro na exportacao da sub tabela"); } } else { Dialogs.alert("Erro na abertura da tabela"); } }Saída¶
sub tabela exportada com sucesso
count¶
Db#count(table)
Retorna o número de registros na tabela. Esse número é independente da posição do registro atual.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
Retorno¶
O número de registros em caso de sucesso, ou invalid se o parâmetro de entrada não for apropriado ou em caso de erros.
Exemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb9(table) { if (isvalid table) { var qtd = Db#count(table); if (qtd) Dialogs.alert("O numero de registros eh: " + String.toString(qtd)); else Dialogs.alert("Falha na execucao"); } else { Dialogs.alert("Erro na abertura da tabela"); } }Saída¶
O numero de registros eh: 1
set¶
Db#set(table)
- Persiste o registro atual com os valores encontrados em todos os campos da estrutura definida para a tabela.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
Retorno¶
*true** se a operação foi feita com sucesso. **false** é retornado em caso de erros.
Exemplo¶
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("Tabela setada com sucesso"); else Dialogs.alert("Falha na execucao do metodo"); } else { Dialogs.alert("Tabela invalida"); } }Saída¶
Tabela setada com sucesso
get¶
Db#get(table)
Recupera o registro atual da tabela e carrega os valores dos campos na estrutura definida para a tabela.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
Retorno¶
true se a operação foi feita com sucesso. false é retornado em caso de erros.
Exemplo¶
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("Nome: "+ PhStruct.get(definition, "nome")); } else Dialogs.alert('Falha na execucao do metodo'); } else { Dialogs.alert("Tabela invalida"); } }Saída¶
Nome: Teste do set
setField¶
Db#setField(table, field, value);
Atribui o valor ao campo na estrutura definida para a tabela.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
- field - Indica o campo cujo valor deve ser setado.
- value - Valor do novo campo.
Retorno¶
true se a operação foi feita com sucesso. false é retornado em caso de erros.
Exemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb12(table) { if (isvalid table) { if (Db#setField(table, "nome", "Teste SetField")) Dialogs.alert('Campo setado com sucesso'); else Dialogs.alert('Falha na execucao do metodo'); } else { Dialogs.alert("Tabela invalida"); } }Saída¶
Campo setado com sucesso
getField¶
Db#getField(table, field);
Obtém o valor de um campo previamente carregado.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
- field - Indica o campo cujo valor deve ser recuperado.
Retorno¶
O valor contido no campo especificado, em caso de sucesso. Retorna invalid se os parâmetros passados não forem válidos.
Exemplo¶
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('Nome recuperado: ' + nome); else Dialogs.alert('Falha na execucao do metodo'); } else { Dialogs.alert("Tabela invalida"); } }Saída¶
Nome recuperado: Teste do Set
seek¶
Db#seek(table, index);
Move o registro atual para a posição determinada pelo index.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
- index - Identifica a posição requisitada. O intervalo varia de 0 a (número de registros - 1). Valores fora desse intervalo serão convertidos para um dos limites.
Retorno¶
true se a operação foi feita com sucesso. false é retornado em caso de erros.
Exemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb14(table) { if (isvalid table) { if (Db#seek(table, 0)) Dialogs.alert('Estou no registro 0'); else Dialogs.alert('Falha na execucao do metodo'); } else { Dialogs.alert("Erro na abertura da tabela"); } }Saída¶
Estou no registro 0
erase¶
Db#erase(table);
Deleta uma tabela do banco de dados.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
Retorno¶
true se a operação foi feita com sucesso. false é retornado em caso de erros.
Exemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb15(table) { if (isvalid table) { if (Db#erase(table)) Dialogs.alert('Tabela excluida com sucesso'); else Dialogs.alert('Falha na execucao do metodo'); } else { Dialogs.alert("Tabela invalida"); } }Saída¶
Tabela excluida com sucesso
recordDelete¶
Db#recordDelete(table);
Deleta o registro atual e move o ponteiro para o próximo registro. Se o último registro estiver apagado, o ponteiro será movido para o registro anterior, caso exista.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
Retorno¶
true se a operação foi feita com sucesso. false é retornado em caso de erros.
Exemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb16(table) { if (isvalid table) { if (Db#recordDelete(table)) Dialogs.alert('O registro corrente foi excluido'); else Dialogs.alert('Falha na execucao do metodo'); } else { Dialogs.alert("Tabela invalida"); } }Saída¶
O registro corrente foi excluido
size¶
Db#size(table);
Retorna o tamanho físico, em bytes, que a tabela ocupa no dispositivo de armazenamento.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
Retorno¶
O tamanho da tabela ou invalid se o parâmetro de entrada não for apropriado.
Exemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb17(table) { if (isvalid table) { var size = Db#size(table); if (isvalid size) Dialogs.alert('O tamanho da tabela eh: ' + String.toString(size) + " bytes"); else Dialogs.alert('Falha na execucao do metodo'); } else { Dialogs.alert("Tabela invalida"); } }Saída¶
O tamanho da tabela eh: 45 bytes
recordSize¶
Db#recordSize(table);
Retorna o tamanho, em bytes, dos registros contidos em table
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
Retorno¶
O tamanho do registro ou invalid se o parâmetro de entrada não for apropriado.
Exemplo¶
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('O tamanho do registro eh: ' + String.toString(size) + " bytes"); else Dialogs.alert('Falha na execucao do metodo'); } else { Dialogs.alert("Tabela invalida"); } }Saída¶
O tamanho da registro eh: 44 bytes
recordGet¶
Db#recordGet(table);
Veja DB#get()
recordUpdate¶
Db#recordUpdate(table);
Veja Dbb#set()
setStruct¶
Db#setStruct(table, struct_);
atribui a definição da estrutura que irá conter os valores dos registros à tabela informada no parâmetro.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
- struct_ - Estrutura de dados que irá conter os valores dos registros. Deve ser um objeto da classe PhStruct.
Retorno¶
true se a operação foi feita com sucesso. false é retornado em caso de erros.
Exemplo¶
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("Nome: " + PhStruct.get(definition, "nome")); Dialogs.alert("Qtd: " + String.toString(PhStruct.get(definition, "qtd"))); Db#set(table); } else Dialogs.alert("Erro na redefinicao da estrutura"); } else Dialogs.alert("Tabela invalida"); }Saída¶
Codigo: 1234 Nome: Produto teste Qd: 1
getStruct¶
Db#getStruct(table);
Recupera a definição da estrutura que irá conter os valores dos registros.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
Retorno¶
Um objeto da classe PhStruct se a operação for bem sucedida. Em caso de erros, é retornado invalid.
Exemplo¶
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("Erro na recuperacao da definicao da estrutura"); } else Dialogs.alert("Tabela invalida"); }Saída¶
Codigo: 1234 Nome: Produto teste Qd: 1
recordNumber¶
Db#recordNumber(table);
Retorna o número do registro corrente na tabela.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
Retorno¶
O número do registro onde está posicionado o ponteiro de registros da tabela.
Exemplo¶
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("Estou no registro: " + String.toString(Db#recordNumber(table))); } } else Dialogs.alert("Tabela invalida"); }Saída¶
Estou no registro: 0 Estou no registro: 1
getOwner¶
Db#getOwner(table);
Retorna o proprietário da tabela. Se a tabela é o proprietário então a própria tabela é retornada.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
Retorno¶
Um objeto Table se a operação ocorrer corretamente ou invalid em caso de erro ou de parâmetro incorreto.
Exemplo¶
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("Falha ao retornar o proprietario da tabela"); } else Dialogs.alert("Tabela invalida"); }Saída¶
table: [PhDB, refCount: 3] table Owner: [PhDB, refCount: 4]
subTablesSize¶
Db#subTablesSize(table);
Retorna o tamanho de uma tabela e suas respectivas sub-tabelas.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
Retorno¶
Um número inteiro referente ao tamanho da tabela, e sub-tabelas, passada por parâmetro ou invalid caso ocorra algum erro.
Exemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb26(table) { if (isvalid table) { var size = Db#subTablesSize(table); if (isvalid size) { Dialogs.alert("Tamanho das subtables: " + String.toString(size)); } else Dialogs.alert("Erro ao retornar o tamanho das subtabelas"); } else Dialogs.alert("Tabela invalida"); }Saída¶
Tamanho das subtables: 0
getLFG¶
Db#getLFG(table, field);
Recupera o valor LFG. LFG (Large Field Group) Este grupo de campos se destina a campos geralmente grandes, em que sua completa leitura não seria possível em alguns equipamentos por falta de memória.
Na leitura do registro apenas a referência é atualizada, deixando para o programador providenciar uma forma segura de recuperar/utilizar os dados contidos nesses campos.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
- field - Objeto que representa o LFG.
Retorno¶
true em caso de sucesso e false em caso de falha.
Exemplo¶
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 com sucesso"); } else Dialogs.alert("Falha ao recuperar o campo LFG"); } else Dialogs.alert("Tabela invalida"); }Saída¶
Campo LFG recuperado com sucesso
insertSubTable¶
Db#insertSubTable(table, definition);
Esta função configura uma estrutura hierárquica adicionando uma sub-tabela à tabela passada por parâmetro. A partir deste modelo de inserção uma tabela pode ter mais de uma sub-tabela mas pode ter apenas uma tabela pai.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
- definition - Objeto do tipo PhStruct ou PhDB ou alguma definição de estrutura que contenha a estrutura a ser armazenada.
Retorno¶
Um objeto do tipo table em caso de sucesso (esta tabela representa a nova sub-tabela recém inserida) em caso de erro será retornado invalid.
Exemplo¶
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("Subtabela inserida com sucesso"); } else Dialogs.alert("Falha na insercao da subtable"); } else Dialogs.alert("Tabela invalida"); }Saída¶
Subtabela inserida com sucesso
setLFG¶
Db#setLFG(table, field);
Atribui o valor LFG. LFG (Large Field Group) Este grupo de campos se destina a campos geralmente grandes, em que sua completa leitura não seria possível em alguns equipamentos por falta de memória. Na leitura do registro apenas a referência é atualizada, deixando para o programador providenciar uma forma segura de recuperar/utilizar os dados contidos nesses campos.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia de PhDb#open() ou PhDb#getSubTable().
- field - Objeto que representa o LFG.
Retorno¶
true em caso de sucesso e false em caso de falha.
Exemplo¶
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 setado com sucesso"); } else Dialogs.alert("Falha ao setar o campo LFG"); } else Dialogs.alert("Tabela invalida"); }Saída¶
Campo LFG setado com sucesso
copy¶
Db#copy(dest, src);
Copia uma tabela.
Parâmetros¶
- dest - Objeto table resultante de uma chamada prévia do PhDB.open ou PhDB.getSubTable;
- src - Objeto table resultante de uma chamada prévia do PhDB.open ou PhDB.getSubTable;
Retorno¶
true em caso de sucesso e false em caso de falha.
Exemplo¶
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("Tabela copiada com sucesso"); } else Dialogs.alert("Falha ao copiar a tabela"); } else Dialogs.alert("Tabela invalida"); }Saída¶
Tabela copiada com sucesso
isDB¶
Db#isDB(table);
Verifica se a instancia pertence a classe PH_DB.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia do PhDB.open ou PhDB.getSubTable;
Retorno¶
true se o objeto pertence à classe PH_DB e false em caso contrário.
Exemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb30(table) { if (isvalid table) { if (Db#isDB(table)) { Dialogs.alert("O objeto pertence a classe PH_DB"); } else Dialogs.alert("O objeto nao pertence a classe PH_DB"); } else Dialogs.alert("Tabela invalida"); }Saída¶
O objeto pertence a classe PH_DB
structAsBuffer¶
Db#structAsBuffer(Struct);
Transforma uma struct em um buffer
Parâmetros¶
- Struct - referência de uma variável do tipo PhStruct
Retorno¶
buffer - buffer que receberá o conteúdo da PhStruct
Exemplo¶
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("Falha ao converter a estrutura"); } else Dialogs.alert("Falha ao recuperar a estrutura"); } else Dialogs.alert("Tabela invalida"); }Saída¶
Structure: 1234 Produto teste
getName¶
Db#getName(table);
Retorna o nome do arquivo em disco associado à tabela.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia do PhDB.open ou PhDB.getSubTable;
Retorno¶
name - string com o nome do arquivo em disco.
Exemplo¶
use url Db "package://libs#db/db.wmlsc"; function testeDb32(table) { if (isvalid table) { var nome = Db#getName(table); Dialogs.alert("Name: " + nome); } else Dialogs.alert("Tabela invalida"); }Saída¶
Name: DBTS
getItem¶
Db#getItem(table);
Retorna uma cópia do registro atual apontado pelo db. A cópia é feita para que o objeto retornado não seja alterado por manipulações futuras do db.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia do PhDB.open ou PhDB.getSubTable;
Retorno¶
struct - PhStruct com a cópia da estrutura na posição corrente de table
Exemplo¶
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)); /* * Observe que sao os mesmos dados com referencias diferentes, ou seja, e uma copia * da struct original da tabela. Sendo assim, essa struct nao afetara os dados da * struct original */ Dialogs.alert("registro da tabela: " + bufStr + " referencia: " + String.toString(structure)); Dialogs.alert("registro da tabela: " + bufStr2 + " referencia: " + String.toString(item)); } else Dialogs.alert("Falha ao recuperar os dados para a estrutura"); } else Dialogs.alert("Falha ao recuperar a definicao da tabela"); } else Dialogs.alert("Tabela invalida"); }Saída¶
registro da tabela: 1234 Produto teste referencia: [PhStruct, refCount 3] registro da tabela: 1234 Produto teste referencia: [PhStruct, refCount 2]
find¶
Db#find(table, id);
Retorna o primeiro registro de um db com um id específico. A tabela deve obrigatoriamente conter um campo nomeado "id" em sua estrutura.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia do PhDB.open ou PhDB.getSubTable;
- id - inteiro com o valor do id a ser encontrado
Retorno¶
cópia do registro na posição corrente de id ou invalid se não encontrar o registro
Exemplo¶
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 com o id " + id + " existe na tabela" ); else Dialogs.alert("Item nao encontrado"); } else Dialogs.alert("Tabela invalida"); }Saída¶
Item com o id 5 existe na tabela
findNext¶
Db#findNext(table, id);
Retorna o próximo registro de um db com um id específico. A tabela deve obrigatoriamente conter um campo nomeado "id" em sua estrutura.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia do PhDB.open ou PhDB.getSubTable;
- id - inteiro com o valor do id a ser encontrado
Retorno¶
cópia do registro na posição corrente de id ou invalid se não encontrar o registro
Exemplo¶
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 com o id " + id + " na tabela" ); } else Dialogs.alert("Item nao encontrado"); } else Dialogs.alert("Tabela invalida"); }Saída¶
Exite(m) 2 Items com o id 5 na tabela
getAll¶
Db#getAll(table);
Retorna uma lista com todos os registros de um db.
Parâmetros¶
- table - Objeto table resultante de uma chamada prévia do PhDB.open ou PhDB.getSubTable;
Retorno¶
Lista com cópia de todos registros de table
Exemplo¶
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("Tabela invalida"); }Saída¶
1234 Produto teste 1234 Produto teste 2
tableCopy¶
Db#tableCopy(dst, src);
Copia todos os registros da tabela src para a tabela dst. A cópia inclui subtables.
Parâmetros¶
- dst - Objeto table resultante de uma chamada prévia do PhDB.open ou PhDB.getSubTable;
- src - Objeto table resultante de uma chamada prévia do PhDB.open ou PhDB.getSubTable;
Retorno¶
true em caso de sucesso e false em caso de falha.
Exemplo¶
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("Tabela copiada com sucesso"); } else Dialogs.alert("Falha ao copiar a tabela"); } else Dialogs.alert("Tabela invalida"); }Saída¶
Tabela copiada com sucesso
tableCopyLimit¶
Db#tableCopyLimit(dst, src, limit);
Copia limitadamente registros da tabela src para a tabela dst. A cópia inclui subtables.
Parâmetros¶
- dst - Objeto table resultante de uma chamada prévia do PhDB.open ou PhDB.getSubTable;
- src - Objeto table resultante de uma chamada prévia do PhDB.open ou PhDB.getSubTable;
- limit - n primeiros registro a copiar
Retorno¶
true em caso de sucesso e false em caso de falha.
Exemplo¶
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("Tabela copiada com sucesso"); } else Dialogs.alert("Falha ao copiar a tabela"); } else Dialogs.alert("Tabela invalida"); }Saída¶
Tabela copiada com sucesso
recordCopy¶
Db#recordCopy(dst, src);
Copia um registro da tabela src para a tabela dst. A cópia inclui subtables.
Parâmetros¶
- dst - detino dos dados. Objeto table resultante de uma chamada prévia do PhDB.open ou PhDB.getSubTable;
- src - origem dos dados. Objeto table resultante de uma chamada prévia do PhDB.open ou PhDB.getSubTable;
Retorno¶
true em caso de sucesso e false em caso de falha.
Exemplo¶
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 com sucesso"); } else Dialogs.alert("Falha ao copiar o registro"); } else Dialogs.alert("Tabela invalida"); }Saída¶
Registro copiado com sucesso
filter¶
Db#filter(db, criteria_function, extraction_function);
Retorna uma lista com todos os registros de um db que passaram no critério da função criteria_function.
O retorno da função extraction_function serve para popular a lista retornada com dados do registro ao invés do próprio registro.
Parâmetros¶
- db - Objeto table resultante de uma chamada prévia do PhDB.open ou PhDB.getSubTable;
- criteria_function - função que controla o criterio utilizado na filtragem dos registros.
- extraction_function - função que popula a lista retornada
Retorno¶
Lista com a cópia dos registros que atendem ao critério ou invalid
Exemplo¶
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("Falha ao converter struct"); } } else Dialogs.alert("Falha ao realizar o filtro"); } else Dialogs.alert("Tabela invalida"); }Saída¶
elemento: 1235 Product teste
Cstd¶
| package://libs#db/cstd.wmlsc |
|---|
Disponibiliza funções para a comunicação utilizando o Communication Standard (encapsulamento de tabelas Db)
Sumário¶
Função Descrição create Cria uma estrutura CSTD para comunicação. getField Obtém o valor de um campo da estrutura CSTD. setField Seta o valor de um campo na estrutura definida. attachDB Anexa uma table a estrutura CSTD pack Salva o cstd em um stream unpack Carrega os dados em uma estrututa cstd a partir de um Stream size Calcula o tamanho dos dados que estão armazenados em CSTD
Constantes¶
Constante Valor Descrição Cstd#HDR_COMM 0 Identifica o cabeçalho de comunicação. Cstd#HDR_APP 1 Identifica o cabeçalho da aplicação. Cstd#MAIN_DB 2 Identifica a tabela principal.
create¶
Cstd#create(def_header, def_main )
Cria uma estrutura CSTD para comunicação
Parâmetros¶
- def_header - definição do header da aplicação
- def_main - definição do main
Retorno¶
Um objeto CSTD ou invalid se os parâmetros de entrada não forem válidos.
Exemplo¶
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 do CSTD executaram com sucesso"); } else Dialogs.alert("Erro ao criar os objetos CSTD");Saída¶
testes de create do CSTD executaram com sucesso ````
getField¶
Cstd#getField(cstd, type, field);
Obtém o valor de um campo da estrutura CSTD.
Parâmetros¶
- cstd - Objeto table resultante de uma chamada prévia do Cstd#create({}, {});
- type - #HDR_COMM, #HDR_APP, #MAIN_DB
- field - Indica o campo cujo valor deve ser recuperado.
Retorno¶
O valor contido no campo especificado, em caso de sucesso. Retorna invalid se os parâmetros passados não forem válidos.
Exemplo¶
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 com sucesso"); } else Dialogs.alert("Falha no retorno do campo"); }Saída¶
Campo recuperado com sucesso ````
setField¶
Cstd#setField(cstd, type, field, value);
Seta o valor de um campo na estrutura definida.
Parâmetros¶
- cstd - Objeto table resultante de uma chamada prévia do Cstd#create({}, {});
- type - #HDR_COMM, #HDR_APP, #MAIN_DB
- field - field Indica o campo cujo valor deve ser setado.
- value - Valor do novo campo.
Retorno¶
true se a operação foi feita com sucesso. false é retornado em caso de erros.
Exemplo¶
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 setado com sucesso"); else Dialogs.alert("falha na escrita do campo"); }Saída¶
campo setado com sucesso ````
attachDB¶
Cstd#attachDB(cstd, table);
Anexa uma table a estrutura CSTD
Parâmetros¶
- cstd - Objeto table resultante de uma chamada prévia do Cstd#create({}, {});
- table - Objeto table resultante de uma chamada prévia do PhDB#open ou PhDB#getSubTable.
Retorno¶
true se a operação foi feita com sucesso. false é retornado em caso de erros.
Exemplo¶
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("Tabela anexada com sucesso"); else Dialogs.alert("Erro ao anexar a tabela"); }Saída¶
Tabela anexada com sucesso ````
pack¶
Cstd#pack(cstd, stream);
Salva o cstd em um stream
Parâmetros¶
- cstd - Objeto table resultante de uma chamada prévia do Cstd#create({}, {});
- stream - Stream para manipulação de arquivos/buffer.
Retorno¶
true se a operação foi feita com sucesso. false é retornado em caso de erros.
Exemplo¶
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 salvo com sucesso"); else Dialogs.alert("Erro ao salvar"); }Saída¶
cstd salvo com sucesso ````
unpack¶
Cstd#unpack(cstd, stream);
Carrega os dados em uma estrutura cstd a partir de um Stream
Parâmetros¶
- cstd - Objeto table resultante de uma chamada prévia do Cstd#create({}, {});
- stream - Stream para manipulação de arquivos/buffer.
Retorno¶
true se a operação foi feita com sucesso. false é retornado em caso de erros.
Exemplo¶
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("Erro ao carregar"); else Dialogs.alert("stream carregado com sucesso"); }Saída¶
stream carregado com sucesso ````
size¶
Cstd#size(cstd);
Calcula o tamanho dos dados que estão armazenados em CSTD
Parâmetros¶
- cstd - Objeto table resultante de uma chamada prévia do Cstd#create({}, {});
Retorno¶
tamanho em bytes que estão armazenados na estrutura
Exemplo¶
use url Cstd "package://libs#db/cstd.wmlsc"; function test () { var cstd = Cstd#create("{}", "{}"); var size = cstd#size(cstd); Dialogs.alert("Tamanho dos dados: " + String.toString(size)); }Saída¶
Tamanho dos dados: 10 ````
Segurança¶
| package://libs#secSec |
|---|
Implementa funções para uso de segurança como criptografia e hash. Está dividido em 3 grupos de scripts.
- Channel
Script Descrição Channel Implementa algoritmos de criptografia sobre stream de dados
- Crypt
Script Descrição AES Implementação para uso de criptografia AES Crypt Implementa funções para criptografia DES Implementação para uso de criptografia DES RSA Implementação para uso de criptografia RSA
- Hash
Script Descrição CRC Implementação para uso de criptografia CRC DV Implementação para uso de dígito verificador HASH Implementação para uso de algoritinmos de hash MD5 Implementação para uso de criptografia MD-5 (Message Digest 5) SHA Implementação para uso de criptografia SHA (Secure Hash Algorithm)
Channel¶
| package://libs#sec#channel/channel.wmlsc |
|---|
Implementação para uso de algoritinmos de criptografia sobre stream de dados.
Sumário¶
Função Descrição create Criar um novo stream para canal seguro session Recuperar dados da sessão anterior isAvailable Indica se há suporte para criptografia sobre stream de dados
create¶
Channel#create(stream, session);
Criar um novo stream para canal seguro.
Funções de stream suportadas read/write
Parâmetros¶
- stream - Controlador de stream a ser decorad
- session - dados de uma sessão valida (pode ser invalid, criará uma sessão nova)
Retorno¶
invalid em caso de erro ou um handle para o stream seguro
session¶
Channel#session(stream);
Recuperar dados da sessão anterior.
Parâmetros¶
- stream - Controlador de stream a ser decorad
Retorno¶
PhBuffer com os dados da sessão ou invalid em caso de erro.
isAvailable¶
Channel#isAvailable();
Indica se há suporte para criptografia sobre stream de dados
Parâmetros¶
Não há
Retorno¶
invalid ou false em caso de erro ou true em caso de sucesso.
Exemplo¶
function testeChannel() { var result; var dev = DeviceEth#create(""); if (!SecStream#isAvailable()) { Dialogs.alert ("SEM suporte a 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("Sessao OK"); } } }Saída¶
Sessao OK
Crypt¶
Sumário¶
AES¶
| package://libs#sec#crypt/aes.wmlsc |
|---|
Implementação para uso de criptografia AES. Advanced Encryption Standard (Padrão de Criptografia Avançada)
veja: https://pt.wikipedia.org/wiki/Advanced_Encryption_Standard
Sumário¶
Função Descrição create Cria um controlador de criptografia AES
create¶
AES#create(mode, key)
Cria um controlador de criptografia AES.
Parâmetros¶
- mode - Crypt#ECB ou Crypt#CBC
- key - PhBuffer com 16, 24 ou 32 bytes (invalid gera randomicamente)
Retorno¶
controlador para funções em crypt.wmls
Exemplo¶
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 Criado com sucesso"); else Dialogs.alert("Falha ao criar o AES"); }Saída¶
AES Criado com sucesso
Crypt¶
| package://libs#sec#crypt/crypt.wmlsc |
|---|
Implementação de criptografia utilizando os algoritmos vistos anteriormente (AES, DES e RSA).
Sumário¶
Função Descrição encrypt criptografa os dados recebidos por parâmetro decrypt recupera os dados criptografados anteriormente com afunção crypt. reset retorna o objeto cript ao estado inicial description Recupera o nome do controlador isCrypt Validar se o controlador passado é compativel com as funções da lib crypt
encrypt¶
Crypt#encrypt(crypt, data, output, len);
Criptografa os dados recebidos por parâmetro
Parâmetros¶
- crypt - Controlador de criptografia pode ser DES ou RSA.
- data - (PhBuffer, String ou Stream) Dados a serem criptografados
- output - (PhBuffer ou Stream) Destino do dado processado
- len - (Inteiro) valor que deve ser consumido de data
Retorno¶
result invalid em caso de problema com os parâmetros ou boolean true indicando sucesso. False - erro na api de criptografia
decrypt¶
Crypt#decrypt(crypt, data, output, len);
Recupera os dados criptografados anteriormente com afunção crypt.
Parâmetros¶
- crypt - Controlador de criptografia pode ser DES ou RSA.
- data - (PhBuffer, String ou Stream) Dados a serem criptografados
- output - (PhBuffer ou Stream) Destino do dado processado
- len - (Inteiro) valor que deve ser consumido de data
Retorno¶
result invalid em caso de problema com os parâmetros ou boolean true indicando sucesso. False - erro na api de criptografia
reset¶
Crypt#reset(crypt);
Retorna o objeto cript ao estado inicial.
Usado geralmente em algoritimos como DES#CBC que é acumulativo
Parâmetros¶
- crypt - Controlador de criptografia pode ser DES ou RSA.
Retorno¶
Não há
description¶
Crypt#description(crypt);
Recupera o nome do controlador
Parâmetros¶
- crypt - Controlador de criptografia pode ser DES ou RSA.
Retorno¶
String com o nome do algoritinmo sendo usado
isCrypt¶
Crypt#isCrypt(crypt);
Validar se o controlador passado é compativel com as funções da lib crypt
Parâmetros¶
- crypt - Controlador de criptografia pode ser DES ou RSA.
Retorno¶
boolean true em caso de sucesso
Exemplo¶
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 { /* Encriptacao */ Crypt#reset(handler); if (!Crypt#encrypt(handler, input, outbuffer, String.length(input))) { Dialogs.alert("Falha na encriptacao"); return; } /* Decriptacao */ Crypt#reset(handler); if (!Crypt#decrypt(handler, out, outbuffer, outlen)) { Dialogs.alert("Falha na decriptacao"); return; } } Dialogs.alert("Testes realizados com sucesso"); }Saída¶
Testes realizados com sucesso
DES¶
| package://libs#sec#crypt/des.wmlsc |
|---|
Implementação para uso de criptografia DES. Data Encryption Standard (Padrão de Criptografia de dados)
veja: https://pt.wikipedia.org/wiki/Data_Encryption_Standard
Tipos¶
Constantes Valor DES#DES1 0x01 DES#DES3 0x02
Sumário¶
Função Descrição create Cria um controlador de criptografia DES
create¶
DES#create(type, mode, key)
Cria um controlador de criptografia DES.
Parâmetros¶
- type - #DES1 ou #DES3
- mode - Crypt#ECB ou Crypt#CBC
- key - PhBuffer com 8 até 24 bytes (invalid gera randomicamente)
Retorno¶
controlador para funções em crypt.wmls
Exemplo¶
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 Criado com sucesso"); else Dialogs.alert("Falha ao criar o DES"); }Saída¶
DES Criado com sucesso
RSA¶
| package://libs#sec#crypt/rsa.wmlsc |
|---|
Implementação para uso de criptografia RSA.
Tipos¶
Constantes Valor RSA#RSA_PKCS1_PADDING 0x02 RSA#RSA_PKCS1_OAEP_PADDING 0x03 RSA#RSA_NO_PADDING 0x00
Sumário¶
Função Descrição create Cria um controlador de criptografia RSA builtin Cria um controlador utilizando chave publica
create¶
RSA#create(module, exp, padding);
Cria um controlador de criptografia RSA.
Parâmetros¶
- module - PhBuffer ou BigInt
- exp - PhBuffer ou BigInt
- padding - #RSA_PKCS1_PADDING
Retorno¶
controlador para funções em crypt.wmls
builtin¶
Cria um controlador utilizando chave publica.
RSA#builtin(alias, padding);
Parâmetros¶
- alias - nome da chave
- padding - #RSA_PKCS1_PADDING
Retorno¶
controlador para funções em crypt.wmls
Exemplo¶
function testeRSA() { var rsa = RSA#create(PhBuffer.create("0xa5261939975948bb7a58dffe5ff54e65f0498f9175f5a09288810b8975871e99"+ "af3b5dd94057b0fc07535f5f97444504fa35169d461d0d30cf0192e307727c06"+ "5168c788771c561a9400fb49175e9e6aa4e23fe11af69e9412dd23b0cb6684c4"+ "c2429bce139e848ab26d0829073351f4acd36074eafd036a5eb83359d2a698d3"), PhBuffer.create("0x010001"), RSA#RSA_NO_PADDING()); if (isvalid rsa) Dialogs.alert("Sucesso ao criar o RSA"); else Dialogs.alert("Falha ao criar o RSA"); var rsa2 = RSA#builtin("test", RSA#RSA_NO_PADDING()); if (isvalid rsa2) Dialogs.alert("Sucesso ao criar o RSA builtin"); else Dialogs.alert("Falha ao criar o RSA builtin"); }Saída¶
Sucesso ao criar o RSA Sucesso ao criar o RSA builtin
Hash¶
Implementa algoritmos de hash criptográfico.
Veja: https://pt.wikipedia.org/wiki/MD5 https://pt.wikipedia.org/wiki/SHA-1 https://pt.wikipedia.org/wiki/CRC
Sumário¶
Script Descrição CRC Implementação para uso de criptografia CRC DV Implementação para uso de dígito verificador HASH Implementação para uso de algoritinmos de hash MD5 Implementação para uso de criptografia MD-5 (Message Digest 5) SHA Implementação para uso de criptografia SHA (Secure Hash Algorithm)
CRC¶
| package://libs#sec#hash/crc.wmlsc |
|---|
Cria um controlador CRC32 para uso com as funções do script hash.wmlsc
create¶
CRC#create(value);
Parâmetros¶
- value - valor inicial
Retorno¶
Controlador criado ou invalid em caso de falha
DV¶
| package://libs#sec#hash/dv.wmlsc |
|---|
Fornece funções para cálculo de dígitos verificadores
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);
Cria um controlador de DV baseado no módulo informado
Parâmetros¶
- codigo - código que se deseja calcular ou comparar o dígito verificador. Para o cálculo, informar o código sem o dígito. Para a checagem informar o código com o dígito.
- modulo - indica o algoritmo a ser aplicado no cálculo.
Retorno¶
o Controlador de Dígito verificador criado ou invalid em caso de erro.
calculate¶
DV#calculate(controlador);
Calcula o dígito verificador
Parâmetros¶
- controlador - controlador criado com create, o qual já possui o código a ser calculado o dígito
Retorno¶
dígito verificador calculado.
check¶
DV#check(controlador);
Realiza o cálculo do dígito verificador e compara com o informado no código.
Parâmetros¶
- controlador - controlador criado com create, o qual já possui o código a ser comparado o dígito
Retorno¶
true se o dígito informado com o código confere com o calculado.
false se o dígito informado com o código não confere com o calculado.
Exemplo¶
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 do cpf informado: " + digito); var ctrl2 = DV#create(cpf2, DV#MODULO_11_CPF()); if (DV#check(ctrl2)) Dialogs.alert("O CPF estah correto."); else Dialogs.alert("CPF invalido"); }Saída¶
Digito do cpf informado: 09 O CPF estah correto.
Hash¶
| package://libs#sec#hash/hash.wmlsc |
|---|
Fornece funções para cálculos de hash utilizando os controladores vistos acima veja:
- CRC
- MD5
- Sha
update¶
Hash#update(safe, data, len);
Atualizar o controlador com novos dados
Parâmetros¶
- safe - controlador que deve ser criado com hash API
- data - stream, string ou PhBuffer com os dados a serem computados
- len - numero de bytes que devem ser processados
Retorno¶
boolean true em caso de sucesso, invalid poderá ser retornado caso não seja possivel converter alguma parâmetro
digest¶
Hash#digest(safe);
Calcula o hash de acordo com o controlador informado.
Parâmetros¶
- safe - controlador que deve ser criado com hash API
Retorno¶
- 0 - invalid caso safe não seja valido
- 1 - PhBuffer com o hash
description¶
Hash#description(safe);
Recupera o nome do controlador.
Parâmetros¶
- safe - controlador que deve ser criado com hash API
Retorno¶
String com o nome do algoritinmo sendo usado
isHash¶
Hash#isHash(safe);
Recupera o nome do controlador.
Parâmetros¶
- safe - controlador que deve ser criado com hash API
MD5¶
| package://libs#sec#hash/md5.wmlsc |
|---|
Cria um controlador MD5 para uso com as funções do script hash.wmlsc
create¶
MD5#create();
Parâmetros¶
Não há
Retorno¶
Controlador criado ou invalid em caso de falha
SHA¶
| package://libs#sec#hash/sha.wmlsc |
|---|
Cria um controlador Sha para uso com as funções do script hash.wmlsc
create¶
SHA#create();
Parâmetros¶
Não há
Retorno¶
Controlador criado ou invalid em caso de falha
Exceções¶
Ao desenvolver na PhVM é possível que sua aplicação lançe exceções que são respostas da máquina virtual quanto ao desenvolvidomento. Segue abaixo os tipos de exceções que podem ser lançados pela PhVM:
| Tipo | Código | Descrição |
|---|---|---|
| eWIR_StackDirty | -2 | Ocorre quando em uma concorrência(threads) o script que chamou a trhead é liberado antes do final da thread. |
| eWIR_InternalError | -1 | Ocorre quando é um erro genérico não mapeado pela API |
| eWIR_OK | 0 | Uso interno da PhVM. |
| eWIR_VerificationFailed | 1 | Ocorre quando chamadas remotas passam urls ou funções que não existem. |
| eWIR_FatalLibraryFunctionError | 2 | Uso interno da PhVM. |
| eWIR_InvalidFunctionArguments | 3 | Ocorre quando o número de parametros não correspondem com o número de argumentos |
| eWIR_ExternalFunctionNotFound | 4 | Ocorre quando o método não existe ou é chamado de forma externa por outro script e o método não possuí o modificador "extern" |
| eWIR_UnableToLoadCompilationUnit | 5 | Ocorre quando a PhVm não encontrou o script compilado. Geralmente há erro no import da url. |
| eWIR_AccessViolation | 6 | Ocorre quando alguma parte do software tenta acessar um endereço de memória inválido, ou que já esteja em uso. |
| eWIR_StackUnderflow | 7 | Ocorre quando a PhVm tenta remover o objeto da pilha que ja não existe. |
| eWIR_ProgrammedAbort | 8 | Ocorre quando o usuário utiliza o método Lang.abort(). |
| eWIR_StackOverflow | 9 | Ocorre quando o número de chamadas de funções (geralmente aninhadas) superam o numero máximo da pilha 1024. |
| eWIR_OutOfMemory | 10 | Normalmente, este erro ocorre quando a aplicação consome mais memória que o limite máximo permitido pelo sistema operacional para o processo. |
| eWIR_UserInitiated | 11 | esse erro sobe quando o usuário utiliza o método Lang,exit(). |
| eWIR_SystemInitiated | 12 | Erro no processamento interno da VM não conseguiu iniciar algum dispositivo ou alocar memoria por exemplo |
Referências¶
- WAP-194, Wireless Application Protocol WMLScript Standard Libraries Specification, Version 1.3. (2000). Disponível em: http://www.wapforum.org/tech/documents/WAP-194-WMLScriptLibs-20000324-a.pdf
