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
Se um sensor tiver um parâmetro de expressão que contenha um parâmetro de texto, o valor do texto será convertido em um número inteiro de 53 bits. Por padrão, esse valor é considerado decimal. Se o valor pertencer a outro sistema de numeração, insira dois pontos após o parâmetro de texto e especifique esse sistema de numeração. Assim, o valor será convertido para o sistema decimal automaticamente. Por exemplo, se o parâmetro text_param enviar o valor 100, então
text_param = 100 text_param:10 = 100 text_param:16 = 256 text_param:2 = 4
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 para o sistema hexadecimal. | 10 | a |
dec(param) | Converte para o sistema decimal. | 00A | 10 |
hextoascii(param) | Converte de 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.