Os parâmetros recebidos diretamente do dispositivo podem ser convertidos. Para isso, deve-se especificar a operação de conversão no campo Parâmetro nas propriedades do sensor. As situações em que esta operação pode ser aplicada são descritas a seguir.
Controle de parâmetro bit a bit
O controle de parâmetro bit a bit permite controlar um bit específico de um parâmetro. Esta operação é utilizada se o dispositivo apresenta dados diferentes em um parâmetro: o primeiro bit pode corresponder ao estado do alarme (ligado/desligado), o segundo ao estado da porta do motorista (aberta/fechada), o terceiro ao estado dos faróis, etc.
No sistema de monitoramento, a numeração de bits começa em 1. Para controlar, por exemplo, o terceiro bit do parâmetro param199, digite dois pontos e o número do bit após seu nome:
param199:3
Desta forma é possível criar vários sensores com base em um parâmetro para controlar diferentes bits.
Os parâmetros do tipo double são convertidos automaticamente ao tipo int, após o qual um bit é recuperado.
O controle de parâmetros bit a bit também pode ser aplicado a valores de parâmetros de 64 bits, mas considere a seguinte particularidade. Ao exibir um número com o 64º bit preenchido, esse bit é considerado como um sinal de menos para o número contido nos 63 bits restantes. Assim, os valores de parâmetro maiores que (2^63 - 1) = 9223372036854775807 são exibidos como negativos.
Conversão de parâmetros de texto
Os valores dos parâmetros de texto podem ser convertidos em números inteiros decimais. Por exemplo, se um sensor tiver um parâmetro de expressão que contenha um parâmetro de texto, o valor de texto deverá ser convertido em numérico para obter o resultado correto. Para a conversão, use o operador : (dois pontos) após o nome do parâmetro e especifique o sistema numérico do qual deseja converter o valor original em decimal. O Wialon oferece suporte à conversão dos sistemas binário, octal, decimal e hexadecimal.
Sistema numérico do valor original | Fórmula de conversão para o sistema decimal | Explicação |
Binário |
| Use essa fórmula para tratar os valores de parâmetros de texto como binários e convertê-los em decimais. Por exemplo, se o valor original for 100 (em binário), o valor final será 4 (em decimal). |
Octal |
| Use esta fórmula para tratar os valores de parâmetros de texto como octais e convertê-los em decimais. Por exemplo, se o valor original for 100 (em octal), o valor final será 64 (em decimal). |
Decimal |
| Use essa fórmula para tratar os valores de parâmetros de texto como decimais e gerá-los como tal. Por exemplo, se o valor original for 100 (em decimal), o valor final será 100. |
Hexadecimal |
| Use essa fórmula para tratar os valores de parâmetros de texto como hexadecimais e convertê-los em decimais. Por exemplo, se o valor original for 100 (em hexadecimal), o valor final será 256 (em decimal). |
Determinação do número do dia em um ano
Você pode converter a hora UNIX da mensagem para o número do dia relativo a 1º de janeiro. Para isso, crie um sensor personalizado com o parâmetro time:d.
Por exemplo, para 11:00:00 (UTC) de 28 de março de 2017, o horário do UNIX é 1490698800. Portanto,
time = 1490698800
time:d = 87
Conversão dos parâmetros dos sensores dos motoristas, reboques e passageiros
A conversão de valores de parâmetros numéricos e de texto está disponível para os tipos de sensores Vinculação de motorista, Vinculação de reboque e Sensor de passageiro. Para converter o valor de um parâmetro é necessário especificar uma expressão no campo Parâmetro das propriedades do sensor, que pode incluir funções e operações matemáticas.
As funções só podem ser aplicadas a valores de texto, enquanto as operações matemáticas se aplicam a valores numéricos.
Os valores convertidos são usados da seguinte forma:
- quando notificações de vinculação de motorista, reboque ou passageiro são disparadas;
- nas dicas de contexto da unidade e em informações estendidas;
- em mensagens de dados;
- em relatórios, por exemplo, na tabela de Traçado de sensores na coluna Valor formatado.
Funções
As funções aplicam-se apenas aos valores de texto dos parâmetros. O que cada uma delas faz está descrito na tabela abaixo, onde param é o nome do parâmetro no qual o dispositivo envia o valor do texto.
Função | Descrição | Exemplo do valor original | Exemplo do valor após a função |
---|---|---|---|
ltrim(param) ou ltrim(param,'0') | Corta todos os zeros à esquerda. Por padrão, '0' é cortado, mas também pode ser aplicado a outros caracteres. O caractere a ser removido deve ser especificado entre aspas simples. | 0000A | A |
rtrim(param) ou rtrim(param,'0') | Corta todos os zeros à direita. Por padrão, '0' é cortado, mas também pode ser aplicado a outros caracteres. O caractere a ser removido deve ser especificado entre aspas simples. | A0000 | A |
lower(param) | Converte caracteres em letras minúsculas. | A | a |
upper(param) | Converte caracteres em letras maiúsculas. | a | A |
reverse(param) | Inverte a ordem dos caracteres. | A1234 | 4321A |
reverseb(param) | Inverte a ordem dos caracteres em dois. Se uma string tiver um número ímpar de caracteres, primeiro ela será anexada com um zero à esquerda e, em seguida, invertida. | C1B2A | 2A1B0C |
lfill(param,5,'0') | Adiciona o caractere especificado (parâmetro de terceira função) à esquerda até que a string contenha o número necessário de caracteres (parâmetro de segunda função). O caractere adicionado deve ser especificado entre aspas simples. | A | 0000A |
rfill(param,5,'0') | Adiciona o caractere especificado (terceiro parâmetro de função) à direita até que a string contenha o número necessário de caracteres (segundo parâmetro de função). O caractere adicionado deve ser especificado entre aspas simples. | A | A0000 |
sequence(param,2,3,5,4,1,0,1414) | Altera a sequência dos caracteres. Os caracteres são organizados na ordem especificada após o nome do parâmetro. Se um índice inexistente for especificado, "0" será colocado no lugar desse caractere. Os índices são contados da esquerda para a direita, começando em 0. | 0C1B2A | 1BA2C00 |
hex(param) | Converte do sistema decimal para o sistema hexadecimal. | 10 | a |
dec(param) | Converte do sistema hexadecimal para o sistema decimal. | 00A | 10 |
hextoascii(param) | Converte do sistema hexadecimal para ASCII. | 3A29 | :) |
concat(param,substr(param,1,4),'00') | Une as strings. Mais de duas strings podem ser unidas. No exemplo, ela é usado junto com a função substr (veja abaixo), ou seja, uma parte (substring) extraída da string de parâmetro é unida à mesma string do parâmetro. Dois caracteres '00' também são adicionados. Os caracteres devem ser especificados entre aspas simples. | 0C1B2AD35E | 0C1B2AD35EC1B200 |
substr(param,1,4) | Extrai caracteres especificados do valor do parâmetro. Os caracteres extraídos formam uma substring. Existem 3 parâmetros obrigatórios para esta função:
Os índices são contados da esquerda para a direita, começando em 0. A substring extraída pode ser combinada com outra string usando a função concat como no exemplo acima. | 0C1B2AD35E | C1B2 |
len(param) | Retorna um número que especifica o número de caracteres na string. Sendo um número, é possível então realizar operações matemáticas com o resultado. Por exemplo, a expressão substr(param,len(param)-4,4) usa a expressão len(param)-4 como índice. Isso significa que a substring será contada a partir do quarto caractere a partir do final. | 0C1B2AD35E | 10 |
Operações matemáticas
Operações matemáticas de adição (+) e subtração (-) só são possíveis com valores numéricos. Com valores de texto elas só são possíveis após a conversão em valores numéricos (veja o exemplo para a função len acima).
Caso um dos elementos numa expressão com uma operação matemática não for numérico, o resultado será 0.